# Git學習筆記
[學習資料](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)
git init
git status
git log 可以檢視送出曆史
git reset --hard commit_id
git reflog檢視指令曆史
git add . 工作區 -> 暫存區
git commit -m '*' 暫存區 -> 分支上
git checkout -- '*' 撤銷工作區的操作
git reset HEAD * 可以把【暫存區】的修改撤銷掉
場景1:當你改亂了工作區某個檔案的内容,想直接丢棄工作區的修改時,用指令git checkout -- file。
場景2:當你不但改亂了工作區某個檔案的内容,還添加到了暫存區時,想丢棄修改,分兩步,第一步用指令git reset HEAD file,就回到了場景1,第二步按場景1操作。
場景3:已經送出了不合适的修改到版本庫時,想要撤銷本次送出,參考版本回退一節,不過前提是沒有推送到遠端庫。
git clone git@XX
git cloen http@xxx
檢視分支:git branch
建立分支:git branch <name>
切換分支:git checkout <name>
建立+切換分支:git checkout -b <name>
合并某分支到目前分支:git merge <name>
删除分支:git branch -d <name>
git push origin --delete * 删除遠端分支
用git log --graph指令可以看到分支合并圖。
開發一個新feature,最好建立一個分支;
如果要丢棄一個沒有被合并過的分支,可以通過git branch -D <name>強行删除。
指令git tag <name>用于建立一個标簽,預設為HEAD,也可以指定一個commit id;
git tag -a <tagname> -m "blablabla..."可以指定标簽資訊;
git tag -s <tagname> -m "blablabla..."可以用PGP簽名标簽;
指令git tag可以檢視所有标簽。
git push origin v1.0 送出tag
指令git push origin <tagname>可以推送一個本地标簽;
指令git push origin --tags可以推送全部未推送過的本地标簽;
指令git tag -d <tagname>可以删除一個本地标簽;
指令git push origin :refs/tags/<tagname>可以删除一個遠端标簽。
git update-index --assume-unchanged <file>.
git rm --cached -r test_suite/test_.py