Git学习笔记(三) 远程仓库
2017-08-23 21:34
399 查看
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
在实际使用过程中,我们往往是找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。在本篇中,我们使用GitHub
提供的Git托管服务。
若读者觉得英文使用不方便,国内也有码云
提供托管服务。
1. 创建SSH Key
在第一篇文章中已经进行过此工作Git学习笔记(一) 下载与安装
2..将id_rsa.pub
添加到Git服务器中
以GitHub为例3.克隆远程仓库
使用git clone命令
$git clone
示例:
qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ git clone git@github.com:qiyueMaster/ss-panel.git Cloning into 'ss-panel'... remote: Counting objects: 86, done. remote: Compressing objects: 100% (45/45), done. remote: Total 86 (delta 19), reused 73 (delta 12), pack-reused 0 Receiving objects: 100% (86/86), 12.71 KiB | 25.00 KiB/s, done. Resolving deltas: 100% (19/19), done. qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ ls ss* ss-panel: pom.xml README.md src/
通过上述信息可以看到在当前文件夹下建立了一个与
项目名同名的文件夹,并将远程仓库中的文件放在了该文件夹中。通过参数也可以指定文件夹名
示例:
qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ git clone git@github.com:qiyueMaster/ss-panel.git ss-panel-pre Cloning into 'ss-panel-pre'... remote: Counting objects: 86, done. remote: Compressing objects: 100% (45/45), done. Receiving obremote: Total 86 (delta 19), reused 73 (delta 12), pack-reused 0 Receiving objects: 100% (86/86), 12.71 KiB | 1.59 MiB/s, done. Resolving deltas: 100% (19/19), done. qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ ls ss* ss-panel: pom.xml README.md src/ ss-panel-pre: pom.xml README.md src/
如果项目中存在多个分支,而我们只想克隆其中某一个分支的话,添加参数
git clone -b
示例:
qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ git clone -b dev git@github.com:qiyueMaster/ss-panel.git ss-panel-dev Cloning into 'ss-panel-dev'... remote: Counting objects: 86, done. remote: Compressing objects: 100% (45/45), done. Receiving objects: 2remote: Total 86 (delta 19), reused 73 (delta 12), pack-reused 0 Receiving objects: 100% (86/86), 12.71 KiB | 1.06 MiB/s, done. Resolving deltas: 100% (19/19), done. qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ ls ss* ss-panel: pom.xml README.md src/ ss-panel-dev: pom.xml README.md src/ ss-panel-pre: pom.xml README.md src/ qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ cd ss-panel-dev
4. 将本地仓库与远程仓库相关联
4.1.建立本地仓库
选择一个文件夹并使用git init初始化为
Git仓库
示例:
qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ mkdir localRepository qiyue@Surface-qiyue MINGW64 /c/IdeaProjects $ cd localRepository/ qiyue@Surface-qiyue MINGW64 /c/IdeaProjects/localRepository $ git init Initialized empty Git repository in C:/IdeaProjects/localRepository/.git/
4.2.使用git remote
命令与远程仓库建立连接
示例:qiyue@Surface-qiyue MINGW64 /c/IdeaProjects/localRepository (master) $ git remote add origin git@github.com:qiyueMaster/ss-panel.git
其中
origin是我们为这个仓库取的别名。
可以添加
git remote的参数
-v来查看与之相关的远程仓库
qiyue@Surface-qiyue MINGW64 /c/IdeaProjects/localRepository (master) $ git remote -v origin git@github.com:qiyueMaster/ss-panel.git (fetch) origin git@github.com:qiyueMaster/ss-panel.git (push)
在我们克隆下来的项目里可以看到
Git默认关联了一个远程仓库
qiyue@Surface-qiyue MINGW64 /c/IdeaProjects/ss-panel-dev (dev) $ git remote -v origin git@github.com:qiyueMaster/ss-panel.git (fetch) origin git@github.com:qiyueMaster/ss-panel.git (push)
5.使用git pull
和 git push
命令同步远程仓库与本地仓库
5.1. git pull
git pull 使用语法
git pull命令用于远程仓库的更新拉取到本地。git pull <远程主机名> <远程分支名>:<本地分支名>
如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:
git pull origin next
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
git pull origin
如果当前分支只有一个追踪分支,连远程主机名都可以省略。
git pull
在这里我们提到了
分支的概念,但实际上到现在为止我们并没有创建过分支。原因在于,在日常开发工作中,我们需要提交的分支与远程仓库中的分支总是存在追踪关系的,前面两条命令不经常使用。所以
分支的部分等到后面在写。
5.2.git push
git push 的使用语法与 git pull 类似
git push命8e40
令用于将本地分支的更新,推送到远程主机。
git push <远程主机名> <本地分支名>:<远程分支名>
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
上面命令表示,将当前分支推送到origin主机的对应分支。
git push origin
如果当前分支只有一个追踪分支,那么主机名都可以省略。
git push
6. 使用技巧
在实际多人协作开发过程中,我们需要保持远程仓库相对简洁,除项目源代码与必要的
配置文件外,远程仓库中不应该存放过多的东西,比如
IDE配置、
build中间产物等。
而且在
public仓库中,配置文件中关于
IP、
port、
password等不宜直接将自己的配置暴露出来。
通用做法是在本地维持一个与远程仓库内容相同的仓库,而在该仓库的
拷贝上进行开发,之后使用工具将
拷贝与
干净的仓库中文件进行对比,添加
修改/添加部分的源码和配置覆盖到仓库中,再将其推送到远程仓库。
流程:clone或者pull项目–>拷贝备份->在备份上进行开发->pull将本地仓库与远程仓库更新到一致–>将修改放进本地仓库中–>push到远程仓库中。
注意:每次修改需要提交前,使用
git pull保证本地仓库与远程仓库中的内容一致,不然无法进行push
总结:
1.在
干净的仓库中进行push和pull, 在备份中进行开发;
2.在准备应用修改前将本地仓库
pull到最新。
相关文章推荐
- 【Git学习笔记】git fetch取回远程库的更新到本地仓库中
- Git学习笔记---本地关联远程仓库
- git学习笔记:分支和远程仓库
- git学习笔记(二):分支和远程仓库
- git学习笔记整理-6-远程仓库
- Git学习笔记(2)- 远程仓库
- 【Git 学习笔记】2.5 - 远程仓库的使用
- Git远程仓库学习笔记
- 【Github学习笔记】安装git,创建库,添加远程仓库,添加删除文件
- Git学习笔记四--远程仓库
- git学习笔记--远程仓库
- Git学习笔记(4)——添加远程仓库,克隆远程库,以及库的推送
- 【Git 学习笔记】2.5 - 远程仓库的使用
- 【Git学习笔记】远程仓库
- Git学习笔记(六)---添加远程仓库
- Git学习笔记 chapter05--添加远程仓库并同步
- 【Git学习笔记】将标签push到远程仓库
- 【Git学习笔记】用git pull取回远程仓库某个分支的更新,再与本地的指定分支自动merge【转】
- 【Git学习笔记】删除远程仓库的标签
- 【Git学习笔记】用git pull取回远程仓库某个分支的更新,再与本地的指定分支自动merge