【发布时间】:2015-07-23 17:16:13
【问题描述】:
我是 GIT 的初学者。有时我有一个包含更改的文件,我需要签出到其他分支。澄清这个文件存在于两个分支中。当我结帐时 git 说:
无法完成签出,因为您在第一个分支中未提交更改,这些文件将被覆盖
其他时候 git 允许我在不执行提交或暂存第一个分支中的文件的情况下签出到第二个分支
为什么有时 git 不允许我结帐,为什么有时会?
谢谢
【问题讨论】:
标签: git git-checkout
我是 GIT 的初学者。有时我有一个包含更改的文件,我需要签出到其他分支。澄清这个文件存在于两个分支中。当我结帐时 git 说:
无法完成签出,因为您在第一个分支中未提交更改,这些文件将被覆盖
其他时候 git 允许我在不执行提交或暂存第一个分支中的文件的情况下签出到第二个分支
为什么有时 git 不允许我结帐,为什么有时会?
谢谢
【问题讨论】:
标签: git git-checkout
如果您的更改与分支之间存在冲突,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
如果您有冲突(您的情况)。我认为最好的警察是完成你正在做的工作并提交完成的工作。然后签出另一个分支并合并更改。会有冲突,但你最终会被允许解决它们。
【讨论】: