【问题标题】:Careful pulling with Git: selective (manual) merge from origin/master to master使用 Git 小心拉动:选择性(手动)从 origin/master 合并到 master
【发布时间】:2017-02-27 20:37:33
【问题描述】:

在使用 git 时,fetchmerge 似乎是一个好主意(正如在此 blog 中指出的那样),而不是仅仅拉动以便让自己在合并之前查看更改。 这似乎是一种合理且安全的做事方式,到目前为止我可以遵循。

但是,如果我随后在 master 和 origin/master 之间执行 git diff 并确定大多数更新都很好,但有几件事需要修复怎么办?有没有办法“手动”合并?我正在寻找类似于在合并冲突后得到的编辑的东西,它可以让你决定每一个更改——有点像git add --patch

我想要的是在将 origin/master 合并到我自己的 master 之前拥有编辑东西的能力,最好是我最喜欢的 difftool。 我知道这可以通过将更改应用到 master 然后用 git push -f 强制推送来完成,但这似乎有点残酷和不必要。

另一方面,cherrypick 听起来是个很有前途的名字,但它只允许选择提交,而不是对文件的实际更改。

如何进行高度选择性/手动合并? docs 中的所有合并策略似乎都不允许对此进行足够的手动控制。

【问题讨论】:

    标签: git merge diff fetch low-level


    【解决方案1】:

    在您进行合并时,使用参数--no-commit

    git merge --no-commit <branch>
    

    这将在创建提交时停止合并,将您的状态保留为待处理的合并,这与发生冲突时完全相同。

    从此状态,您可以进行比较并进行必要的更改。

    【讨论】:

    • 添加了基于大块的重置作为接受答案的一部分
    • 我什至会添加--no-ff,这样--no--commit 就不会被忽略,以防它是快进合并。
    猜你喜欢
    • 2020-07-27
    • 2012-05-22
    • 2012-01-31
    • 2011-02-22
    • 1970-01-01
    • 2023-03-28
    • 2020-08-01
    相关资源
    最近更新 更多