工做中經常使用Git指令操做

經常使用Git指令總結

  前陣子有幾天好不順,可謂是喝水都嗆着,更況且被Git給嗆着了,還不輕,哈哈。因此打算總結一下本身在工做使用到Git相關的東西以及和你們探討使用GIt的心得體會。因而,關於Git的的文章也就呼之欲出,總結外加研究一些難啃的指令、Git工做流,後期會慢慢更新。git

Git命令

1、GIt的alias

  1.先來講說本身比較喜歡用的簡寫指令,可根據我的自行配置,下圖是本人本身工做經常使用的git簡寫:app

  2.像這樣使用:  git st ---查看文件提交狀態 編輯器

          git ci -m "提交信息說明" ---提交post

          git br -d branchName ---刪除本地分支fetch

          git co -b branchName ---切除新分支並跳到該分支上spa

  等一系列簡寫操做,不用敲一大堆指令出來,高效。雖然看起來沒什麼,可是工做中很是頻繁的使用這些操做,若是能用簡寫的話其實能提升咱們的辦公效率。命令行

  (PS: 可是平時也看到過一些有工做經歷的同事仍是使用git checkout ,git status, git branch -d等等,我這就不知道其中的緣由了)code

  歡迎補充本身經常使用的簡寫指令,你們相互補充。blog

2、經常使用指令描述

   1.基本開發流程

    如下是簡寫:st = status, co = checkout, br = branch, ci = commitci

    git co -b BranchName  --切出一個新分支,進入開發

    git st  --查看當前分支的文件修改狀態

    git diff  --查看哪些文件被修改了哪些部分,指令後面能夠接具體的文件路徑

    git add 「具體文件路徑」  --將文件添加到暫存區

    git add .  --此時使用點「.」表示將全部的修改的文件添加到暫存區,方便快捷。

    git ci -m "修改說明"  --提交commit

    git pull origin BranchName  --拉取遠程分支代碼到當前分支上,若是出現衝突,解決便可。

    git push origin BranchName  --將本地分支代碼推到遠程的對應分支。(PS: 若是有衝突解決後須要從新add和commit,再push)

    以上就是在開發過程當中本身經常使用的流程切分支進入開發-> 開發完成後查看修改文件狀態-> diff對比修改了文件的哪些部分-> 提交commit->推到遠程分支

   解釋:a. 若是功能須要幾天才能開發完成,能夠分幾回commit,能夠防止開發的代碼被本身不當心改動;git pull也能夠用git fetch 和git merge 來代替。

    b. 也可使用git stash和git stash apply來暫存已修改的代碼,從而不用爲了執行git pull而去執行add和commit。

    c. 當多人協同開發的時候,同事可能天天都會往該遠程開發分支提交代碼;因此建議天天最好有1次以上的git pull操做,這樣不會到後期合併的時候衝突太多。

  2.基本git操做

    因爲Git的指令用於強大和複雜,在這裏介紹的就是本身一些經常使用的操做,若是你有本身更好的操做方法,歡迎補充完善。

    新建和切換分支

     git co -b BranchName  --新建分支並切換到該分支上

     git br -d  BranchName  --刪除某本地分支 (PS: 當「-d」換成"-D"表示強制刪除)

     git co -b branchName origin/remoteBranch  --新建切換到該分支上,並關聯遠程remoteBranch分支。(本身比較經常使用的操做)

    push和pull操做

     git push origin :BranchName  --刪除遠程分支BranchName(空格後面接的是英文冒號哦;其含義就是將一個空分支推到遠程該分支上,很好理解。)

     git push origin -d BranchName  --這也是用於刪除遠程分支的。

     git push origin localBranch:remoteBranch   --將本地分支推到遠程分支上,若是遠程分支上不存在remoteBranch,則會自動建立該遠程分支。

     git push origin remoteBranch  --也可簡寫成這樣。若是當前分支與遠程某分支關聯後直接可以使用git push。

     git pull origin remoteBranch:localBranch  --pull相似於push,可是指令是值將遠程remoteBranch分支拉取到localBranch分支上,位置關係恰好和push相反

     git pull origin remoteBranch  --將遠程remoteBranch分支pull到當前分支。

    分支合併

     git merge branchName  --將branchName分支合併到當前分支上

     "git merge branchName --no-ff"   --不使用fast-forward模式合併,合併後會生成一個合併提交id。 

     git merge origin/branchName  --合併遠程分支

    工做區的撤銷

     git co "文件src"  --針對某個具體文件撤銷其在工做區的全部修改。(是在只保存而並無執行add和commit操做)

     git co .  --撤銷工做區全部的文件的修改。(也是隻沒有執行add和commit)

    暫存區 -> 工做區

     git reset "文件src" 或 git reset HEAD "文件src"  --都是指將暫存區的修改撤銷到工做區。

     「git reset -- . 」   --是指將暫存區的全部修改撤回到工做區.

    git本地倉庫提交 -> 工做區

     git reset —hard HEAD^  --回退到上一次提交(也即上一次提交)

     git reset —hard  commitID  --回退到某一次具體的提交。

    暫存操做

     git stash  --當不想執行add和commit而急需切換分支或者拉取遠程代碼時,使用這個指令能將本地的修改暫存起來

     git stash pop  --當執行完拉取相關操做回到該分支,該指令能將以前暫存的代碼還原。

    查看提交記錄

     git log   --列舉每次提交的詳細信息,包括提交人姓名。

     git reflog  --詳細列出了用戶的每一個細節操做,包括切換分支,用戶提交等信息。

     「git log --oneline --graph --decorate --all」   --以命令樹的形式展現提交信息,(最好配置alias,這樣就不用寫這麼多了。我配置的是:git tree)

    比較修改差別

     git diff   --展現全部改動文件的修改部分。

     git diff "文件src"   --展現該文件改動哪些部分。

     git diff commit1 commit2 --stat   --比較這兩次提交有哪些不一樣。

     git diff commit1 commit2 「文件src」   --比較這兩次提交下,該文件被修改的部分。

  3.開發分支命名

    看到一篇Gitflow文章,借用其對各個分支命名的規則。根據不一樣類型的工做對分支進行定義, 分爲功能(feature)分支 ,修復(fixbugs)分支,發佈(release)分支,開發(develop)分支和主分支 。

    本身以前對於分支的命名多半是比較隨性,或者根據本身的偏好來取名。如今的話,能夠根據不一樣的類型來對分支進行命名,好比是

      功能開發分支能夠是feature-1.0,

      修復bugs分支可使fixbugs-1.0,

      發佈分支叫release-1.0,

      開發分支叫develop等等。

後面的1.0也能夠是利用本身理解區分的英文。這樣取名的話有利用區分本身的這些分支的含義,便於管理。我以爲這是個好方法。

3、小技巧

  1.本人使用的是VScode,相信不少人使用,它輕量、可配置、漂亮的主題等等許多優勢。當使用VScode編輯器時,命令行cd到對應的項目的時候,再使用「code .」回車VScode就自動打開項目了。有圖有真相:

 

  平時好比恰好在命令行,編輯器恰好被咱們最小化了,直接使用「code .」就能快捷打開。這是我本身比較喜歡的使用的小技巧,若是你也以爲不錯,趕忙去試試吧。

  (PS: 同時也可使用「open .」打開項目對應的文件夾。)

總結

  Git指令博大精神,本文也只是介紹本身最經常使用的一些指令和小技巧,還有些指令還沒涉及到好比:fetch,rebase,revert等等。本身用rebase比較少,因此不敢多作敘述誤人子弟。文中若有紕漏或者改進之處,熱烈歡迎留言。

  PS: 感受篇幅有點長,不知道會不會看着乏味,歡迎各位園友指正。

  相關文章的連接:http://www.javashuo.com/article/p-svegvqgk-gn.html  --Gitflow

相關文章
相關標籤/搜索