这个问题和这个类似,但更具体。
我有一个项目有两个分支:阶段和测试。
我在分段上开发,并使用主分支来修复错误。所以如果我正在进行分期,我看到一个错误,我改变到主分支:
git checkout master
做这些事情:
git add fileToAdd
git commit -m "bug fixed"
然后合并两个分支:
git checkout staging
git merge master
git checkout beta
git merge beta
工作树中是否有其他文件并不重要。
但是现在,当我尝试更改到主分支时,我得到了一个错误:
error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting
我认为我应该从暂存区删除文件:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
但是我得到了同样的错误。如果我做git状态,我得到No changes to commit
当您要切换到的分支具有当前分支没有的更改时,会发生此错误。
如果在尝试切换到新分支时看到此错误,则当前分支可能落后于一个或多个提交。如果是,运行:
git fetch
您还应该删除可能与目标分支冲突的依赖项。
例如,对于iOS开发者来说:
pod deintegrate
然后再试着去分行结账。
如果想要的分支不是新的,您可以选择提交并修复冲突,或者隐藏更改,然后修复冲突。
1. Git Stash(推荐)
git stash
git checkout <desiredBranch>
git stash apply
2. 摘樱桃(更多工作)
git add <your file>
git commit -m "Your message"
git log
复制提交的sha。然后丢弃不想要的更改:
git checkout .
git checkout -- .
git clean -f -fd -fx
确保你的分支是最新的:
git fetch
然后签出到所需的分支
git checkout <desiredBranch>
然后樱桃选择另一个提交:
git cherry-pick <theSha>
现在解决冲突。
否则,你的另一个选择是放弃你当前的分支更改:
git checkout -f branch
当您要切换到的分支具有当前分支没有的更改时,会发生此错误。
如果在尝试切换到新分支时看到此错误,则当前分支可能落后于一个或多个提交。如果是,运行:
git fetch
您还应该删除可能与目标分支冲突的依赖项。
例如,对于iOS开发者来说:
pod deintegrate
然后再试着去分行结账。
如果想要的分支不是新的,您可以选择提交并修复冲突,或者隐藏更改,然后修复冲突。
1. Git Stash(推荐)
git stash
git checkout <desiredBranch>
git stash apply
2. 摘樱桃(更多工作)
git add <your file>
git commit -m "Your message"
git log
复制提交的sha。然后丢弃不想要的更改:
git checkout .
git checkout -- .
git clean -f -fd -fx
确保你的分支是最新的:
git fetch
然后签出到所需的分支
git checkout <desiredBranch>
然后樱桃选择另一个提交:
git cherry-pick <theSha>
现在解决冲突。
否则,你的另一个选择是放弃你当前的分支更改:
git checkout -f branch