2012-11-19 61 views
2

我使用Git了一段时间,但我仍然无法理解的一些功能,尽管花在博客和教程小时... :)使用GIT叉/分支

我的工作与其他人为其项目我的老板在bitBucket上创建了一个回购协议。

我在本地克隆了它,并且已经对master分支进行了一些提交,并且被其他人修改了一些内容。我现在想要做长期的修改。我将不得不将它们中的一些推到主分支,并保留其他的只为我自己。我认为我可以将主分支派生成我自己的版本(?)。

我有点困惑我应该遵循什么程序。我应该创建自己的分支吗?或叉?

如果我是正确的,分叉将创建另一个版本位于myy BitBucket帐户,我应该在我的计算机上复制(在与主分支项目不同的目录中?)以进行修改。另一方面,在我看来,GIT的一个重要特性就是在一个单独的目录中使用所有不同的现有分支在本地工作,从一个切换到另一个,并在您的远程回购时推动您的修改,重新完成(并可能向主分支)。

决定之前,我对你们几个问题:

问题1:如果我在分叉的版本修改文件,我将能够他们推到主分支?怎么样?

问题2:如何将其他用户的新提交(在主分支上)合并到我的分叉版本中?

问题4:我的分叉版本的远程回购与主回购有什么关系?

问题5:我的分支版本内容是否会被团队的其他成员看到?

如果有人能为我澄清这一点,我会很感激!

谢谢。

回答

3

无叉:叉克隆上到位桶是回购让自己的(上到位桶):它是在服务器侧的克隆。
见,插图:

只有当您无法直接推送到上游回购时,您才需要一个分支:您推送到您的分支,并向上游回购做出拉取请求。
这不是这种情况。

只需将分支推送到您需要的唯一一个BitBucket仓库(您有权写入该仓库)。

只要你有你需要的master,并在你的分支公布这两种修改,

 
x--x--x     (master => origin/master) 
     \ 
     y--y--c--y--c--y (yourBranch => origin/yourBranch) 
  • 订货说分支(重订互动)为共同提交给第一次出现,
 
x--x--x     (master => origin/master) 
     \ 
     c--c--y--y--y--y (yourBranch => origin/yourBranch) 
  • git pull master(为了确保master开启您的本地克隆反映了最新的提交其他的到位桶出版)
 
x--x--x--x--x   (master => origin/master) 
     \ 
     c--c--y--y--y--y (yourBranch => origin/yourBranch) 
  • 变基上的master顶部和测试你的分支,如果一切仍然编译并通过测试
 
x--x--x--x--x     (master => origin/master) 
      \ 
       c--c1-y--y--y--y (yourBranch => origin/yourBranch) 
  • 合并您的分支的新常见提交到master
    git checkout master; git merge c1
 
x--x--x--x--x--c--c1     (master => origin/master) 
        \ 
        y--y--y--y (yourBranch => origin/yourBranch) 
  • git push master(因为你已经推前拉master:当地master涨最新相对到位桶 'origin' master。你推是到位桶侧的琐碎合并:你只引进提交)

  • git checkout yourBranch && git push -f origin yourBranch
    既然你已经重订yourBranch,您已改写历史,你需要被迫推到位桶边。
    但是因为它是你的分支,所以没关系(没有其他人会从它那里拉出来,为了考虑到你的新历史,需要重新设置它)。


需要注意的是另一种方式避免了rebase --interactive步骤重新排序您共同提交将cherry-pick直接他们yourBranchmaster
但我不喜欢挑肥拣瘦,因为它: