1. git(五 合並提交命令)
場景 :本地做了四次提交,想把第 2、3、4 次提交合並,只保留第二次提交的commit message
解決方案 :
1、git reflog 查看所有的提交記錄
p.s. git reflog 可以查看所有分支的所有操作記錄(包括已經被刪除的 commit 記錄和 reset 的操作);git log 命令可以顯示所有提交過的版本信息,看不到刪除的記錄。所以買後悔葯回退刪除記錄的時候,可以用 git reflog
上面的圖片展示了,一共四次提交,按照時間倒序排列分別是 第 4、3、2、1次提交
2、git rebase -i 「最新的一個想保留的 Commit」
意思是,我想合並2、3、4,那麼最新一個想保留的 commit 就是 第一次 commit,他的hash值為 ae9c811,輸入下列命令並回車
或者
3、選擇要合並的 commit :上述步驟完成後會跳出下圖界面
注意這個時候的順序:最近一次提交在最下面
前面三行是我們需要操作的三個 Commit,每行最前面的是對該 Commit 操作的 Command。關於每個 Command 具體做什麼,下面的注釋寫得非常清楚。為了完成我們的需求,我們可以關注到這兩個命令:
我們可以選擇把第 3、4 次的commit message合並到第二次上面,修改command如下,並保存退出:
4、編輯合並 commit 的 commit message
上述步驟完成後,會跳出如下界面
5、檢查:使用git log檢查
結果如下:
注意,使用git reflog仍可以查看最初的命令:
兩者的區別在於,git log只顯示保留的,git reflog可以顯示 reset 和 rebase、刪除的版本
編譯器的可視化git工具中的展示:
這個時候再push,提交記錄上就非常好看了
請注意 :
2. git 怎麼提交合並分支的部分代碼
git 怎麼提交合並分支的部分代碼?對於復雜的系統,我們可能要開好幾個分支來開發,那麼怎樣使用git合並分支呢?
合並步驟:
1、進入要合並的分支(如開發分支合並到master,則進入master目錄)
git checkout master
git pull
2、查看所有分支是否都pull下來了
git branch -a
3、使用merge合並開發分支
git merge 分支名
4、查看合並之後的狀態
git status
5、有沖突的話,通過IDE解決沖突;
6、解決沖突之後,將沖突文件提交暫存區
git add 沖突文件
7、提交merge之後的結果
git commit
如果不是使用git commit -m "備注" ,那麼git會自動將合並的結果作為備注,提交本地倉庫;
8、本地倉庫代碼提交遠程倉庫
git push
git將分支合並到分支,將master合並到分支的操作步驟是一樣的。
3. git 自定義命令,合並多個命令
問題:如何自定義命令,如何將多個命令進行合並執行?
通過給命令起 別名 的方式,來簡化命令
解析:
別名語法 git config --global alias.【別名】 '【執行的命令】'
執行函數: !f(){ 【命令】; }; f :表示定義f函數,並執行
相當於執行 git add .
合並命令為rpush:檢出新的分支
解析:
別名語法 git config --global alias.【別名】 '【執行的命令】'
執行函數: !f(){ 【命令】; }; f :表示定義f函數,並執行
A&&B :與符號,執行A成功後,執行B
$1 :表示變數
相當與執行以下命令