1. 程式人生 > >工作中常用Git指令操作

工作中常用Git指令操作

line 文件路徑 res 系列 wid AR 探討 diff 輕量

常用Git指令總結

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

技術分享圖片

一、GIt的alias

  1.先來說說自己比較喜歡用的簡寫指令,可根據個人自行配置,下圖是本人自己工作常用的git簡寫:

技術分享圖片

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

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

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

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

  等一系列簡寫操作,不用敲一大堆指令出來,高效。雖然看起來沒什麽,但是工作中非常頻繁的使用這些操作,如果能用簡寫的話其實能提高我們的辦公效率。

  (PS: 但是平時也看到過一些有工作經歷的同事還是使用git checkout ,git status, git branch -d等等,我這就不知道其中的原因了)

  歡迎補充自己常用的簡寫指令,大家相互補充。

二、常用指令描述

  1.基本開發流程

   以下是簡寫:st = status, co = checkout, br = branch, ci = commit

    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也可以是利用自己理解區分的英文。這樣取名的話有利用區分自己的這些分支的含義,便於管理。我覺得這是個好方法。

三、小技巧

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

技術分享圖片

  平時比如剛好在命令行,編輯器剛好被我們最小化了,直接使用“code .”就能快捷打開。這是我自己比較喜歡的使用的小技巧,如果你也覺得不錯,趕緊去試試吧。

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

總結

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

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

  相關文章的鏈接:https://juejin.im/post/5844507761ff4b006c3359a9 --Gitflow

工作中常用Git指令操作