Wil*_*ill 106 git branch rollback
我在一个分支机构(即design)工作,我做了一些更改,但我需要将它们全部丢弃并重置它以匹配存储库版本.我以为git checkout design会这样做,但它只是告诉我,我已经在分支机构design,我有3个修改过的文件.
我将如何丢弃这些更改并获得现在远程服务器上的分支?
gor*_*gor 74
如果你想丢弃自上次提交以来的所有内容,git reset --hard可以帮助你
mip*_*adi 18
如果您不想进行任何更改design并且肯定希望它只匹配远程分支,您也可以删除分支并重新创建它:
# Switch to some branch other than design
$ git br -D design
$ git co -b design origin/design # Will set up design to track origin's design branch
Run Code Online (Sandbox Code Playgroud)
Mik*_*ski 17
git diff master > branch.diff
git apply --reverse branch.diff
Run Code Online (Sandbox Code Playgroud)
@Will,git immersion是一个非常好的和简单的git教程.它将向您展示如何撤消以下情况的更改:unstaged,staged和committed.实验室14-18
我在进行合并后发现了这个问题,但忘记立即签出开发。你猜对了:我开始直接在master上修改一些文件。噢!由于我的情况并不独特(我们都做过,不是吗;->),我将提供一种可逆的方法,我曾经放弃所有更改,以使master看起来再次开发。
git diff在查看修改了哪些文件并评估错误范围后,我执行了:
git stash
git stash clear
Run Code Online (Sandbox Code Playgroud)
首先隐藏所有更改后,接下来将它们清除。对错误掌握的文件所做的所有更改都消失了,并且奇偶校验已恢复。
假设我现在想要恢复这些更改。我可以做这个。第一步是找到我刚刚清除/丢弃的存储的哈希值:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Run Code Online (Sandbox Code Playgroud)
了解哈希值后,我成功恢复了未提交的更改:
git stash apply hash-of-cleared-stash
Run Code Online (Sandbox Code Playgroud)
我并不是真的想恢复这些更改,只是想验证我可以恢复它们,所以我再次清除了它们。
另一种选择是将存储应用到不同的分支,而不是擦除更改。因此,就清除因在错误分支上工作而做出的更改而言,stash为您提供了很大的灵活性,可以从错误中恢复过来。
无论如何,如果您想要一种可逆的方法来清除分支的更改,那么在这个用例中,上述方法是一种危险性较小的方法。
小智 5
在源根目录中:
git reset ./ HEAD <--un-stage any staged changes
git checkout ./ <--discard any unstaged changes
小智 5
当您想放弃本地分支中的更改时,您可以使用 git stash 命令隐藏这些更改。
git stash 保存“some_name”
您的更改将被保存,您可以稍后检索,如果需要,您也可以将其删除。执行此操作后,您的分支将没有任何未提交的代码,您可以使用 git pull 从主分支中提取最新代码。
| 归档时间: |
|
| 查看次数: |
169693 次 |
| 最近记录: |