處理合並衝突 Git merge conflict
建立分支並 checkout 到該分支
git checkout -b app/newapp
修改檔案 a.php 的11行,儲存提交
vi a.php
git add .
git commit -m `edit a.php 11`
切換回 master 分支,也修改 a.php 的11行
git checkout master
vi a.php
git add .
git commit -m `edit a.php 11, master`
執行合併
git merge app/newapp
會出現如下錯誤提示
Auto-merging app/Http/a.php
CONFLICT (content): Merge conflict in app/Http/a.php
Automatic merge failed; fix conflicts and then commit the result.
編輯 a.php 處理衝突,再 add 後提交。
設定 git alias
通過 git 自帶的 alias 命令進行設定
git config --global alias.s status
以後,git status
命令就可以用 git s
來替換了。
設定的別名我們可以在~/.gitconfig
找到,同樣,上述命令也可以直接通過編輯~/.gitconfig
的`[alias]段進行新增修改。
另外,也可以通過命令列進行刪除該別名
git config --global --unset alias.s
通過 shell 的配置檔案進行別名配置
-
如果你用的是 Mac 自帶的 bash,可以編輯
~/.bashrc
或者~/.bash_profile
檔案; -
如果你用的是 zsh,則編輯
~/.zshrc
-
增加的配置內容如下:
g=git ga=`git add` gaa=`git add --all` gb=`git branch` gba=`git branch -a` gbd=`git branch -d` gcm=`git checkout master` gcmsg=`git commit -m` gco=`git checkout` gd=`git diff` gl=`git pull` glgg=`git log --graph` gm=`git merge` gp=`git push` gr=`git remote`
通過 oh-my-zsh 新增 git 外掛
編輯 ~/.zshrc
新增或調整如下程式碼
plugins=(git)
重啟 zsh。即可擁有 git 外掛的各種 git alias。
Git stash 改善工作流
我們的專案總會有一條主線和一條以上的分支,當我們在分支進行功能擴充的時候,如果發現主線有一些 bug 或者功能需要調整,而又不想把分支 commit ,但不 commit 又會無法 checkout 到 master 工作的時候,stash 就派上用場了。
git stash
: 備份當前的工作區的內容,從最近的一次提交中讀取相關內容,讓工作區保證和上次提交的內容一致。同時,將當前的工作區內容儲存到Git棧中。
git stash pop
: 從Git棧中讀取最近一次儲存的內容,恢復工作區的相關內容。由於可能存在多個Stash的內容,所以用棧來管理,pop會從最近的一個stash中讀取內容並恢復。
git stash apply stash@{1}
:可以將你指定版本號為stash@{1}的工作區取出來,如果不包含stash@{1}
,則取回最近的。apply
和 pop
的區別是,pop 取出後,git 棧就會釋放最近工作區,apply 只是把對應工作區應用到當前,並不釋放,若要釋放,需結合 git stash drop
刪除某一個進度.
git stash list
: 顯示Git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。
git stash clear
: 清空Git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。
git stash branch <branchname> <stash>
: 基於進度建立分支。
恩恩,今天國慶,只有一個字:堵!:(