TortoiseGit: http://download.tortoisegit.org/tgit/previews/
msysGit: https://msysgit.github.io/
初始化Git倉庫
#git init
新增檔案test.py到Git 倉庫
#git add test.py //新增檔案到stage
#git rm test.py //刪除檔案test.py
#git mv test.py test2.py //更改test.py為test2.py
#git commit –m “add test.py” //commit檔案到local 庫
#git commit –a //commit所有的檔案
回退
#git checkout –test.py //workspace:用stage的test.py重寫工作區的test.py檔案
#git checkout . //workspace:重寫工作區的所有檔案
#git reset HEAD test.py //stage
#git reset –hard commit_id //local repo:回退版本庫。HEAD^代指前一個版本。
#git revert //建立一個commit來覆蓋當前的commit,指標向後移動,而reset指標向前移動。
檢視log
#git log //顯示基本資訊
#git log –pretty=raw //顯示所有資訊
#git log –pretty=oneline //一行顯示
# git log --graph --pretty=oneline //檢視分支合併圖
#git reflog //檢視所有具有commit_id的日誌
#git status
比較
#git diff //workspace vs stage
#git diff –cached //stage vs local repo
#git diff HEAD //local vs local repo
分支
#git branch //檢視分支
#git branch –r //檢視遠端分支
#git branch –a //檢視所有的分支
#git branch dev //建立分支dev
#git checkout dev //切換到分支dev
#git checkout –b dev //建立並切換到dev分支
#git branch –d dev //刪除分支dev
#git branch –D dev //強制刪除分支dev
#git checkout –b dev origin/dev //在本地建立和遠端分支對應的分支
#git branch –set-upstream dev origin/dev //建立本地分支和遠端分支的關聯
Merge
#git merge dev //合併分支dev到當前分支
#git merge –no-ff –m “merge with no-ff” dev //禁用fast-forward, 也就是保留分支的相關資訊
遠端庫(origin為遠端伺服器)
#ssh-keygen –t rsa –C “youremail@example.com” //建立SSH Key。存放在~/.ssh下。
#git clone git@github.com:minirenhappy/gitskills.git //克隆遠端庫到本地
#git remote –v //檢視遠端庫
#git remote add origin git@github.com:minirenhappy/gitskills.git //關聯到遠端庫
#git remote rm origin //刪除遠端庫
Pull (相當於 fetch+merge , 所以fetch更安全一些)
#git pull remoteName localBranchName
#git pull origin master //拉取遠端倉庫的origin到master
Fetch
#git fetch origin master
#git rebase origin/master //把本地庫的提交取消並作為patch,最後把patch應用於本地庫上,可以保證提交樹的整潔。
#git push
Push到遠端庫
#git push remoteName localBranchName
#git push –u origin master //第一次推送master到遠端庫
#git push origin master //推送到遠端庫。
#git push origin dev:master //提交本地的dev分支作為遠端的master分支
#git push origin dev:dev //提交本地的dev分支作為遠端的dev分支
#git push origin dev //建立遠端分支(本地分支push到遠端)
Stash
#git stash //將工作區現場儲存起來,以後再恢復。用於修bug。
#git stash list //檢視儲存的工作區現場
#git stash apply //恢復工作區現場
#git stash drop //刪除stash內容
#git stash pop //恢復工作區的同時刪除stash的內容
#git stash apply stash@{0} //恢復指定的工作區
Tag
#git tag //檢視標籤
#git tag v1.0 //建立標籤v1.0
#git tag –a v1.0 –m “this is version 1.0” //指定標籤資訊
#git tag –s v1.0 –m “this is version 1.0” //用PGP簽名標籤
#git push origin v1.0 //推送本地標籤到遠端
#git push origin –tags //推送所有的本地標籤到遠端
#git pull origin –tags //拉取遠端的標籤到本地
#git tag –d v1.0 //刪除本地標籤
#git push origin :refs/tags/v1.0 //刪除遠端標籤
忽略檔案、資料夾
#倉庫根目錄下建立.gitignore檔案。寫入
#target
#*.pyc
Github
#可以Fork任何開源倉庫到自己的github賬戶,並且擁有Fork後的倉庫的讀寫許可權。
#可以推送pull request給官方倉庫來貢獻程式碼。