隨着需求的增多,爲了多人協做的順利進行,須要進行分支開發,進而帶來分支管理問題。今天主要講一下如何管理分支及提交。git
爲了使git更好用,下面是個人git配置文件(放在C:\Users\Administrator目錄下的.gitconfig文件)。vim
[user]
email = xxx
name = xxx
[gui]
encoding = UTF-8
[core]
autocrlf = false
[color]
ui = auto
[branch]
autosetuprebase = always
[alias]
st = status
ci = commit
co = checkout
br = branch
rb = reset --hard ORIG_HEAD
unstage = reset HEAD
lg = log --graph --oneline --decorate
last = log --graph --oneline --decorate origin/master..HEAD
[diff]
external = ~/meld.sh
這樣就能夠簡化命令了,好比 git status 能夠簡化爲 git st ,另外,git lg 查看log的時候格式也更加好看了,而且 git diff 查看文件改動對比更加明瞭。ui
要想使用git diff,還須要一點點配置:spa
下載meld,配置git以下:3d
$ git config --global diff.external ~/meld.sh
編寫 meld.sh
包裝腳本:code
$ vim ~/meld.sh
內容以下:blog
#!/bin/sh meld $2 $5
寫了這麼多無關話題,如今說正題。ci
在進行分支提交管理的時候使用最多的2條命令是rebase -i和cherry-pick。開發
rebase -i 用來合併多個commit爲1個,cherry-pick用來拾取commit。如今舉例說明。get
首先示例rebase -i來合併多個commit。
一、查看當前分支提交記錄
二、在當前分支新建test分支
三、在test分支提交3次
四、如今要把test分支的3個提交合併到dev,不推薦使用merge,由於會使log分支,推薦使用rebase來合併,全部的log都在一條線上。因此如今切回dev,而後git rebase test便可。
五、此時若是想把第二三四個提交合併爲1個,就rebase -i到第一個提交。
運行如下命令:
git rebase -i add92ec
此時彈出:
根據命令提示,把下面2個pick改成s後wq保存退出:
此時彈出提交匯總,可直接保存退出:
此時rebase -i成功:
能夠看到第二三四個提交都合併爲第二個提交。
詳細提交記錄:
因此rebase -i主要是爲了保持主分支的整潔性。
cherry-pick來拾取,好比,咱們能夠把test分支的第三個提交取到dev分支來,不須要第二和第四個提交。
一、首先dev分支回到第一個提交:
二、查看test分支第三個提交的版本號
三、回到dev分支來拾取test分支的第三個提交
運氣很差,發生了衝突,因此失敗了,那就解決衝突後繼續:
git st查看,得知衝突文件,解決衝突後continue。
如今test分支的第三個提交就到dev分支來了。
兩個git進階命令,很實用的哦,你學會了麼,嘿嘿嘿。