我正在一个git分支上工作,并准备提交我的更改,所以我用一个有用的提交消息做了一个提交。然后,我心不在焉地对代码做了一些不值得保留的小更改。我现在想改变分支,但是git给了我,
错误:您对“X”进行了本地更改;不能切换分支。
我可以在不提交的情况下更改分支吗?如果是,我该如何设置呢?如果不是,我该如何解决这个问题?我想在不提交的情况下忽略较小的更改,只更改分支。
如果您对文件进行了更改,而Git在切换分支时也需要更改这些更改,它就不会允许您更改。要放弃工作中的更改,请使用:
git reset --hard HEAD
然后,您将能够切换分支。
您需要一个干净的状态来更改分支。分支签出只有在不影响“脏文件”(如注释中的查尔斯·贝利注释)的情况下才被允许。
否则,你应该:
reset --hard HEAD
checkout -f
或者,最近:
git switch
git switch -f <branch-name>
-f
--force
--discard-changes
即使索引或工作树与HEAD不同也要继续 索引和工作树都被恢复以匹配交换目标。< / p >
这与git switch -m <branch-name>不同,后者会触发当前分支、工作树内容和新分支之间的三方合并:这样你不会丢失正在进行的工作。
git switch -m <branch-name>
跟进,
$: git checkout -f $: git checkout next_branch
如果您想放弃更改,
git checkout -- <file> git checkout branch
如果你想保留这些变化,
git stash save git checkout branch git stash pop
嗯,应该是这样
git stash save git checkout branch // do something git checkout oldbranch git stash pop
注意,如果你合并了远程分支或者有本地提交,想要回到远程HEAD,你必须做:
git reset --hard origin/HEAD
HEAD单独只会引用本地提交/合并-几次我都忘记了,当我完全打算核化所有更改/提交并返回远程分支时,重置并以“您的存储库是X提交前..”结束。
HEAD
切换到一个新的分支丢失更改:
git checkout -b YOUR_NEW_BRANCH_NAME --force
切换到现有分支会丢失更改:
git checkout YOUR_BRANCH --force
关闭终端,删除项目所在的文件夹,然后再次克隆您的项目和voilá。
这些答案都没有帮助我,因为即使在重置和保存之后,我仍然有未跟踪的文件。我必须这么做:
git reset --hard HEAD git clean -d -f
如果您希望保留更改并在单行命令中更改分支
git stash && git checkout <branch_name> && git stash pop
是强制签出分支吗
git checkout -f <branch_name>
强制签出分支是告诉git放弃当前分支中所做的所有更改,并签出所需的分支。
或者万一你在检查一个提交
git checkout -f <commit-hash>
< br >
"认为我可以在不提交的情况下更改分支。如果是,怎么做 我能安排一下吗?如果不是,我该如何解决这个问题?" < / p >
答案是没有,这就是Git的哲学,你可以跟踪所有的更改,并且每个节点(即提交)都必须是最新的,除非你已经进行了新的提交。
然后把它们藏起来
git stash
然后使用
git stash apply
这将应用你的变化,但保持他们在stash队列太。如果你不想把它们放在藏物堆里,那就用它们把它们弹出
git stash pop
这相当于apply和drop
apply
drop
我为此创建了一个.gitconfig别名:
.gitconfig
[alias] spcosp = !"git stash push && git checkout \"$@\" && git stash pop --index #"
要更改为new-branch-name,使用:
new-branch-name
git spcosp new-branch-name
任何未提交的文件和索引更改都将被保留。
git checkout -f your_branch_name
如果您在恢复更改时遇到困难:
git checkout .
如果您想删除未跟踪的目录和文件:
git clean -fd
当git stash不工作时,切换到其他分支而不提交更改。您可以使用以下命令:
Git checkout -f branch-name
遵循以下步骤:
git stash save
git checkout branch
为你的精神平静 (为了更容易地访问你做分支切换时未提交的更改)
在切换之前:
git checkout <next_branch>
使用
git stash save "brief description of changes"
而不是默认值:
git stash // or git stash save
如果你的git stash list是一个较长的列表,这是有回报的 并且必须切换回某个开始于此的先前想法
git stash list