Don*_*n P 68 git merge branch git-svn rebase
我有一个分支'firstproject'有2个提交.我想摆脱这些提交并使它们显示为单个提交.
该命令git merge --squash听起来很有希望,但是当我运行git merge --squash终端时,只会显示该命令的选项.什么是正确的命令?
Commit 1:
Added 'homepage.html'
Added 'contacts.html'
Commit 2:
Added 'homepage.php'
Added 'homepage.php'
Deleted 'homepage.html'
Deleted 'contacts.html'
Run Code Online (Sandbox Code Playgroud)
mea*_*gar 112
您想要git rebase -i执行交互式rebase.
如果您当前正在使用 "提交1",并且您想要合并的提交,"提交2",是之前的提交,您可以运行git rebase -i HEAD~2并将第二行的第一个单词从"pick"更改为"squash" .然后写下你的文件,然后退出.Git会将你的第一次提交压缩到你的第二次提交.
请注意,此过程会重写分支的历史记录.如果你在某个地方推送你的代码,那么你必须git push -f和共享代码的任何人都必须跳过一些箍来取消你的更改.
请注意,如果有问题的两个提交不是分支上的最后两个提交,则该过程将略有不同.
Sta*_*chu 50
git rebase -i HEAD~3或许多提交而不是3.转过来
Run Code Online (Sandbox Code Playgroud)pick YourCommitMessageWhatever pick YouGetThePoint pick IdkManItsACommitMessage进入这个
Run Code Online (Sandbox Code Playgroud)pick YourCommitMessageWhatever s YouGetThePoint s IdkManItsACommitMessage然后执行一些操作,
esc然后点击enter以保存更改.[1]
当下一个屏幕出现时,摆脱那些垃圾#行[2]并创建一个新的提交消息或其他东西,并执行相同的escape enter操作.[1]
Wowee,你的提交次数较少.或者你刚刚打破了一切.
[1] - 或任何适合您的git配置.根据我的设置,这只是一个有效的序列.
[2] - 你会看到一些类似# this is your n'th commit的东西,你的原始提交就在这些消息的正下方.您想要删除这些行,并创建一个提交消息,以反映您要合并为1的n次提交的意图.
Ray*_*ess 20
这就是我所做的。(对我来说)这比进行交互式变基更容易:
\ngit reset HEAD~2. // go back 2 commits.\ngit commit -am \xe2\x80\x9cMy squashed single commit\xe2\x80\x9d\ngit push --force \nRun Code Online (Sandbox Code Playgroud)\n
小智 15
git rebase -i HEAD~<quantity of your commits>即git rebase -i HEAD~5)txt文件中pick,squash为所有提交更改关键字,除了第一次提交(位于顶部).对于最重要的一个,将其更改为reword(这意味着您将在下一步中为此提交提供新注释)并单击"保存"!如果在vim中,按,esc然后输入wq!并按Enter 键保存.完成
| 归档时间: |
|
| 查看次数: |
83627 次 |
| 最近记录: |