我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
当前回答
git reset HEAD@{n}
将重置您上一个n行动。
用于重设, 对于上一个动作, 使用git reset HEAD@{1}
.
其他回答
在回答之前,我们补充一些背景背景,解释一下HEAD
是。 这是。
First of all what is HEAD?
HEAD
仅指当前分支的当前承诺(最新承诺)。
只有一个,只有一个,只有一个HEAD
在任何给定时间(不包括git worktree
).
内容的内容HEAD
存储在内部.git/HEAD
并包含当前承诺的 40 字节 SHA-1 。
detached HEAD
如果你们不履行最近的承诺,那末,HEAD
指向历史中的先前承诺 它被称作detached HEAD
.
在命令行上,它会看起来像这个 - SHA-1 而不是从HEAD
不指向当前分支的端点 :
git checkout
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits to go back
这将检查指向想要的承诺的新分支 。
此命令将检出给给定的承诺 。
此时此刻,您可以创建一个分支,并从此开始工作。
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>
# Create a new branch forked to the given commit
git checkout -b <branch name>
git reflog
你可以随时使用reflog
并且,还有。
git reflog
将显示更新HEAD
并检查想要的 reflog 条目将设置HEAD
返回到此任务。
总部总部每次修改时,将有一个新的条目。reflog
git reflog
git checkout HEAD@{...}
这样你就可以回到你想要的事业了
git reset --hard <commit_id>
"移动"你的总部 回到想要的承诺。
# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32
# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts if you've modified things which were
# changed since the commit you reset to.
git rebase --no-autostash
并且,还有。git revert <sha-1>
“ 撤消” 指定的承诺或承诺范围 。
重置命令将“ 撤消” 对给定任务所做的任何更改 。
将使用解析补丁进行新承诺, 而原始承诺也将保留在历史中 。
# Add a new commit with the undo of the original one.
# The <sha-1> can be any commit(s) or commit range
git revert <sha-1>
这个计划说明哪个指挥所做什么。
如你所见reset && checkout
修改HEAD
.
为了完整起见,我将提出前几个答复所忽略的一个明显明显的方法。
由于承诺没有被推,遥控器没有改变,因此:
有时候,如果你的高贵的Git客户告别(看着你,伊吉特),这有时是必要的。
别忘了重新承诺保存已保存上次按键后的变化 。
通过下列方式查看日志来查找上次承诺的散列代码 :
git log
然后
git reset <the previous co>
使用此命令( 在顶部的日志 1 中, 这是最新命令) 获取上次的 身份确认 :
git log
获取执行 ID (GUID) 并运行此命令 :
git revert <commit_id>
头:
在重置承诺之前, 我们应该知道关于 HEAD... HEAD 在您的工作目录中只是您目前的状况。 它由承诺编号代表 。
Git 承诺 :
在由独有标签代表的一承诺下指定的每一项更改。 无法删除提交 。 所以, 如果您想要您最后的承诺, 您可以简单地跳入其中 。git reset
.
您可以使用两种方法跳入最后一个承诺 :
方法1:(如果你不知道承诺编号,但想移动到第一个)
git reset HEAD~1 # It will move your head to last commit
方法2:(如果你们知道自己所做的一切,那末,你们只须将自己所知道的(事情)重新置身于你们所认识的(事情)中)
git reset 0xab3
# 提交编号
注:想要了解最近一项任务尝试git log -p -1
以下是图形表达式 :