Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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-如何在将提交添加到master后挤压提交_Git - Fatal编程技术网

Git-如何在将提交添加到master后挤压提交

Git-如何在将提交添加到master后挤压提交,git,Git,我正在本地分支上开发一个新功能,我进行了一些提交,然后创建了合并请求。它已经被验证并合并到master中,其他合并请求在此之后被推送 问题是,我们在主分支中有多个提交可见,其中包含WIP和错误的票证引用。我想将这些提交压缩为一个,并设置提交消息 我们对master有以下承诺: 编辑 git log --graph --oneline master * 63bcd68ce (HEAD -> master) [maven-release-plugin] prepare for next de

我正在本地分支上开发一个新功能,我进行了一些提交,然后创建了合并请求。它已经被验证并合并到master中,其他合并请求在此之后被推送

问题是,我们在主分支中有多个提交可见,其中包含WIP和错误的票证引用。我想将这些提交压缩为一个,并设置提交消息

我们对master有以下承诺:

编辑

 git log --graph --oneline master
* 63bcd68ce (HEAD -> master) [maven-release-plugin] prepare for next development iteration
* 625d40a55 (tag: pta-root-3.6.1) [maven-release-plugin] prepare release pta-root-3.6.1
* 16b304566 (pta_temp) PTAP-XXXX - WIP Authentication anonymous updates
* d5bf94fdc PTAP-XXXX - checkstyle issues
* 76f5107bc PTAP-XXXX - WIP Authentication anonymous
* ef7c71eb5 PTAP-XXXX - WIP Authentication anonymous
* 21d9271d8 PTAP-XXXX - WIP Authentication anonymous
* aa0af50da PTAP-XXXX - WIP Authentication anonymous-2
* e0b964795 PTAP-XXXX - WIP Authentication anonymous
* 96984a70c PTAP-XXXX - WIP Authentication part 2
* 7832f7911 PTAP-XXXX - WIP Authentication
* 040db7d97 [maven-release-plugin] prepare for next development iteration
有没有办法做到这一点:

* 63bcd68ce (HEAD -> master) [maven-release-plugin] prepare for next development iteration
* 625d40a55 (tag: pta-root-3.6.1) [maven-release-plugin] prepare release pta-root-3.6.1
* xxxxxxx PTAP-330- Add anonymous authentication 
* 040db7d97 [maven-release-plugin] prepare for next development iteration

有。。。。但它需要重写主分支的历史。您应该使用
git log--graph--one line master
,这样我们就可以看到修订的布局来告诉您细节。如果修订是直线布局的(没有合并),那么您可以运行
git rebase-i f325c30
,从提交中选择第一个修订并挤压其他修订,然后选择d25546和1bd2200。当您运行
git rebase-i
时,这些修订将全部列出。您的目标情况是不可能实现的,因为
d258546
的父级永远
0f1efa9
。但是,正如eftshoft0所建议的,您可以重新设置分支的基础,以使用相同的内容进行新的提交,但它们不会具有相同的哈希。如果这个分支是共享的(这看起来像是在读你的问题),你会强行推你的重定基础的分支,从而扰乱人们的当地历史。在对远程设备进行任何实际更改之前,请务必与您的工作人员就此进行沟通。但请注意,这是非常危险的。此回购协议的每一个其他副本都需要手动更新到主分支机构的新位置,否则您将面临有人将旧分支机构合并到新分支机构的风险,从而恢复您的提交。或者由于分支被移动,系统不再能够拉。@Mikezx6r我知道这一点,并且没有风险,因为我是项目中唯一的开发人员。