我被建议在运行
git pull
和合并之前提交所有更改。这有意义吗?如果我在提交更改之前运行pull
和merge
,然后在合并后提交它们呢?git pull
和合并之前提交所有更改。这有意义吗?如果我在提交更改之前运行pull
和merge
,然后在合并后提交它们呢?在拉取之前提交并不总是明智的做法 —— 您应该考虑将您的工作藏起来。
更好的思路是考虑您的暂存区。理想情况下,在尝试合并远程更改之前,您希望它保持干净(请记住,git pull
= git fetch
+ git merge
)。
git commit
是实现这一点的一种方法,但它会更改您的历史记录 —— 如果您关心将您的仓库保持在一个不断工作的状态下,则会污染它。
而另一方面,git stash
则专为此类用例而构建。
当您想记录工作目录和索引的当前状态,但想返回到一个干净的工作目录时,请使用 git stash。
源自:http://git-scm.com/docs/git-stash
您的工作流程将如下所示:
$ git stash
$ git pull origin master
$ git stash pop stash@{0}
这将允许拉取操作无问题地执行,并在应用你的存储时发生冲突时口头警告你。
未提交的更改总是不好的:
Git完全不知道未提交的更改。因此,如果出现任何问题,git无法以任何方式帮助您,并且您有可能在出现问题时失去您的工作。
如果您确保在进行任何git操作(例如在您的情况下进行拉取)时没有未提交的更改,则可以避免许多问题。
git
将会拒绝执行。这就是为什么先提交更改是个好主意。如果你不按照这个顺序进行,它要么能够成功合并(如果你修改的文件没有参与其他需要合并的提交),要么什么也不会发生,git
会告诉你无法完成合并。
git stash --all
或git stash --include-untracked
命令来避免合并操作失败并出现 "untracked files would be overwritten by merge" 的错误提示。 - Magnus Bäckgit pull --rebase
而不是stash。 - Lochlan