相关疑难解决方法(0)

git merge:将更改应用于移动到其他文件的代码

我正在尝试一个非常强大的git合并策略.我遇到的一个问题是我对我的分支中的某些代码进行了一些更改,但我的同事将该代码移动到其分支中的新文件中.所以当我这样做时git merge my_branch his_branch,git没有注意到新文件中的代码与旧文件中的代码相同,因此我没有任何更改.

将更改再次应用于新文件中的代码的最简单方法是什么.我不会有太多问题找出需要重新应用的提交(我可以使用git log --stat).但据我所知,没有办法让git将更改重新应用到新文件中.我现在看到的最简单的事情是手动重新应用更改,这看起来不是一个好主意.

我知道git可以识别blob,而不是文件,所以肯定必须有一种方法可以告诉它,"从这个提交应用这个确切的代码更改,除了它不是它现在在这个新文件中的位置".

git

114
推荐指数
3
解决办法
4万
查看次数

如何让git正确合并移动的内容(不仅仅是文件)

我目前正在研究git的很多内容跟踪功能.很高兴知道git允许我找出已经从一个文件移动到另一个文件的代码,但是我想知道在合并中进行冲突解决时这个功能是如何可用的.

这是场景:

我有两个文件hello.ccbye.cc创建.我启动一个分支topic并将一些代码移动hello.ccbye.cc.如果我现在这样做,git blame -C bye.cc我可以看到这段代码最初来自hello.cc哪个很好知道.但是现在我切换到没有移动内容的原始分支,并更改了hello.cc在另一个提交中移动的部分中的一些代码.如果我现在这样做,git merge topic我会发生冲突hello.cc.但是,除非我使用diff3样式(我通常会使用它),但我只能看到此方法已从hello.cc其他分支中删除,但后来没有更改过.什么是好的也会发生冲突,bye.cc因为有必要检查是否必须将其他分支的更改重新应用到代码中.这有点可能吗?

我知道我可以手动弄清楚,代码已被移动了git blame --reverse -C topic....然而,对于一个我花了很长时间来弄清楚这种可能性,其他大多数人可能都不知道它.第二,我很懒,可能会忘记代码可能已被移动.此外,当代码被移动到多个文件时,我不确定这是否有效.

您可以通过什么方式保持这种情况尽可能安全?

编辑:

我刚刚发现,它git blame --reverse -C hello.cc $(git merge-base HEAD topic)..topic也可以找出内容的移动位置.如果我正确理解git,这可能更快,因为它不会完整搜索完整存储库中的内容.

编辑:

我上传了我用来玩github的存储库,所以你可以自己尝试合并.我移动函数的提交位于主题分支中.在分支的HEAD中在master中更改相同函数的提交merge_here.在master中有一个额外的提交,我正在玩其他一些合并技术,你应该忽略这个问题.

git git-merge git-branch

11
推荐指数
1
解决办法
3752
查看次数

标签 统计

git ×2

git-branch ×1

git-merge ×1