riv*_*ell 0 git merge git-cherry-pick
我对提交A中的文件进行了一些更改,然后我错误地解除了更改并继续在提交B和C中进行更改.
我希望提交A中的更改在我的文件中,但B和C中的更改也不应丢失.
假设我的分支现在在C.
我不想
$ git checkout --patch
Run Code Online (Sandbox Code Playgroud)
因为我希望文件包含我在B和C中所做的更改,并且从提交A中检出文件将在索引和工作树中重写该文件.
我不能做一个挑选,因为提交A是一个合并提交(存储库有两个贡献者,我删除了我的导师在我合并之后在后续提交中错误地做出的更改)我可能最终会得到一个如果我指定任何一个父母,那就太乱
除了手动复制文件中我想要的更改外,还有其他方法可以实现吗?
error: patch failed: <file_name>:1
error: <file_name>: patch does not apply
Run Code Online (Sandbox Code Playgroud)
合并将需要人工干预.
这是一个例子:
$ git format-patch -n <sha_from_commit_you_want_to_merge> > patch_file.patch
$ git apply patch_file.patch
Run Code Online (Sandbox Code Playgroud)
由于提交A的性质,此策略可能仍然存在问题.如果不进行单个提交的分支,则无法分离合并提交的组成组件.您的分支/回购只是将其视为一次提交.
当然,如果您确实可以访问原始分支,则可以从那里创建补丁文件,即使它们位于不同的存储库中.
归档时间: |
|
查看次数: |
209 次 |
最近记录: |