Git的分支管理(三)

Feature分支

当新建一个分支feature1后,开发完功能,还没来得及合并,这个时候要删掉feature1分支。

git branch -d feature会发现提示,没有合并无法删除,这时候就要强制删除,用以下命令:

$ git branch -D feature-vulcan

多人协作

远程仓库里的信息怎么查看:

$ git remote

默认名为origin,也可以用git remote -v显示更详细的信息:

$ git remote -v
origin  [email protected]:michaelliao/learngit.git (fetch)
origin  [email protected]:michaelliao/learngit.git (push)

上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

抓取分支

多人协作时,大家都会往masterdev分支上推送各自的修改。

现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆:

$ git clone [email protected]:michaelliao/learngit.git

当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看:

$ git branch
* master

现在,你的小伙伴要在dev分支上开发,就必须创建远程origindev分支到本地,于是他用这个命令创建本地dev分支:

$ git checkout -b dev origin/dev

现在,他就可以在dev上继续修改,然后,时不时地把dev分支push到远程:

$ git commit -m "add /usr/bin/env"
[dev 291bea8] add /usr/bin/env
 1 file changed, 1 insertion(+)
$ git push origin dev
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 349 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:michaelliao/learngit.git
   fc38031..291bea8  dev -> dev

而当你也做好了一个功能,打算往远程推送时,推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

$ git pull

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接:

$ git branch --set-upstream dev origin/dev
Branch dev set up to track remote branch dev from origin.

再pull:

$ git pull
Auto-merging hello.py
CONFLICT (content): Merge conflict in hello.py
Automatic merge failed; fix conflicts and then commit the result.

这回git pull成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push:

$ git commit -m "merge & fix hello.py"
[dev adca45d] merge & fix hello.py
$ git push origin dev
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 747 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
To [email protected]:michaelliao/learngit.git
   291bea8..adca45d  dev -> dev

因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name

 
时间: 2024-12-24 04:21:48

Git的分支管理(三)的相关文章

Git操作-分支管理(三)

bug分支 情境:当你在开发的过程中突然要修复一个被提出的bug,但是现在你当前分支上的工作还没有提交,但是工作还没完成,没法提交,而又急于修改这个bug 方法:Git提供了一个stash功能,命令:git stash,可以把当前工作现场(当前分支的工作)"储藏"起来,等以后恢复现场后继续工作.. 这样工作区就是干净的了 接着,首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支,在这个临时分支上修复bug,修复完成提交后切换到master分

Git 学习笔记<分支管理> (三)

分支是什么? 分支就像树分出的树枝,不同的是,它们之间可以互相合并. 将版本的推进想象成一个链表的伸长:  version 1.0 ==> version 2.0 ==>version3.0  . master是主要的分支基本上用于发布产品.你可以从master分出一个dev,在上面创建新功能,或者修bug然后调试.最后再合并到master里面.就像下面这样. master分支:  version 1.0=========>version 2.0===... \            

git 实现分支管理项目,是羡慕管理更高效;

利用git 的分支管理的能力实现更有章法的协同开发的模式: 其实在我们进行 git init 时就创建了 master 的主分支: 那现在我如何建立第二个分支呢? :git branch local 初始时分支的内容是完全和主分支是一样的,在分支中所有的操作都不影响主分支里的情况,你可以在其中做任何修改: 如何查看分支呢? :git branch local * master 星号是表示当前所在的分支:其实两个分支一模一样,只是大家都是把master当作主分支的: 如何切换分支呢? :git c

git远程分支管理

git远程分支管理 使用分支的原则 master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上 创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master 开发人员应该在dev的基础上再分支成个人分支,个人分支里面开发代码,然后合并到dev分支 远程分支管理 在远程GitHub上创建dev分支 克隆远程GitHub仓库(只会克隆 apeng仓库中的master分支) [[email protected] ~]# mkdir /remot

[git]git的分支管理

最近在折腾git,有感于git这个强大而好用的版本管理工具. 说说git分支管理的心得体会. 首先,要有个master主分支: Git主分支的名字,默认叫做Master.它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发. Git 的 “master” 分支并不是一个特殊分支. 它就跟其它分支完全没有区别. 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它. 日常开发中,要用到另外一个分支,就是Dev分支,主要用来开发,

Git的分支管理(二)

分支管理策略 git 在合并(merge)的时候有两种方式,一种是Fast forward模式,这种方式是快速模式,删除分支后,会丢掉分支信息. 另外一种是--no-ff方式(禁止Fast forward模式),Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息. Fast forward模式: $ git merge dev --no-ff方式: $ git merge --no-ff -m "merge with no-ff" dev 因为本次合

Git操作-分支管理(二)

解决冲突 场景:创建一个新的分支feature1,然后在README.txt文件里添加4 create a branch named feature1,然后在feature1分支上提交.提交后切换到master分支,再在master分支上将最后一行修改为create a new branch named feature1,再提交,现在,master分支和feature1分支各自都分别有新的提交: 此时结构图是这样的: 在这种情况下,我们尝试把两个分支合并,git merge feature1:

[Git]3_分支管理

目录 创建与合并分支 解决冲突 分支管理策略 不使用Fast forward模式 分支策略 Bug分支 Feature分支 学习资源来自廖雪峰的Git教程 本文简短记忆学习内容,主要是使用命令,方便以后查看,完整学习请查看廖雪峰Git教程 操作过程在Ubuntu18.04完成,其他平台没有尝试 创建与合并分支 创建branch $ git branch <branch name> 切换branch $ git checkout dev 上面两步也可以通过下面一步来完成 $ git checko

Git 之三 分支管理

写在前面   Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2.唯一不足就是,很多讲解并没有实机演示.但是,毫无疑问,官网资料是最全面的!如果有任何疑问,可以去官网看看! 分支   使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. Git 的一大特点就是对于分支的支持!Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快. 远程分支   在了

Git的分支管理(一)

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险. 现在有了分支,就不用怕了.你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作. 创建与合并分支 在git里,有一条master主分支.一开