git教程:branch

一般流程:
建立分支,从当前分支建立一个分支,代码没有变化,还在当前分支:
git branch my_branch
切换到刚建立的分支:
git checkout my_branch
上面两步可以合二为一:
git checkout -b my_branch
把当前分支推送到远程仓库,远程仓库会建立一个my_branch_r分支,一般用同名分支,这里为了好区别,加了个r:
git push origin my_branch_r
虽然推送了,但本地分支跟远程分支没有关系,需要建立联系:
git branch --set-upstream-to=origin/my_branch_r
上面两步可以合二为一:
git push --set-upstream origin my_branch_r

查看本地分支关联的远程分支
git branch -vv 

如果要取消本地分支跟远程分支关联

git branch --unset-upstream 

如果远程分支已经存在,需要拉到本地,建立本地分支:
git checkout -b my_branch origin/my_branch_r

分支用完后可以删除,本地分支删除:
git branch -D my_branch
远程分支删除:
git push origin --delete my_branch_r
远程分支删除了,不影响本地分支,本地分支依然可以使用,也可以再检出或上传。

有时候删除了远程分支,本地不知道,pull时会提示

Your configuration specifies to merge with the ref 'refs/heads/branch_xxx'
from the remote, but no such ref was fetched.

只需要“git fetch -p ”,就可以看到远程分支已经删除了。

显示本地分支,有*号的是当前分支:
git branch
显示远程分支:
git branch -r
显示全部分支(本地+远程):
git branch -a
创建分支:
git branch xxx
切换分支:
git checkout xxx
创建+切换分支:
git checkout -b xxx
删除分支:
git branch -d xxx
合并分支:
git merge xxx //合并xxx分支到当前分支
git merge xxx yyy //合并xxx分支和YYY分支,到当前分支。

合并xxx分支到master分支:
git checkout master //如果当前分支不是master,先切换到master分支。

git merge xxx //合并xxx到当前分支。

也可以在过去的某个点拉一个分支:
git branch 分支名 commitID
例如:
git branch sub1 f1e70f5
创建一个分支sub1,这个分支是从f1e70f5这个提交创建的。
git checkout sub1
检出sub1,工作目录里的文件是f1e70f5这个提交点状态的文件。
git checkout master
检出master,工作目录里文件是master的HEAD状态的文件。

下面是显示所有分支,显示本地分支信息,显示本地分支关联的远程分支:

Thinkpad@B00035 MINGW64 /f/caz/remote/caz (branch_1)
$ git branch -a
* branch_1
  master
  remotes/origin/branch_1
  remotes/origin/master

Thinkpad@B00035 MINGW64 /f/caz/remote/caz (branch_1)
$ git branch -v
* branch_1 94bd34c add temp.txt in branch_1
  master   2e74bba Merge branch 'branch_1'

Thinkpad@B00035 MINGW64 /f/caz/remote/caz (branch_1)
$ git branch -vv
* branch_1 94bd34c [origin/branch_1] add temp.txt in branch_1
  master   2e74bba [origin/master] Merge branch 'branch_1'

当在工作目录里添加了一个文件,但没有用git add时,切换分支不影响该文件,切换后该文件依然在。

但是如果该文件所在目录某些文件是在git里的,但另一个分支没有这些文件,则切换分支后这些文件就没有了。

git只跟踪文件不跟踪目录,如果一个目录是空的,是无法add和commit的,如果想提及一个空目录,可以在空目录里touch一个.gitkeep文件,这个文件是空的,就可以提交这个目录了。

如果一个目录在另一个分支没有,你在这个目录里切换到那个分支,这个目录就会被删除,但你正在这个目录里工作,就会删除失败,所以切换分支要到根目录操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值