Dan*_*ell 296 git branch git-checkout
我正在使用git分支并准备提交我的更改,因此我使用有用的提交消息进行了提交.然后我心不在焉地对不值得保留的代码做了一些小改动.我现在想改变分支,但是git给了我,
错误:您对"X"进行了本地更改; 不能切换分支.
我以为我可以在不提交的情况下改变分支.如果是这样,我该怎么设置呢?如果没有,我该如何摆脱这个问题?我想忽略这些微小的变化而不提交,只是改变分支.
Von*_*onC 373
你需要一个干净的状态来改变分支.只有在不影响"脏文件"的情况下才允许分支结账(正如Charles Bailey在评论中所说的那样).
否则,您应该:
reset --hard HEAD
(如果你不介意失去那些微小的变化)或checkout -f
(当切换分支时,即使索引或工作树与HEAD不同,也要继续.这用于丢弃本地更改.)Jam*_*cey 117
如果要放弃更改,
git checkout -- <file>
git checkout branch
Run Code Online (Sandbox Code Playgroud)
如果您想保留更改,
git stash save
git checkout branch
git stash pop
Run Code Online (Sandbox Code Playgroud)
rom*_*run 58
好吧,它应该是
git stash save
git checkout branch
// do something
git checkout oldbranch
git stash pop
Run Code Online (Sandbox Code Playgroud)
sim*_*rsh 18
跟随,
$: git checkout -f
$: git checkout next_branch
Run Code Online (Sandbox Code Playgroud)
小智 15
请注意,如果您已合并远程分支或具有本地提交并想要返回远程HEAD,则必须执行以下操作:
git reset --hard origin/HEAD
Run Code Online (Sandbox Code Playgroud)
HEAD
单独只会引用本地提交/合并 - 有几次我忘记了当重置并最终得到"你的存储库是X提前......"当我完全打算核对所有更改/提交并返回到远程分支时.
如果您对切换分支时Git也需要更改的文件进行了更改,则不会让您这样做.要放弃工作更改,请使用:
git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)
然后,您将能够切换分支.
按着这些次序:
Run Code Online (Sandbox Code Playgroud)git stash save
Run Code Online (Sandbox Code Playgroud)git checkout branch
Run Code Online (Sandbox Code Playgroud)git stash pop
这些答案没有一个对我有帮助,因为即使在重置和隐藏之后,我仍然有未跟踪的文件。我必须做:
git reset --hard HEAD
git clean -d -f
Run Code Online (Sandbox Code Playgroud)
是强制结帐分支
git checkout -f <branch_name>
Run Code Online (Sandbox Code Playgroud)
强制签出分支是告诉 git 删除您在当前分支中所做的所有更改,并签出所需的更改。
或者如果您正在检查提交
git checkout -f <commit-hash>
Run Code Online (Sandbox Code Playgroud)
“我认为我可以在不提交的情况下更改分支。如果是这样,我该如何设置?如果不是,我该如何摆脱这个问题?”
答案是否定的,这实际上是 Git 的哲学,即您跟踪所有更改,并且每个节点(即提交)必须与您所做的最新更改保持同步,除非您已经当然进行了新的提交。
然后使用
git stash
Run Code Online (Sandbox Code Playgroud)
然后要将更改取消存储在所需的分支中,请使用
git stash apply
Run Code Online (Sandbox Code Playgroud)
这将应用您的更改,但也将它们保留在存储队列中。如果您不想将它们保留在存储堆栈中,请使用
git stash pop
Run Code Online (Sandbox Code Playgroud)
这相当于apply
然后drop
切换到丢失更改的新分支:
git checkout -b YOUR_NEW_BRANCH_NAME --force
Run Code Online (Sandbox Code Playgroud)
切换到现有分支丢失更改:
git checkout YOUR_BRANCH --force
Run Code Online (Sandbox Code Playgroud)
git checkout -f your_branch_name
Run Code Online (Sandbox Code Playgroud)
如果您在还原更改时遇到问题:
git checkout .
Run Code Online (Sandbox Code Playgroud)
如果要删除未跟踪的目录和文件:
git clean -fd
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
325839 次 |
最近记录: |