標籤:style blog http java color 使用
1、綜述
git是分支開發,主幹發布,建立立的分支最好是基本master拉出去的。
2、branch
git branch -a #參考當前所有分支,前面有*標識的表示當前所在的分支
git branch p1 origin/master
git branch dev origin/master #建立dev分支,該分支是基於 origin 的遠程分支 master
git checkout dev#切換到dev分支
git branch -d dev#刪除dev分支
git push --set-upstream origin dev #將建立的dev分支push到遠端dev分支上
3、checkout和reset
reset
git reset HEAD <file>..." 撤出暫存區
git reset HEAD -- filename #將檔案filename的改動撤出暫存區,暫存區中其他檔案不該變.相當於git add filename的反向操作
git reset --hard <commit> #替換引用的指向.引用指向新的提交ID(我的理解就是回到指定的曆史版本資訊)
checkout
git checkout -- filename
用暫存區中的filename檔案來覆蓋工作區中的filename檔案.相當於取消自上次執行git add filename以來(如果執行過)的本地修改
git checkout -- .或者git checkout .
會取消本地所有修改,相當於用暫存區的所有檔案直接覆蓋本地檔案,
git checkout 27d1bfd29b,回到這個提交點,git checkout dev,又會到最新的提交,而git reset是不可以的。
git checkout -- filename #用暫存區中的filename檔案來覆蓋工作區中的filename檔案.相當於取消自上次執行git add filename以來(如果執行過)的本地修改
git checkout HEAD <commit> #取消本地所有修改,相當於用暫存區的所有檔案直接覆蓋本地檔案
區別
git checkout 27d1bfd29b,回到這個提交點,git checkout dev,又會到最新的提交,而git reset是不可以的。
4、log、reflog、cherr-pick
git log
執行過git reset --hard HEAD~1 刪除之前的commit提交資訊。git log只查看到之前的git commit提交版本資訊,恢複該提交點的commit看不到
git reflog
git reflog可以查看所有的commit提交資訊。可以通過git reset --hard <commit>進行恢複之前誤恢複的操作
example 假設有三個commit, git status: commit3: add test3.c commit2: add test2.c commit1: add test1.c 類比丟失commit記錄的情況,執行git reset --hard HEAD~1,刪除了commit3,同時test3.c檔案已經在working tree裡看不到了,如果要恢複commit3,就要使用git reflog和git cherry-pick. git reflog 502dd0f [email protected]{0}: HEAD~1: updating HEAD 147b3b5 [email protected]{1}: commit: test3 502dd0f [email protected]{2}: commit: test2 0692c03 [email protected]{3}: commit (initial): test1 [email protected]{0}: HEAD~1: updating HEAD 加粗的即是被刪除了的 commit3,運行git log則沒有這一行記錄,可以使用git reset --hard 502dd0f 將紅色記錄刪除,恢複cmmit3,需要用git cherry-pick.
git cherry-pick 147b3b5 #恢複到test3提交點 運行git log後可以看到: commit3: add test3.c commit2: add test2.c commit1: add test1.c5、遠程倉庫 git push origin dev 想把當前的代碼push到遠端的dev分支上,可是遇到奇怪的錯誤,可能因為沒有執行git pull origin master
執行git pull origin master後執行git push origin dev還是會報錯,可以繼續這樣解決:
git pull --rebase origin dev #rebase 分支衍合,待研究#
6、commit
git commit --amend #可以更改上一個提交的注釋
7、config alias
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status