Git: can't switch between branches
在一个包含多个文件的本地文件夹中,我有一个git存储库,对于这个存储库,分支X只包含其中的一些文件,而主文件包含所有这些文件。
当我试图从x切换到master时,我得到:
1 2 3 4
| $ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
[...some files...]
Aborting |
编辑:所有列出的文件都不属于分支X,它们都属于主文件。我非常确信它们没有被修改过,无论如何,我可以回到主分支中保存的版本。
我该怎么办?
问题是,您的文件尚未添加到工作树中(例如:上次提交后创建的新文件)。当您想要切换分支时,Git会阻止您丢失这些文件。
为了能够更改分支,您可以将这些文件添加到工作树(git add file1.out或全部添加到:git add --all中,也可以删除它们(git rm file1.out ...)。然后你可以承诺或者(如果没有准备好)把它们藏起来(git stash,当你想要它们回来时(git stash pop)
这里和这里有更多信息。
- 如果他们没有被跟踪,为什么Git会在他们身上产生一个错误?真奇怪…(不应考虑它们,或者它们可能在目标分支上被跟踪?)
- 我想它们是在目标分支中被跟踪的。
- 是的,正确。它们在主分支中被跟踪。我想结账时换了一个。
您有一些已编辑的文件(列出的文件),但是通过签出其他分支,您将覆盖(并丢失)这些编辑。
您可以提交或存储这些更改。
参见:http://git-scm.com/book/en/v1/git-tools-stashing
- 好啊。奇怪的是,这些文件属于主分支,而我没有在另一个分支中修改它们。所以,我不妨回到它们的"以前"版本,不管是什么,没有任何问题。我该如何强制?
- 好吧,只是EDOCX1[0]
- 如果你不害怕失去它,你可以"结帐-f主人",但这很奇怪,这对你有帮助吗?stackoverflow.com/questions/4858047/…
- 是的,这就成功了。也许当我更改了几个文件的名称(不在列出的文件中)时,我搞砸了一些事情,我不知道。
- 是的,提交的文件比预期的要多,特别是使用IDE设置文件(Jet Brains IDE为此很痛苦):)
git checkout-f branch你想走吗?
小心。这将恢复对分支所做的所有更改。但如果你被迫合并,不让你藏匿是一个简单的方法,当没有做太多。
如果您想在以后删除您的分支(可能是使用git branch-d branch_删除),或者您想从0开始使用此品牌,请执行此操作。
- 我有这个错误……:(error: pathspec 'mybranch' did not match any file(s) known to git.号)
- 我使用查看所有分支,然后双击要使用的分支,然后右键单击以在命令末尾复制(在本例中,在"-f"之后),至少确保没有语法存在。评论我结果:)
- SRY,我想我的语法错误,我的控制台出现了一些错误,之后我就不能登录到我的控制台了。
- 我刚评论你的时候,脑子里有一个语法错误。我给你的命令只会影响你的分支。它不会影响控制台本身。如果它能帮你记住上票