前陣子有幾天好不順,可謂是喝水都嗆着,更況且被Git給嗆着了,還不輕,哈哈。因此打算總結一下本身在工做使用到Git相關的東西以及和你們探討使用GIt的心得體會。因而,關於Git的的文章也就呼之欲出,總結外加研究一些難啃的指令、Git工做流,後期會慢慢更新。git
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
如下是簡寫: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操做,這樣不會到後期合併的時候衝突太多。
因爲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」 --比較這兩次提交下,該文件被修改的部分。
看到一篇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: 感受篇幅有點長,不知道會不會看着乏味,歡迎各位園友指正。
相關文章的連接:http://www.javashuo.com/article/p-svegvqgk-gn.html --Gitflow