仅使用git-restore<commit_hash>是行不通的。显然,必须指定-m。


当前回答

有时,回滚的最有效方法是后退并替换。

git日志

使用第二个提交哈希(完整哈希,在列出错误之前要恢复到的哈希),然后从那里重新广播。

git checkout-b newbranch<HASH>

然后删除旧分支,将新分支复制到原来的位置,然后从那里重新启动。

git branch -D oldbranch
git checkout -b oldbranch newbranch

如果已广播,则从所有存储库中删除旧分支,将重做的分支推到最中心,然后将其拉回到所有存储库。

其他回答

git revert -m 1 <merge-commit>

下面是一个完整的示例:

git revert -m 1 <commit-hash> 
git push -u origin master

git还原。。。提交您的更改。

-m1表示您希望在合并之前恢复到第一个父级的树,如下面的答案所述。<commit hash>是要还原的合并的提交哈希。

git推。。。将更改推送到远程分支。

为了保持日志的整洁(这种方法有一些缺点(由于push-f)):

git checkout <branch>
git reset --hard <commit-hash-before-merge>
git push -f origin HEAD:<remote-branch>

“合并前提交哈希”来自合并后的日志(gitlog)。

如果您希望恢复刚才所做的更改,这是一个非常简单的答案:

commit 446sjb1uznnmaownlaybiosqwbs278q87
Merge: 123jshc 90asaf


git revert -m 2 446sjb1uznnmaownlaybiosqwbs278q87 //does the work

正确标记的答案对我有用,但我必须花一些时间来确定发生了什么。所以我决定为我这样的情况添加一个简单明了的答案。。

假设我们有分支A和B。您将分支A合并到分支B中,并将分支B推到自身,因此现在合并是它的一部分。但是您希望返回到合并之前的最后一次提交。。你是做什么的?

转到git根文件夹(通常是项目文件夹)并使用git日志您将看到最近提交的历史记录-提交具有提交/作者/日期财产,而合并也具有合并属性-因此您可以这样看它们:提交:<commitHash>合并:<parentHashA><parentHashB>作者:<Author>日期:<Date>使用gitlog<parentHashA>和gitlog<ParetHashB>-您将看到这些父分支的提交历史记录-列表中的第一个提交是最新的获取所需提交的<commitHash>,转到git根文件夹并使用git checkout-b<newBranchName><commitHash>,这将从合并前选择的最后一次提交开始创建一个新分支。。瞧,准备好了!