我非常了解 GIT 工作流程。我有一个master
分支,然后我签出一个develop
分支。之后,我检查了一个feature
分支。在feature
分支上,我编辑了一个文件。当我结帐回到develop
分行时。我看到该文件已被编辑。我开始不明白,因为我认为当你对一个分支上的文件做某事时,它不会影响另一个分支上的同一个文件,直到你合并两个分支。develop
当我在分支上编辑该文件时,有人可以解释为什么它会影响分支上的同一个文件feature
吗?谢谢!
4 回答
您忘记在分支中提交更改feature
。
当您从主分支签出到另一个分支并对该分支进行更改时,您应该始终使用“git stash”将更改存储在该分支上,或者您可以提交更改并将该分支推送到远程服务器。
您的理解可以使用一些改进。
Checkout 会更新索引和工作树,但如果您修改了文件的索引和/或工作树内容而新的 checkout 没有,您的修改将被保留。
如果新结帐也修改了该文件的内容,您甚至可以在结帐期间使用 git 将这些更改与您的更改合并--merge
(如果您和新结帐都更改了文件并且您没有询问,git 将拒绝结帐合并更改)。
因此,如果您在一个文件中并注意到应该在另一个分支上完成的修复,您切换到该分支,只添加一个修复,提交,然后切换回来。您的工作树不是用于处理分支,而是用于处理内容并记录您喜欢的更改。
为了确保您没有错过任何其他基础知识(并且您在这里所问的是非常基础的东西),我想说的是您对 git 一无所知的想法回到所有文档。以全新的眼光看待它。
当您编辑分支上的文件时,您从该分支编辑该版本。当您想要更改到另一个分支时,您必须先提交您的更改,或者您可以使用保存该状态,如果您想在该分支上再次工作git stash
,您可以恢复它。git stash pop
当您更改了文件时,可以更改分支,只要您要更改的分支上的文件没有被修改。但是你必须要有耐心,然后你就会有来自开发分支的状态。当文件发生更改时,您会收到错误消息。