git以交互方式查看分支的变化

时间:2017-05-17 18:53:59

标签: git

在我们的研究小组中,我们经常使用git来协作撰写论文(乳胶)。通常,主要作者通过github / gitlab具有“维护者”角色和对主人的控制权,其他人通过修复拼写错误,公式,部分等来贡献特征分支(并且通常不会或不能推送到受保护的主人)。

让我们说历史看起来像这样:

A -- B -- C -- D <-- master
      \
       E -- F -- G <-- patch-1

现在作为主要作者/维护者,我想回顾一下patch-1分支的变化。通常,它是合并请求的一部分。如果我同意它的所有变化,有很好的工具支持,我可以简单地合并。但有时候,我想拒绝换线。在这些情况下,工具支持通常会停止。我可以点击“编辑”,但现在处于补丁1状态,必须手动挖掘出我不想接受的那些更改的B版本。

是否有可以用来支持我的交互式提交(git commit --interactive)?

最后我试图产生这样的情况:

A -- B -- C -- D -------J <-- master
      \                /
       E -- F -- G -- H

H是我的“审核提交”,从E-GJ恢复不合适的更改是我非常简单的合并。

2 个答案:

答案 0 :(得分:0)

目前,我使用以下简单化(但可能是次优的)工作流程:

git checkout -b tmp patch-1
git reset B
# now use my editor of choice that has git gutter (e.g., sublime text)
# review changes, revert those that i don't like, adapt others
# when done:
git reset patch-1
git commit -a
git checkout master
git merge tmp

答案 1 :(得分:0)

git checkout patch-1
# e.g. one change you don't like is in commit G
git revert G
git reset HEAD~
# At this point you have changes _reverting_ G in the index.
# Now you work on the index to get rid of the changes reverting those in G that you DO want to keep.
git commit
git checkout master
git merge patch-1

此工作流程比您的工作流程简单得多,有两个奖励点:

  1. patch-1与遥控器保持推送兼容。
  2. 您的同事的原始更改都会保留,并且您的修改会明确保存在单独的提交中。