将一个分支和未提交的更改合并到主分支(master)中。

3

我有一个比较棘手的情况。

两个员工使用 Git 工作在一个项目中。
他们都克隆了原始主分支。

  • 员工 1 创建了一个用于开发小功能的分支。
  • 员工 2 进行了重大更改,但没有提交或创建分支。

现在,两个员工的工作需要合并回主分支。
我提前知道 CSS 文件中会有一些冲突,这些可能需要手动解决。

最佳做法是什么?

2个回答

3

员工2需要在合并他人的更改之前提交或储藏自己的更改。他可以按照以下步骤进行合并:

员工1将他的更改合并回master,为避免不必要的合并提交,他可以先将自己的特性分支上的rebasemaster上:

  1. git checkout employee_1_feature_branch; # 如果已在该分支中,则不需要此步骤
  2. git rebase master
  3. git checkout master
  4. git merge employee_1_feature_branch
  5. git push origin master

员工2提交他的更改,并合并员工1的更改:

  1. git add .
  2. git commit -m '来自员工2的更改'
  3. git pull --rebase origin master; # 可能需要手动解决冲突
  4. git push origin master

如果员工2不想在合并之前进行提交(即先合并再提交),他可以执行以下操作:

  1. git add .
  2. git stash
  3. git pull --rebase origin master
  4. git stash pop; # 可能需要手动解决冲突
  5. ...编辑需要编辑的内容...
  6. git add .
  7. git commit -m '来自员工2的更改'
  8. git push origin master

就是这样。


看起来很好,但是Employee 1有必要进行变基吗?我问这个问题是因为他可能已经推送了他的更改。 - Phll
如果他已经推送了,这意味着他的提交是仓库中最新的更改,并且没有冲突或者他解决了冲突,所以没问题。 - neevek

1

首先集成小功能。

然后让你的第二个员工

  • create a branch,
  • add and commit his/her evolution in that branch
  • fetch from the upstream repo
  • rebase that branch on top origin/master:

    git rebase origin/master
    

这将在更新后的master上重播这些提交(现在包括小特性)。
解决任何冲突的工作将由员工2完成。
一旦完成,简单的git push就足以推送更新的分支,并可以进行微不足道的合并以将其集成到master中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接