git 合并:如何保留文件的主版本?
git merge: how keep master version of file?
我正在使用 git 并在拉取请求后将一个分支合并到主分支中。
我的理解是,如果主文件中的文件自上次共同祖先以来没有更改,但分支中的同一文件发生了更改,git 将在合并期间使用分支中的版本。
对于两个分支之间的大部分差异,这是我想要的行为,但是在一个子目录树中有几个文件我希望合并保留主版本并丢弃分支版本。
执行此操作的基于命令行的良好工作流程是什么?
我想有很多方法。我会做什么:
- 执行合并(确保不会使用 --no-ff 开关快进)
- 编辑(又名修改)最后一次提交(这将是您的合并提交)
- 您想要 'reset'
取消暂存更改的文件
- 做一个提交(这将是一个没有你的文件的新合并提交)
- 重置文件中的更改。
另一种方法是在合并后还原所有触及您的文件的提交(如果可能)。
最简单的选择是使用 git merge --no-commit --no-ff
合并所有内容并在提交所有内容之前的最后一步停止。然后你 reset/checkout 那些你需要保持不变的文件,然后 运行 git-commit
。每当您进行不想合并到 master
的更改时,您都需要这样做。这种方法的风险是您可能会忘记一些 diffs/files,并且它们最终会毫无理由地出现在您同事的存储库中。
另一个更复杂的选择是创建两个分支,我们称它们为 tests
和 features
。分支 features
包含您将合并到 master
的那些更改,而分支 tests
包含其他更改。因此,您将继续将 features
合并到 master
和 tests
上。这消除了上述风险,使其成为最佳选择。
第三种选择是继续合并,然后进行提交以还原那些您不想更改的内容。这会让您的同事更难理解您的贡献。
我正在使用 git 并在拉取请求后将一个分支合并到主分支中。
我的理解是,如果主文件中的文件自上次共同祖先以来没有更改,但分支中的同一文件发生了更改,git 将在合并期间使用分支中的版本。
对于两个分支之间的大部分差异,这是我想要的行为,但是在一个子目录树中有几个文件我希望合并保留主版本并丢弃分支版本。
执行此操作的基于命令行的良好工作流程是什么?
我想有很多方法。我会做什么:
- 执行合并(确保不会使用 --no-ff 开关快进)
- 编辑(又名修改)最后一次提交(这将是您的合并提交)
- 您想要 'reset' 取消暂存更改的文件
- 做一个提交(这将是一个没有你的文件的新合并提交)
- 重置文件中的更改。
另一种方法是在合并后还原所有触及您的文件的提交(如果可能)。
最简单的选择是使用 git merge --no-commit --no-ff
合并所有内容并在提交所有内容之前的最后一步停止。然后你 reset/checkout 那些你需要保持不变的文件,然后 运行 git-commit
。每当您进行不想合并到 master
的更改时,您都需要这样做。这种方法的风险是您可能会忘记一些 diffs/files,并且它们最终会毫无理由地出现在您同事的存储库中。
另一个更复杂的选择是创建两个分支,我们称它们为 tests
和 features
。分支 features
包含您将合并到 master
的那些更改,而分支 tests
包含其他更改。因此,您将继续将 features
合并到 master
和 tests
上。这消除了上述风险,使其成为最佳选择。
第三种选择是继续合并,然后进行提交以还原那些您不想更改的内容。这会让您的同事更难理解您的贡献。