我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
当前回答
头:
在重置承诺之前, 我们应该知道关于 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
以下是图形表达式 :
其他回答
单一个命令 :
git reset --soft 'HEAD^'
成功推翻了当地最后的承诺!
您可以从本地仓库撤销您的承诺 。 请遵循以下方案 。
在下面的图像中, 我检查“ 测试” 分支( 使用 Git 命令)git checkout -b test
)作为本地检查状态(使用 Git 命令)git status
地方分支中没有任何可承诺的。
在下一个图像图像中,您可以看到这里的图像 我做了一些修改过滤器1. txt然后用一些信息(使用 Git 命令) 将文件添加到中继区, 并用一些信息( 使用 Git 命令) 来进行更改git commit -m "Doing commit to test revert back"
).
"-m 用于发送信件"
在下一个图像中,您可以看到您承诺的日志,无论您承诺什么(使用 Git 命令)git log
).
所以在以上图像中,您可以看到每个承诺的承付代号, 以及您现在的执信信息, 无论您想要返回或撤消的复制件, 即实施 ID 并击中下面的 Git 命令,git revert {"paste your commit id"}
示例:
git revert 9ca304ed12b991f8251496b4ea452857b34353e7
我恢复了上次的承诺。 现在, 如果您检查您的 Git 状态, 您可以看到修改后的文件过滤器1. txt并且尚未承诺。
要重置上一个修订版, 请永久删除所有未承诺的更改 :
git reset --hard HEAD~1
OP: 我如何撤销当地最近在Git的最新承诺? 我无意中犯下了错误的案卷[作为几项承诺的一部分]。
依你追求的结果而定,有几种方式可以“不做”作为承诺系列。考虑到下面的起始案例,reset
, rebase
和filter-branch
全部可以用于重写您的历史 。
如何可以C1 C1和C2 C2 级将取消以删除tmp.log
是否从每个文件中做出 ?
在下文的例子中,使用了绝对承诺参考,但如果更多地使用相对参考(即:HEAD~2
或HEAD@{n}
).
reset
$ git reset --soft t56pi
与reset
,一个分支可以重置到先前的状态,而任何复合变化都返回到等待区,从中可以放弃任何不必要的变化。
注:原为:reset
将所有先前的修改分组到等待区,个人承诺元数据将丢失。如果这与您有问题,你也许更有机会与rebase
或filter-branch
取而代之。
rebase
$ git rebase --interactive t56pi
使用交互式rebase
可以在分支中修改和丢弃不想要的更改。在以上信息图中,右侧的源树可以显示状态位置。rebase
.
逐步执行
t56pi
)pick
与edit
保存和关闭。HEAD
,删除不需要的文件,创建全新的承诺。注:与rebase
大部分承诺元数据的保存与承诺元数据的保存形成对比。reset
上方的替代选项。 如果您想要保留大部分历史, 但只删除不需要的文件, 这很可能是一个首选选项 。
filter-branch
$ git filter-branch --tree-filter 'rm -r ./tmp.log' t56pi..HEAD
上上命令会过滤文件./tmp.log
所有承诺在理想范围内的t56pi..HEAD
(假设我们最初的起步案例来自以上)请见下文说明清楚。
类似rebase
, filter-branch
可用于从分支的一个小节中清除不想要的文件。 而不是通过重设程序手动编辑每项承诺,filter-branch
能够自动预设对每项承诺的预期行动。
注:就像rebase
, filter-branch
仅丢弃所需文件, 将保存承诺元数据的其余部分 。C1 C1和C2 C2 级已经改写了, 日志文件被丢弃了, 从每个任务中 。
就像任何与软件开发有关的事情一样,对于一个特定的问题,有多种方法可以实现相同(或类似)的结果。你只需要选择最适合你特定案例的方法。
请注意上面所有三种选择都完全重写历史。 除非您确切知道自己在做什么, 并在团队中保持良好的沟通 — — 只有重写承诺还没有远程发布 !
资料来源:以上所有例子都是从中借用的博客博客.
如果你打算完全撤销一个本地的承诺, 无论你改变什么你对承诺所做的, 如果你对此不担心, 执行以下命令。
git reset --hard HEAD^1
(此命令将忽略您的全部任务, 您的更改将会从您的本地工作树上完全丢失) 如果您想要撤销您的承诺, 但是您想要您在中转区域中的更改( 之前要像在git add
)然后执行以下命令。
git reset --soft HEAD^1
现在,您的已执行文件将进入中转区域。 如果您想要提升文件, 您需要编辑错误的内容, 那么执行以下命令
git reset HEAD
现在承诺要将文件从舞台区域移到非舞台区域。 现在文件已准备编辑, 所以无论您改变什么, 您都想要去编辑和添加它, 并做出新的/ 新的承诺 。