git分支

1.Git 分支 - 分支简介

1.分支创建
Git 的分支本质上仅仅是指向提交对象的可变指针。Git 的默认分支名字是 master。Git 是怎么创建新分支的呢?它只是为你创建了一个可以移动的新的指针。 比如,创建一个 testing 分支, 你需要使用 git branch 命令:

git branch 分支名    #创建新分支
git log --oneline --decorate  #该命令可查看不同分支的指针指向的提交文件代码

2.Git 又是怎么知道当前在哪一个分支上呢?
它有一个名为 HEAD 的特殊指针,指向当前所在的本地分支(注:将HEAD 想象为当前分支的别名)。

git branch   # git branch命令列示本地所有分支,前有*号的分支表明目前所处的分支

3.分支切换及分叉
要切换到一个已存在的分支,你需要使用 git checkout 命令:该命令将HEAD指针切换到指定的分支上,在该分支上作出的修改并提交。一旦HEAD指针切回至原来的分支,工作目录下的文件将被恢复(需要保证切回前的分支处于clean状态才能顺利切回):

git checkout 分支名    #切换到已存在的分支上
git checkout master  #从其他分支切换回master分支,master分支并无特殊性,只是默认名称为master 

不同分支上修改并提交会导致分叉,采用如下命令查看分叉情况:

git log --oneline --decorate --graph --all 

4.创建新分支和切换到该分支可用一条命令完成

git checkout -b 新分支名  #该条命令相当于创建和切换两条命令

2.Git 分支 - 分支的新建与合并

1.合并分支

git checkout master    #切换回需要合并至的主分支上
git merge 分支名       #需要合并至主线的分支名

2.删除失效分支

git branch -d 分支名   #使用参数-d来删除分支
git branch —D 分支名   #使用参数-D来强制删除分支

3.遇到冲突时的分支合并
如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们,在合并它们的时候就会产生合并冲突,此时 Git 做了合并,但是没有自动地创建一个新的合并提交。 Git 会暂停下来,等待你去解决合并产生的冲突。 你可以在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件。 你可以打开冲突文件手动解决冲突,在解决了所有文件里的冲突之后,对冲突文件使用
git add 冲突文件 命令将修改提交到暂存区,以此来将其标记为冲突已解决。如果有效的解决了冲突进一步可git commit -m 'commit_information'来提交暂存的文件;失效的分支进一步可以采用命令git branch -d/D 分支名来删除;

3.Git 分支 - 分支管理

1.查看所有分支

git branch   #git branch不加任何选项会列示所有的分支,前有*号的分支为HEAD指向的分支
git branch -v   #查看所有分支最后一次提交的信息
git branch --merged   #查看哪些分支已经合并到当前所在分支
git branch --no-merged   #查看哪些分支未合并到当前所在的分支

4.Git 分支 - 远程分支

参见说明:link
1.获得远程分支信息
列示远程分支信息的一些命令:

git ls-remote [远程仓库名]      
git remote show [远程仓库名]   #远程仓库名一般都是Git自动分配的名称origin

2.从远程仓库获取信息、同步远程本地数据
从名为origin的远程仓库(git在本地自动给远程仓库默认命名为origin,实际上服务器中该仓库名不一定是origin)中抓取新的信息,git fetch不会自动将远程仓库中的跟新合并至本地仓库文件中,需要再行手动合并:(fetch后如何合并?如何fetch远程库中不同的分支?)

git clone https://github.com/libgit2/libgit2 mylibgit  #将远程仓库libgit2克隆至本地mylibgit文件夹中
git clone -o 新仓库名   #将git默认的远程仓库名origin重新命名
git fetch origin  #origin是clone远程仓库时git分配给该远程仓库的默认名称,origin可修改
git merge   #fetch修改后再merge至本地仓库
git commit -m '提交信息'   #提交合并了修改后的文件

3.一个本地仓库可以关联多个远程仓库
git clone时会自动关联到被克隆的远程仓库,如果想再关联其他远程仓库使用git remote add命令,示例如下:

# 将远程仓库关联本地仓库并命名为pb
git remote add pb https://github.com/paulboone/ticgit 

4.推送
当你想要公开分享一个分支时,需要将其推送到有写入权限的远程仓库上。 本地的分支并不会自动与远程仓库同步——你必须显式地推送想要分享的分支,使用命令:
git push (remote) (branch): remote为远程仓库名,branch为远程仓库的分支;示例如下:

git push origin branch1  #推送至远程仓库origin的branch1分支上

5.追踪远程仓库上的不同分支

git checkout -b [本地branch名] [remotename]/[branch]
git checkout --track origin/branch1   #追踪origin远程库中的branch1分支

6.删除本地的远程仓库和本地存在的远程分支

git push origin --delete sf  #删除本地存在的origin远程仓库中sf分支,该命令不会删除服务器中相分支
git remote rm oringin     #删除origin远程仓库,origin是远程仓库在本地的名称,该名称可修改

7.变基
参照:link

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

E. Zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值