您的位置:首页 > 其它

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
到最新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: