Man*_*olo 107 git git-checkout
这个问题类似于这一个,但更具体.
我有一个有两个分支(staging和beta)的项目.
我开发staging,并使用master分支来修复错误.因此,如果我正在进行暂存并且看到错误,我将更改为master分支:
git checkout master
Run Code Online (Sandbox Code Playgroud)
做的事情:
git add fileToAdd
git commit -m "bug fixed"
Run Code Online (Sandbox Code Playgroud)
然后我合并两个分支:
git checkout staging
git merge master
git checkout beta
git merge beta
Run Code Online (Sandbox Code Playgroud)
如果工作树上有其他文件也没关系.
但是现在,当我尝试更改master分支时,我收到一个错误:
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
Run Code Online (Sandbox Code Playgroud)
我以为我应该从暂存区域中删除该文件:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
Run Code Online (Sandbox Code Playgroud)
但是我得到了同样的错误.如果git status我得到了No changes to commit
kik*_*_yu 119
我遇到了同样的问题,并解决了它
git checkout -f branch
Run Code Online (Sandbox Code Playgroud)
它的规格很清楚.
-f, - force
切换分支时,即使索引或工作树与HEAD不同,也要继续.这用于丢弃本地更改.
检查索引中的路径时,不要在未合并的条目上失败; 相反,未合并的条目将被忽略.
kel*_*tar 104
修改文件时出现错误,并且要切换到的分支也对此文件进行了更改(从最新的合并点开始).
您认为,您的选项是 - 提交,然后通过额外的更改修改此提交(您可以修改git中的提交,只要它们不被push编辑); 或 - 使用藏匿处:
git stash save your-file-name
git checkout master
# do whatever you had to do with master
git checkout staging
git stash pop
Run Code Online (Sandbox Code Playgroud)
git stash save将创建包含您的更改的存储,但它不与任何提交甚至分支相关联.git stash pop将最新的存储条目应用于您当前的分支,恢复已保存的更改并将其从存储中删除.
Dee*_*tel 13
如果您不想提交本地更改,则可以强制签出您的分支.
git checkout -f branch_name
Run Code Online (Sandbox Code Playgroud)
Sco*_*des 10
当您要切换到的分支具有当前分支没有的更改时,就会发生此错误。
如果您在尝试切换到新分支时看到此错误,则当前分支可能落后于一次或多次提交。如果是这样,请运行:
git fetch
Run Code Online (Sandbox Code Playgroud)
您还应该删除也可能与目标分支冲突的依赖项。
例如,对于 iOS 开发者:
pod deintegrate
Run Code Online (Sandbox Code Playgroud)
然后尝试再次检查分支。
如果所需的分支不是新的,您可以选择一个提交并修复冲突,或者隐藏更改然后修复冲突。
1.Git Stash(推荐)
git stash
git checkout <desiredBranch>
git stash apply
Run Code Online (Sandbox Code Playgroud)
2. 樱桃采摘(更多工作)
git add <your file>
git commit -m "Your message"
git log
Run Code Online (Sandbox Code Playgroud)
复制您提交的 sha。然后丢弃不需要的更改:
git checkout .
git checkout -- .
git clean -f -fd -fx
Run Code Online (Sandbox Code Playgroud)
确保您的分支是最新的:
git fetch
Run Code Online (Sandbox Code Playgroud)
然后结帐到所需的分行
git checkout <desiredBranch>
Run Code Online (Sandbox Code Playgroud)
然后挑选另一个提交:
git cherry-pick <theSha>
Run Code Online (Sandbox Code Playgroud)
现在解决冲突。
git checkout -f branch
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题并通过解决了
git checkout -f分支
好吧,请小心-f开关。如果使用该-f开关,您将丢失所有未提交的更改。尽管在某些情况下使用它会有所帮助-f,但在大多数情况下,您可能需要先进行stash更改然后switch分支。stashing上面已说明了该过程。
| 归档时间: |
|
| 查看次数: |
152809 次 |
| 最近记录: |