日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git合并多个提交

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git合并多个提交 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

git合并多個提交

[時間:2016-11] [狀態:Open]
[關鍵詞:git,git rebase,合并提交,commit]

0. 引言

本文是關于Git提交記錄修改的方法,主要是將多個提交記錄合并為一個,然后提交。這里使用到git rebase(一般譯為衍和),多數情況下推薦在未提交到遠程倉庫之前修改本地git提交記錄格式時使用。
我遇到這個問題主要是因為實際提交中需要在多個分支之間切換,不希望在另一個分支上看到當前分支的多次提交,只希望將多次提交壓合成一個提交,然后在另一個分支上直接git cherry-pick即可。

1. 合并多個提交

為了美化commit history不擇手段
首先,為了模擬實際git rebase效果,我們先在git上提交兩個修改。git log如下:

commit e1a7dfa9dfea8e63ad079dba37c61d8e80ffbe1b Author: Tocy Date: Mon Nov 28 14:01:45 2016 +0800add text in second.txtcommit c6e45575484666245bb22d2d5d534bfee91f44c6 Author: Tocy Date: Mon Nov 28 13:59:43 2016 +0800create second.txt

假設合并這兩個提交,可以按照下面過程

git rebase -i HEAD~2

可以先用man查看下git rebase的命令參數,這樣會有如下提示:

pick c6e4557 create second.txt pick e1a7dfa add text in second.txt# Rebase a71eba2..e1a7dfa onto a71eba2 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out

第一列是rebase具體執行的操作,其中操作可以選擇,其中含義如下:

  • 選擇pick操作,git會應用這個補丁,以同樣的提交信息(commit message)保存提交
  • 選擇reword操作,git會應用這個補丁,但需要重新編輯提交信息
  • 選擇edit操作,git會應用這個補丁,但會因為amending而終止
  • 選擇squash操作,git會應用這個補丁,但會與之前的提交合并
  • 選擇fixup操作,git會應用這個補丁,但會丟掉提交日志
  • 選擇exec操作,git會在shell中運行這個命令

對比之前的兩個提交提交,我覺得第一個提交可以保留,第二個合并到第一個就可以了。

將第二個pick改成squash或者s,然后保存退出。如下:

pick c6e4557 create second.txt s e1a7dfa add text in second.txt

此時git會自動將第二個提交合并到第一個提交,并彈出合并提示信息,如下:

# This is a combination of 2 commits. # The first commit's message is:create second.txt# This is the 2nd commit message:add text in second.txt# 請為您的變更輸入提交說明。以 '#' 開始的行將被忽略,而一個空的提交 # 說明將會終止提交。 # # 日期: Mon Nov 28 13:59:43 2016 +0800 # # 變基操作正在進行中;至 a71eba2 # 您在執行將分支 'master' 變基到 'a71eba2' 的操作時編輯提交。 # # 要提交的變更: # 新文件: second.txt #

如果需要修改下提交信息,如果不需要直接保存退出即可。

此時我們已經完成了將兩個提交合并為一個的處理,可以通過git log查看

commit 251d222ac45f3596943480bd5a7cc695b5d7d6e9 Author: Tocy Date: Mon Nov 28 13:59:43 2016 +0800create second.txtadd text in second.txt

總結

注意本文僅僅介紹了我遇到的多個提交合并的問題,關于git rebase用法,建議參考Git Community Book 中文版-rebase和參考資料中的介紹。
多數情況下git rebase僅限在本地使用,也就是在提交到遠程分支之前。

參考資料

  • 使用git合并多個提交
  • git rebase簡介(高級篇)
  • git-rebase用法總結
  • git-rebase(認真看,分析很到位)
  • 轉載于:https://www.cnblogs.com/tocy/p/git-rebase-merge-commit.html

    總結

    以上是生活随笔為你收集整理的git合并多个提交的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。