查看所有我配置(引用)的远程仓库
如果我使用了git clone命令从远程服务器上clone了一个仓库过来,那么我至少会有一个名为orgin的远程服务器。This is the default name Git gives to the server you cloned from.
显示所有你远程仓库的详细信息。
将某个远程仓库与当前本地仓库相关联
将
显示某个远程仓库的详细信息
如果你想查看有关某一个远程仓库的更多的信息(例如你想查看远程库有几个分支,每个分支你有没有track),你就可以使用上面这个命令。
例如,我想查看origin这个远程库有几个分支,我就可以输入命令:
git remote show origin
对某个远程仓库的引用进行重命名
如果你想重命名一个远程仓库的shortname。举个例子,如果你想将pb这个shortname命名为paul,你就可以使用这个命令
git remote rname pb paul
移除对某个远程仓库的引用
如果你想移除对一个远程仓库的引用,你直接使用git remote remote
例如,你想移除对paul这个远程仓库的引用
git remote remove/rm paul
将某个远程仓库中最新的东西下载下来
将
注意:git fetch
如果你当前所在的分支是专门配置来追踪某一个远程分支的,你可以直接使用git pull命令从远程分支拉取,然后它会尝试自动合并到你当前所在的分支。其中,git clone命令会自动将你本地的master分支设置为追踪你所clone的远程仓库的master分支。
那么问题来了,如何配置一个分支专门追踪一个远程分支呢?
Checkingout a local branch from a remote-tracking branch automatically creates what is called a “tracking branch”.
这就是在本地新创建一个分支branch1来track远程的分支
如果你觉得track某个远程分支的本地分支名字应该和远程分支的名字一样,你就可以直接使用上面这个命令了。当然要想达到这个目的,还有更绝的。如果你本地没有一个叫做branch2的分支,你直接
git checkout branch2
就可以了。
但是!记得前提是你本地原来没有一个叫做branch2的分支,如果有的话,就会切到原来的那个本地已经有的本地分支了。
如果你不想折腾,就想使用本地已经创建好的分支来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
搞定!
哎呀,说的我都乱了,到底哪些分支track哪些分支呀。我想查看一下,使用命令
git brach -vv就一目了然了。
解释一下上面的结果,我花了好长时间才理解的。
如果你要和远程仓库保持同步的话,就用git fetch -all这个命令,这个命令很安全。不会覆盖本地的东西,只是将远程的东西拉到你的面前来了,你想怎么使用,可以再说。
当你在本地写完了一些代码,然后想共享给你的战友们的时候,你就需要使用到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的分支。
如果你想将你的本地分支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 fetch origin之后,你的本地的分支并没有变,并没有新创建一个叫做serverfix的分支。你拥有的仅仅是一个只读的origin/serverfix对远程serverfix分支的引用而已。也就是说你只是看看而已。
但是如果你想将origin/serverfix中的工作合并到你当前工作的分支的话,就可以使用
git merge origin/serverfix
如果你想对这个只读的分支进行编辑的话,只能基于该分支新建一个分支。打个比方,某一个文档是只读的,但是你还是想编辑该文档。我们只能新创建一个文档,然后将那个只读的文档的内容原封不动的复制过来,然后你就可以编辑啦!使用下面这个命令
git checkout -b serverfix origin/serverfix
这里,只读的文档就相当于最后的那个origin/serverfix,新建的文档就相当于前面的那个serverfix.
删除远程分支
假定在远程仓库中中有一个分支叫做remotebranch,然后你和你的写作者在这个分支上的协作已经完工了,该分支上的所有工作都已经合并到了远程仓库中的master分支上了。然后你觉得远程仓库中的这个分支有点费事,想把远程的这个分支给删除了。就要用到上面这个命令。举个例子,你想删除origin中的serverfix这个分支
git push origin --delete serverfix
搞定!