Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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中的PR中删除提交_Git - Fatal编程技术网

从Git中的PR中删除提交

从Git中的PR中删除提交,git,Git,我创建了一个PR,但不小心分支出了错误的提交 commit 4 commit 3 commit 2 commit 1 <-- Want to get rid of first commit 提交1实际上是另一个PR的一部分。我想摆脱第一次提交,因为它与我创建的PR无关。最好的办法是什么 最简单的、不必考虑的方式通常是交互式的重基。dogitrebase-ilong:gitrebase-interactive,删除第一行,保存并退出。这将重写历史中的提交1。然后可能是git push-

我创建了一个PR,但不小心分支出了错误的提交

commit 4
commit 3
commit 2
commit 1 <-- Want to get rid of first commit  

提交1实际上是另一个PR的一部分。我想摆脱第一次提交,因为它与我创建的PR无关。最好的办法是什么

最简单的、不必考虑的方式通常是交互式的重基。dogitrebase-ilong:gitrebase-interactive,删除第一行,保存并退出。这将重写历史中的提交1。然后可能是git push-force和lease一如既往地同步您案例中的更改。

最简单的、不需要真正思考的方式通常是交互式重新基址。dogitrebase-ilong:gitrebase-interactive,删除第一行,保存并退出。这将重写历史中的提交1。然后可能是git push-force和lease一如既往地同步您案例中的更改。

这将删除提交,就像它从未出现过一样,即更改将被撤消,并将从该分支的历史记录中删除。从逻辑上讲,如果较新的提交基于要删除的提交中的更改,则此操作将不起作用。Git将告诉您有关此冲突的信息

在拉取请求的分支上:

git rebase HEAD~4-interactive 4是要显示的提交数 将要删除的提交的第一个单词从pick改为drop。[警告:数据丢失的风险。如果不想丢失其内容,请确保此提交是另一个分支的一部分。] 保存并关闭文件。 git push-force这将强制覆盖远程服务器。依我看,如果您不希望有其他人在这个远程分支上工作,那么这是没有问题的。
看起来我太慢了。

这将删除提交,就像它从未出现过一样,即更改将被撤消,并将从该分支的历史记录中删除。从逻辑上讲,如果较新的提交基于要删除的提交中的更改,则此操作将不起作用。Git将告诉您有关此冲突的信息

在拉取请求的分支上:

git rebase HEAD~4-interactive 4是要显示的提交数 将要删除的提交的第一个单词从pick改为drop。[警告:数据丢失的风险。如果不想丢失其内容,请确保此提交是另一个分支的一部分。] 保存并关闭文件。 git push-force这将强制覆盖远程服务器。依我看,如果您不希望有其他人在这个远程分支上工作,那么这是没有问题的。
看起来我太慢了。

哇,太好了,我没意识到我可以这么做!使用租约执行-force和-force有什么区别?@lost9123193:-force总是覆盖,但是使用租约执行-force检查您是否知道首先要覆盖的内容,即,您的上游副本仍然指向与远程上的分支相同的修订。换句话说,git状态告诉您您的本地分支机构是如何分化的仍然是最新的。在许多情况下,它可以自由替换,是更安全的选择。哇,很好,我没有意识到我可以这么做!使用租约执行-force和-force有什么区别?@lost9123193:-force总是覆盖,但是使用租约执行-force检查您是否知道首先要覆盖的内容,即,您的上游副本仍然指向与远程上的分支相同的修订。换句话说,git状态告诉您您的本地分支机构是如何分化的仍然是最新的。在许多情况下,它可以自由替换,是更安全的选择。当我删除它并使用gitlog-oneline时,我仍然可以看到我试图删除的提交。是这样吗?不,它应该消失,它的变化应该撤销。您需要保存并关闭git rebase打开的文件。当我删除它并执行gitlog-oneline时,我仍然可以看到我试图删除的提交。是这样吗?不,它应该消失,它的变化应该撤销。您需要保存并关闭git rebase打开的文件。