GIT:检出到其他分支而不进行提交或暂存第一个分支中的文件

GIT: Checkout to other branch without doing a commit or stage the files in the first branch

我是 GIT 的初学者。有时我有一个文件有更改,我需要签出到其他分支。澄清这个文件存在于两个分支中。当我结帐时 git 说:

  1. 无法完成签出,因为您有未在第一个分支中提交的更改,这些文件将被覆盖

  2. 其他时间 git 允许我检出到第二个分支,而无需在第一个分支中提交或暂存文件

为什么有时 git 不允许我结帐,为什么有时可以?

谢谢

如果您的更改与分支之间存在冲突,git 将合理地拒绝破坏一个或另一个。我解决这个问题的方法是存储更改,然后应用存储(假设我想在新签出的分支中进行更改):

> git stash save
> git checkout <brannchname>
> git stash pop

如果您不想保存未提交的更改。您可以清理您的工作目录,之后,您可以签出到新分支

git reset --hard
git checkout theOtherBranch

如果您想保存更改以便在完成其他分支中的工作后继续在其中工作。我更喜欢提交更改并稍后重置。

git commit -a -m "Commit to reset later"
git checkout theOtherBranch
// works in this branch and commit the changes.
git checkout theFirstBranch
git reset --mixed HEAD~1 // With this you get the working directory as the beginning.

如果你想将未提交的更改翻译到另一个分支而不保存它们,如果没有冲突(相同文件和行中的更改),你可以这样做。

git checkout theOtherBranch

如果您有冲突(您的情况)。我认为最好的警察是完成你正在做的工作并提交完成的工作。然后你签出另一个分支并合并更改。会有冲突,但你最终会被允许解决它们。