Git 經常使用基本操做

git 流程

分支

1. git branch <branch name>

在本地建立一個新的分支名爲<branch name>, 此時在遠端看不到該分支, 須要將該分支推送到遠端。查看本身本地分支: git branch 查看剛纔新建立的分支java

2.git checkout <branch name>

進行本地分支的切換,切換至上述新建的分支<branch name>git

3.git checkout -

切換至上一個分支,命令效果等同於cd -github

3.git push --set-upstream origin <branch name>

推送該分支到遠端,並創建關聯。所謂關聯是指後續全部提交到該分支,如git push, 若是不進行次操做,git 會進行提示vim

4. git branch -c

該命令等同於上述1.2步,新建立分支同時會進行切換到新分支緩存

5. git branch -r: git branch : git branch -a

上述都查看分支, 查看遠端分支, 查看本地分支, 查看全部分支,操做者當前所在分支用 * 號標記。ide

6. git branch -d <branch name>

刪除一個本地分支,切換至別的分支,不然刪除不了。svn

7. git push origin --delete <branch name>

刪除遠端分支函數

文件修改提交

8. git status

查看當前分支工做區、暫存區的工做狀態,post

9. git status -sb

以簡潔的方式顯示工做區文件狀態fetch

10. git add <filename>

將該文件加入暫存區

11. git add . || git add -A

將全部的新建立的文件加入暫存區, 執行git add命令的時候,git首先會經過hash函數算出文件名A.java對應的sha-1值, 該值是32位16進值,git 取前兩位在.git 目錄objects目錄下建立一個之後30爲文件名的文件。

12. git diff xxx

查看文件的修改

13. git commit -m "<message>" <filename>

提交該文件至本地倉庫, 若是提交全部文件能夠使用git commit .命令

14. git commit || git commit -a

提交全部文件修改,並打開vim界面,填寫 message , 做用是規範提交的 message,效果等同於arc。 能夠參照Angular 團隊的規範。修改本身本地提交 message 參照優雅的提交你的 Git Commit Message

15. git pull

更新遠端的代碼並與本地進行合併, 若是本身修改了代碼, 獲取別人時會產生一次無用的 merge提交記錄。

gir merge

16. git pull --rebase

一樣的拉取遠端代碼,並與本地代碼自動合併,但不會產生上述無用的 commit , 讓分支節點迭代更加優美、清晰

17. git fetch

拉取遠端代碼,但不會進行 merge , 須要本身手動執行 git merge <filename> 進行合併

17. git push

將本地代碼修改推送至遠端

日誌查看

18. git log -x

查看最近X的提交日誌

19. git log -x --pretty=oneline

去除提交日誌裏的 date 以及 author, 顯示爲一行

20. git show --stat

顯示最近一次的提交日誌,並顯示修改的文件

21. git show <commit-id>

查看對應的 commit-id 修改詳情, 具體的修改內容查看。

22. git log HEAD~1

HEAD 指針指向的最後一次提交,也能夠查看最後一次提交的log

23. git show HEAD~1

查看最近一次的修改內容詳情

文件回滾

24. git checkout <filename>

前置條件沒有 commit 到本地倉庫,撤銷filename文件在工做區的修改到最近一次git add 或 git commit時的內容,就是清空當前工做區的修改

25. git reset --mixed <commit-id>

沒有 push 到遠端以前,回滾到指定 commit-id , mixed 是git默認的回滾方式,會清空暫存區保留工做區。如回滾前有兩個 commit-id

回滾前

回滾後以下圖:

回滾後

文件顯示沒有被 add 到緩存區,可是保留了該文件, 並將 commit-id 擦除,擦除的 commit-id 能夠恢復reflog

26. git reset --soft <commit-id>

soft
該命令會會同時保存暫存區和工做區內容,並將 commit-id 擦除,擦除的 commit-id 能夠恢復用 reflog

27. git reset --hard <commit-id>

該命令會同時清除工做區和暫存區,並將 commit-id 擦除,擦除的 commit-id 能夠恢復reflog

28. git revert <commit-id>

在已經將代碼 push 到遠端後,回滾時使用該命令,注意指定的是要回滾的 commit-id , 回退結束後任何內容都不會保留。git reset 是把HEAD向後移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,可以抵消要被revert的內容。

分支合併

29. git merge <branchname>

開始前請切換你的 target 分支 ,執行該命令會將 <source branch> 代碼合併。缺點:git 默認是以 fast-forward 方式進行合併,屬於「快進方式」,這種狀況若是刪除分支,則會丟失分支信息。由於在這個過程當中沒有建立commit。

30. git merge --no-ff <branch name>

和上一條命令的區別在於下圖

git merge --no-ff
會保存分支的全部 commit-id , 併產生一次新的提交

Git Tag

tag 的做用是對某個提交點打上標籤,發佈版本後打tag,便於之後回滾特定版本。tag 是對某一版本的記錄,tag就是一個只讀的 branch ,通常爲每個可發佈的里程碑版本打一個tag

31. git tag v1.1.0

在本地對當前分支打 tag

32. git push origin --tag

將建立的 tag 提交至遠端

33. git tag -d v1.0.0

刪除本地tag

34. git push --delete origin v1.0.0

刪除遠端的 tag

35. git show <tag name>

git tag
記錄了對應的 commi-id 能夠直接用於回滾使用

Git 與 SVN 操做對比

git vs svn

SVN Git 說明
svn checkout git clone 檢出項目
svn update git pull git fetch 更新
svn commit git commit git push 提交
svn add git add 添加
svn mv git mv 移動
svn rm git rm 刪除
svn status git status 查看狀態
svn log git log 查看log
svn diff git diff 查看差別
svn revert git checkout git reset git revert 回滾 、撤銷
svn copy git branch 且分支
svn switch git checkout 切換分支
svn copy git tag 建立tag
svn merge git merge 合併分支

參考文檔

  1. Git 經常使用操做總結
  2. 優雅的提交你的 Git Commit Message
  3. Angular 團隊的git規範
  4. Git 教程
相關文章
相關標籤/搜索