Skip to content

Latest commit

 

History

History
102 lines (52 loc) · 4.94 KB

Git_5_远程分支、本地分支、refspec.md

File metadata and controls

102 lines (52 loc) · 4.94 KB

远程分支、本地分支、refspec

一、本地分支和远程分支

1、别名的使用

先说一下别名的使用:

git config --global alias.别名 要设置的命令 (--globab代表配置整个用户访问,如果是--local则是仓库的范围)

4_19.png

2、本地分支和远程分支的对应关系

下面开始演示本地分支和远程分支的一些操作:

我们知道,分支名字实际上是一个提交的id,当我们使用git checkout -b newbranch的时候,这个newbranch指向的是当前创建的提交点。(当前分支和newbranch指向同一个commit点)

我们还是使用两个人协作的场景,张三在gitlearn仓库中,李四在gitlearn2仓库中:

下面我先在gitlearn2中新建两个分支。

此时我们使用git branch -av查看的是,发现本地有三个分支,而执行远程的只有一个origin/master分支。

此时我们想直接在develop分支上push到远程,就会报错:


为什么报错呢?因为我们本地的develop分支在远程并没有一个对应的分支。

于是我们执行git给我们提示的那个命令: git push --set-upstream origin develop。这个命令的意思就是会将当前的develop和远程新建的一个develop分支进行对应,我们下次push的时候,本地的develop分支就会直接push到远程的develop分支上。


然后我们在张三这边视图将develop拉去过来,(git pull会将远程所有的分支的信息都拉取过来),并且我们在本地分支上建立一个develop分支和远程的origin/develop对应起来:


上面使用了git push --set-upstream origin develop这个命令来进行本地分支和远程分支的调用,有没有其他命令也可以做到呢?有: git push -u origin 分支名

下面在李四这边再将test分支也和远程的test分支对应起来。


下面在张三这边再演示git checkout -b 本地分支 origin/远程分支的替代品,我们可以使用git checkout --track origin/test


3、删除远程分支

先说一下git push完整写法:

git push其实是一个简写,完整的写法是git push origin src:destorigin是远程的别名,src是本地分支的名字,dest是远程分支的别名。

origin就是一个别名,它是在你clone一个托管在Github上代码库时,git为你默认创建的指向这个远程代码库的标签, origin指向的是repository,master只是这个repository中默认创建的第一个branch。

git的老版本中只有一个删除命令,比如我们要删除develop分支: git push origin :develop

比如我们在李四这边的gitlearn2中删除develop远程分支(不是本地的,本地的使用 git branch -d )

下面分别看删除本地分支和远程分支的操作:


查看远程分支,develop分支已经被删除了。


远程分支删除了之后能不能恢复呢?当然可以,加入git版本库的一切东西都可以恢复!!

我们可以使用之前将某个本地分支对应到远程分支的--set-upstream来创建对应的远程分支:


另外,可以使用git最新提供的删除远程分支的命令: git push origin --delete 分支名来删除,这样更加直观

且,我们这里可以用第二种恢复(建立)远程分支的方法,这种方法可以指定本地分支和远程分支不同的名字。比如本地分支叫develop,远程分支叫develop2,命令就是git push --set-upstream origin develop:develop2:

演示:

5_10.png

但是这里出现了一个问题,上图我也说了,这种本地分支和远程分支不同的情况,会导致不能直接git push,所以git还是希望我们尽量将本地分支和远程分支保持同样的名字。

所以解决问题的方式有两种,上面也提示了,使用git push origin HEAD:develop2 、或者git push origin develop

HEAD永远指向分支,而分支指向的是具体的提交点

下面演示这两种方法: (最后演示了一个git push的完整操作语法: git push origin src:dest)

5_11.png

因为我们使用git push origin develop,此时又会在远程创建一个develop分支,所以我们看到远程有了三个分支:

5_12.png

4、重命名远程分支

git没有直接提供重命名的方式,我们需要先删除需要重命名的远程分支,然后再重新将之前的连接起来:

5_13.png