Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在裸回购中取消提交分支的最后几次提交?_Git - Fatal编程技术网

Git 如何在裸回购中取消提交分支的最后几次提交?

Git 如何在裸回购中取消提交分支的最后几次提交?,git,Git,这是为了处理从主分支倒回提交。我可以在repo中的分支上使用类似的git reset-soft命令吗?还是应该尝试理解git revert 最终,我希望通过两三次提交来倒转两个分支,而不仅仅是裸回购中的最后一次。这取决于你想做什么。git revert将在存储库中生成新的提交,以撤销所选提交所做的更改。从更改跟踪的角度来看,这很好-您可以看到什么被恢复以及为什么被恢复,并且您可以随时在以后重新考虑您的决定 您可以在不使用-soft的情况下运行git reset,这仅在工作副本中有意义,可以简单地

这是为了处理从主分支倒回提交。我可以在repo中的分支上使用类似的git reset-soft命令吗?还是应该尝试理解git revert


最终,我希望通过两三次提交来倒转两个分支,而不仅仅是裸回购中的最后一次。

这取决于你想做什么。git revert将在存储库中生成新的提交,以撤销所选提交所做的更改。从更改跟踪的角度来看,这很好-您可以看到什么被恢复以及为什么被恢复,并且您可以随时在以后重新考虑您的决定

您可以在不使用-soft的情况下运行git reset,这仅在工作副本中有意义,可以简单地将存储库重置回以前的状态。这将在您选择的提交之后丢弃提交,因此您将永远丢失该历史记录。如果有人拥有存储库的远程工作副本,他们会突然发现自己的工作副本不同步,并且在运行git push时可能会无意中重新引入更改


如果它是您自己的存储库,并且您没有与任何其他人共享,那么git reset就可以了。否则,git revert可能是更好的选择,因为它会在存储库历史记录中留下痕迹,并与远程工作副本进行良好的交互。

这取决于您想要做什么。git revert将在存储库中生成新的提交,以撤销所选提交所做的更改。从更改跟踪的角度来看,这很好-您可以看到什么被恢复以及为什么被恢复,并且您可以随时在以后重新考虑您的决定

您可以在不使用-soft的情况下运行git reset,这仅在工作副本中有意义,可以简单地将存储库重置回以前的状态。这将在您选择的提交之后丢弃提交,因此您将永远丢失该历史记录。如果有人拥有存储库的远程工作副本,他们会突然发现自己的工作副本不同步,并且在运行git push时可能会无意中重新引入更改


如果它是您自己的存储库,并且您没有与任何其他人共享,那么git reset就可以了。否则,git revert可能是更好的选择,因为它在存储库历史记录中留下了痕迹,并且与远程工作副本的交互良好。

我仍然不清楚repo在哪里。你说它是光秃秃的,但你一定也有一个不光秃秃的地方

如果您只想倒带本地分支,那么您需要使用git reset。因此,如果您有一个本地分支测试版,那么您可以像这样倒带它:

$ git checkout beta
$ git reset --hard HEAD~2 
$ git push -f origin beta~3:beta
这将删除3个提交:HEAD、HEAD~1和HEAD~2。这些垃圾将在大约90天内被收集,所以如果需要的话,你可以把它们取回

如果您有一个名为origin的远程repo,它是空的,并且您想在那里倒带分支,那么您可以通过强制推送来完成。假设您在准备就绪之前在beta版上推送了3次提交。您可以将它们保留在本地项目中,但可以将它们从远程裸回购中删除,如下所示:

$ git checkout beta
$ git reset --hard HEAD~2 
$ git push -f origin beta~3:beta
这对使用该存储库的其他人来说可能很苛刻,但听起来您对此没有意见

如果您只有裸回购,那么您可以强制重置分支,如下所示:

$ git branch -f beta beta~3

注意:这也适用于第一个倒带本地分支的情况。同样,这对任何使用回购协议的人都是不友好的。

我仍然不清楚回购协议在哪里。你说它是光秃秃的,但你一定也有一个不光秃秃的地方

如果您只想倒带本地分支,那么您需要使用git reset。因此,如果您有一个本地分支测试版,那么您可以像这样倒带它:

$ git checkout beta
$ git reset --hard HEAD~2 
$ git push -f origin beta~3:beta
这将删除3个提交:HEAD、HEAD~1和HEAD~2。这些垃圾将在大约90天内被收集,所以如果需要的话,你可以把它们取回

如果您有一个名为origin的远程repo,它是空的,并且您想在那里倒带分支,那么您可以通过强制推送来完成。假设您在准备就绪之前在beta版上推送了3次提交。您可以将它们保留在本地项目中,但可以将它们从远程裸回购中删除,如下所示:

$ git checkout beta
$ git reset --hard HEAD~2 
$ git push -f origin beta~3:beta
这对使用该存储库的其他人来说可能很苛刻,但听起来您对此没有意见

如果您只有裸回购,那么您可以强制重置分支,如下所示:

$ git branch -f beta beta~3

注意:这也适用于第一个倒带本地分支的情况。同样,这对任何使用此回购的人来说都是不友好的。

你的意思是你正在推动裸回购,并且你希望远程裸回购的分支重新缠绕吗?@Pal Notz:是的。这是我的回购协议,所以我不担心欺骗其他用户。你的意思是你正在推动裸回购协议,你想让远程裸回购协议的分支重新运行吗?@Pal Notz:是的。这是我的回购协议,所以我不担心欺骗其他用户。那肯定是git重置。git reset是否会在SHA-HASH未被引用后保留该分支上的所有提交?i、 删除?那肯定是git重置。git reset是否会在SHA-HASH未被引用后保留该分支上的所有提交?i、 代表团 预计起飞时间?