在我们的研究小组中,我们经常使用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-G
和J
恢复不合适的更改是我非常简单的合并。
答案 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
此工作流程比您的工作流程简单得多,有两个奖励点: