pls*_*pls 1 git version-control merge git-diff
我目前在第二个分支机构上工作NC12-changePassword
。
对master
分支进行了更改,该分支处理字符串的解密。我需要这些新更改才能在我的分支上实现新功能,因此我合并了这些更改。
我做了一个git pull,没有冲突。当我运行时,git log
它显示合并提交。另外,当我运行时,git merge master
它告诉我一切都是最新的。
但是我的代码不起作用,当我运行git时,diff NC12-changePassword master
它列出了in master
中没有的内容NC12-changePassword
。这对我来说没有意义,因为我已经合并了更改,因此master中的所有内容都应包含在其中NC12-changePassword
。
我的理解是我的分支应该可以正常运行master
并且代码应该可以正常工作。还是我想念一些东西:-\。
因此,主机中的所有内容都应在NC12-changePassword中
那不是“合并”的意思,因此不是什么git merge
意思。
让我们以一个非常简单的示例进行说明。假设您从master分支出一个分支,并且作为该分支的一部分甚至全部分支,您删除了一段代码并提交了结果。
然后,在完成此操作之后,假设Fred进行了修改master
以添加第二个代码块-也许完全在另一个文件中-仅在存在第一个代码块的情况下才有用。他承诺这样做master
。
后来,您获得了Fred的工作,master
并git merge
用来将他的零钱变成大师。Git 不会放回您删除的代码:假设您知道自己当时在做什么。它所要做的就是发现Fred添加了一个新的代码块,并将其添加到您的分支中,在该分支中什么也不做,因为它取决于您删除的块。
如果现在将分支与Fred的分支进行比较master
,您仍将具有已删除的代码块:删除的代码块。你不会有一切这是在master
。(您自己master
也可能不会有Fred的更改,因为在上面,我们从未提及您继续进行自己的工作, master
并从他那里带来了他的更改master
。)
在复杂的情况下,您必须使用自己的知识(将始终超过git的知识)来修复语义上不正确的合并。Git最多会注意到语法冲突,例如:“嘿,您删除了此代码块,但是Fred对该同一个代码块进行了更改,因此由于我git对语义一无所知,因此您必须解决这个问题冲突”。但这仅在您有幸发生语法冲突时才会发生。如果尽管您进行了更改,Fred的更改仍“适合”,但由于您的更改而没有执行任何操作,则git甚至不会注意到。
归档时间: |
|
查看次数: |
673 次 |
最近记录: |