使用git如何进行远程仓库协作

目录

文章目录

  • 目录
  • 如何使用git进行远程仓库协作?
    • git remote
      • git remote -v
      • git remote add \

如何使用git进行远程仓库协作?

git remote

查看所有我配置(引用)的远程仓库
如果我使用了git clone命令从远程服务器上clone了一个仓库过来,那么我至少会有一个名为orgin的远程服务器。This is the default name Git gives to the server you cloned from.

git remote -v

显示所有你远程仓库的详细信息。

git remote add

将某个远程仓库与当前本地仓库相关联
所指示的远程仓库添加到当前的本次仓库中来,并给这个远程仓库取个名字叫

git remote show

显示某个远程仓库的详细信息
如果你想查看有关某一个远程仓库的更多的信息(例如你想查看远程库有几个分支,每个分支你有没有track),你就可以使用上面这个命令。
例如,我想查看origin这个远程库有几个分支,我就可以输入命令:

git remote show origin

使用git如何进行远程仓库协作_第1张图片

git remote rename

对某个远程仓库的引用进行重命名
如果你想重命名一个远程仓库的shortname。举个例子,如果你想将pb这个shortname命名为paul,你就可以使用这个命令

git remote rname pb paul

git remote remove || git remote rm

移除对某个远程仓库的引用
如果你想移除对一个远程仓库的引用,你直接使用git remote remote 即可。
例如,你想移除对paul这个远程仓库的引用

git remote remove/rm paul

git fetch

将某个远程仓库中最新的东西下载下来
这个远程仓库中,你本地仓库没有的东西全部放到本地来。这样一来,在你的本地,你就对这个远程仓库的所有分支进行引用了。
注意:git fetch 仅仅是将远程仓库中的东西下载到你的本地仓库,这个命令并不会将你刚刚下载的东西跟你目前的任何工作合并。你可以在你要用的时候手动进行合并

git pull

如果你当前所在的分支是专门配置来追踪某一个远程分支的,你可以直接使用git pull命令从远程分支拉取,然后它会尝试自动合并到你当前所在的分支。其中,git clone命令会自动将你本地的master分支设置为追踪你所clone的远程仓库的master分支。
那么问题来了,如何配置一个分支专门追踪一个远程分支呢?

Checkingout a local branch from a remote-tracking branch automatically creates what is called a “tracking branch”.

git checkout -b /

这就是在本地新创建一个分支branch1来track远程的分支/,并checkout过去

git checkout --track /

如果你觉得track某个远程分支的本地分支名字应该和远程分支的名字一样,你就可以直接使用上面这个命令了。当然要想达到这个目的,还有更绝的。如果你本地没有一个叫做branch2的分支,你直接

git checkout branch2

就可以了。
但是!记得前提是你本地原来没有一个叫做branch2的分支,如果有的话,就会切到原来的那个本地已经有的本地分支了。

git branch -u /

如果你不想折腾,就想使用本地已经创建好的分支来track远程的分支。好办!首先切换到该本地分支下,然后运行上述命令。举个例子,你本地有个分支叫做branch1的,你想让这个分支去track origin/branch2. 分两步走:

git checkout branch1
git branch -u origin/branch2

搞定!
如果你不想让branch1 track origin/branch2了,想让他track origin/branch3,也可以通过这个两步走来实现。

git checkout branch1
git branch -u origin/branch3

搞定!

git brach -vv

哎呀,说的我都乱了,到底哪些分支track哪些分支呀。我想查看一下,使用命令
git brach -vv就一目了然了。
使用git如何进行远程仓库协作_第2张图片
解释一下上面的结果,我花了好长时间才理解的。

  • iss53 正在track origin/iss53, ahead 2表示你的iss53分支自从上一次和origin/iss53保持一致之后,你已经在iss53上进行了两次本地的git commit
  • master正在track origin/master,表示本地的master分支track的是origin/master.后面啥都没有写,既没有ahead,也没有behind.表示你的master分支自动上一次和origin/master保持同步之后,你再也没有在本地提交过。
  • serverfix正在track origin/server-fix-good。ahead 3表示你的serverfix分支自从上一次和origin/server-fix-good保持同步之后,你已经在本地git commit 3 times了。behind 2表示你的serverfix分支自从上一次和origin/serverfix-fx-good保持同步之后,你又从远程fetch了一次,在上一次同步到你这一次fetch这一段时间,你的战友在origin的server-fix-good上提交了一次。
  • testing没有track任何分支

git fetch -all

如果你要和远程仓库保持同步的话,就用git fetch -all这个命令,这个命令很安全。不会覆盖本地的东西,只是将远程的东西拉到你的面前来了,你想怎么使用,可以再说。

git push

当你在本地写完了一些代码,然后想共享给你的战友们的时候,你就需要使用到git push命令。举个例子,假如你现在你想将你本地的master分支push到你的orgin服务器时。那么就输入:

git push origin master

当然,使用这个命令的前提你对orgin服务器有些的权限,并且你在push的时候,没有其他人在push.

再举个例子
如果你在本地有个叫做serverfix的分支,你想和别人共享这个分支。你就可以将你本地的代码push到origin上。

git push origin serverfix

如果说origin中已经有serverfix这个分支的话,直接就更新了远程的serverfix分支。
如果orgin中还没有serverfix这个分支,在origin上会自动地创建一个叫做serverfix的分支。

git push :

如果你想将你的本地分支branch1 push到远程分支branch2的话,你就需要使用这个命令。举个例子,假如你想将你本地的serverfix分支push到origin的awersomebranch分支,你就可以使用命令;

git push origin serverfix:awersomebranch

当下一次你的战友从同样的远程服务器上fetch时,They will get a reference to where the server’ version of serverfix is under the remote branch origin/serverfix.

git merge /

接着上面讲,当你运行git fetch origin之后,你的本地的分支并没有变,并没有新创建一个叫做serverfix的分支。你拥有的仅仅是一个只读的origin/serverfix对远程serverfix分支的引用而已。也就是说你只是看看而已。
但是如果你想将origin/serverfix中的工作合并到你当前工作的分支的话,就可以使用

git merge origin/serverfix

如果你想对这个只读的分支进行编辑的话,只能基于该分支新建一个分支。打个比方,某一个文档是只读的,但是你还是想编辑该文档。我们只能新创建一个文档,然后将那个只读的文档的内容原封不动的复制过来,然后你就可以编辑啦!使用下面这个命令

git checkout -b serverfix origin/serverfix

这里,只读的文档就相当于最后的那个origin/serverfix,新建的文档就相当于前面的那个serverfix.

git push --delete

删除远程分支

假定在远程仓库中中有一个分支叫做remotebranch,然后你和你的写作者在这个分支上的协作已经完工了,该分支上的所有工作都已经合并到了远程仓库中的master分支上了。然后你觉得远程仓库中的这个分支有点费事,想把远程的这个分支给删除了。就要用到上面这个命令。举个例子,你想删除origin中的serverfix这个分支

git push origin --delete serverfix

搞定!

你可能感兴趣的:(Git)