使用Git管理專案 使用總結
此文作為在工作工使用git的一篇筆記防止遺忘。長期更新,如果有錯誤,請指正,不勝感激。
工欲善其事必先利其器,我同時使用的git命令列和GUI的方式使用git,原因是:命令列在多分支檢視與多檔案提交時,比對效率不如gui工具高;但是GUI的功能上不如命令列強大,某些操作速度上不如命令列快。
我處理命令列git外,用的GUI工具主要有兩個,一個是jetbrains家族軟體的idea自帶的git外掛,一個是GitKraken(介面比較華麗,專業版收費,個人使用免費版本就行)
系列文章:
1、《git入門教程》http://www.jianshu.com/p/d22d1a517f93
安裝好git後的的第一步(如果不設定後面不允許提交):
git config --global user.email "bsqql123@163.com"
git config --global user.name "ice blue"
1、基礎命令
由於是基礎命令,就不進行介紹了,很多文章都介紹的比較詳細。
git config --list 檢視當前的配置
git add .
git commit -m "init" # init 為你的提交資訊,可以任意填寫,但是團隊開發時建議制定規範,並按規範填寫。
2 、快捷命令
對於已經加入快取區中的檔案,可以使用git commit -am ""# 省去了git add .這一步操作。
從快取區移除 ,檔案。
git rm --cache <file>
展示所有被追蹤的檔案
git ls-files -t
git push origin
上面命令表示,將當前分支推送到origin主機的對應分支。如果當前分支只有一個追蹤分支,那麼主機名都可以省略。如下:
git push
git branch --set-upstream my_branch origin/my_branch 這條命名設定遠端追蹤。
常用的alias:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"
git config --global alias.co checkout
git config --global alias.st status
git rebase -i
git checkout -b name-of-new-branch 169d2dc
檢視全域性的配置(包括alias):
git config --global --list
3、分支管理
分支管理是git比較有特色的地方。
下面介紹一些常用的git 分支操作命令。
1)建立分支
git branch mystudygit1.0
建立分支並且切換到分支
git branch -b mystudygit1.0
建立指定版本的分支,並且切換到此分支(-b表示切換的意思)
git checkout -b name-of-new-branch 169d2dc
git checkout -- file 表示將已經加入 快取區的檔案的改動刪除,用的比較少,具體參考如下連結:
http://www.cnblogs.com/Calvino/p/5930656.html
切換分支
git checkout mystudygit1.0刪除分支
git branch -d mystudygit1.0 //如果該分支沒有合併到主分支會報錯
或者
git branch -D mystudygit1.0 //強制刪除
刪除本地遠端分支
git branch -r -d origin/branch-name
刪除伺服器遠端分支
1、git push origin :<branch-name>
或
2 、git push origin --delete <branchName>
3、git 推送本地分支test
到遠端feature_add_querymodel
git push origin test:feature_add_querymodel
4、重新命名分支git branch -m devel develop
git cherry <sha1> 命令
如果發生了衝突,需要手工解決衝突,
然後使用 git cherry-pick --continue 告知 git 已經解決完衝突或者
使用 git cherry-pick --abort 取消,並且回到 cherry-pick 前的狀態
要選擇多個提交,可以給git cherry-pick命令傳遞-n選項,比如:
git cherry-pick –n 321d76f
git cherry-pick –n c87fc86
此時所有的321d76f 版本會應用到當前的暫存區和工作目錄但是不會提交,head指標不會發生移動。改變
這樣在揀選了這個改動之後,進行暫存而不立即提交,接著可以進行下一個揀選操作,一旦揀選完需要的各個提交,就可以使用git commit命令 一併提交。
idea 自帶git外掛rebase,rebase操作:
點選右下角的git:xxx 即可出來彈窗。
如果出現衝突的換會出現類似彈窗。
雙擊檔名稱即可進行手工解決衝突,idea非常人性化的對比檔案
點選圖中箭頭即可accept程式碼。
中間為合併的版本,最右邊為遠端版本,圖中也顯示了出來。具體可以操作一下試試。
apply all non-confliction changes 這個功能也是十分的好用。
當然可以手工操作,不過覺得介面操作更為快捷,解決衝突更易。
參考文件:https://git-scm.com/docs/git-cherry-pick
4、git規範
rebase準則:
“No one shall rebase a shared branch” — Everyone about rebase
mingl
翻譯一下就是:
不要在公共分支上rebase,因為會使分支變得混亂。
5、開發流程
在工作中,用git管理專案需要走一下流程。
1、Release分支: 穩定分支,由master leader 負責merge。用於生產環境的部署。
2、Master分支: 開發分支。定期 merge 到 release 分支。
3、Pre分支:預生產分支,測試通過後,可以申請merge到master分支。Pre 分支用於 Preview 環境的部署。
4、Feature 分支:開發分支。開發完後 cherry-pick 到 staging 分支進行測試,測試通過後 cherry-pick 到 Pre 分支進行 Preview 環境的測試。feature 分支名以 feature_ 開頭,後面跟簡短的英文說明。比如,某次修改為了新增測試,可將分支名命名為 feature_add_unit_tests 。
git config --global user.email "bsqql123@163.com"
git config --global user.name "ice blue"
git reflog 可以檢視歷史操作命令,非常好用。
git reset --soft sha-id 即可返回到指定操作前。
pull request 的操作步驟,首先完成提交後,一定要記得rebase 公共分支程式碼,
比如我在
dev分支checkout的feature分支,commit後,pull request前記得rebase dev分支的程式碼。
當 pull request後,別人稽核你的程式碼不通過,這時你要重新修改,可以使用
git add <file> #一定要先把檔案放到暫存區
然後使用
git commit --amend
這個命令,只能修改最後一次提交,如果想修改前幾次的提交,請使用reset。
操作步驟
git fetch
git rebase -i dev
或者使用更為簡潔的命令:
git pull --rebase devx
常見問題:
! [rejected] dev -> dev (non-fast-forward)
一般出現這個問題是由於本地遠端分支和服務遠端分支不同步造成的,
有兩種解決辦法:
1、強制推送到遠端
2、先fetch 後merger,或者直接git pull
相關文章
- 專案中git 多分支使用總結Git
- Webstorm 使用 Git 管理專案WebORMGit
- windows下使用git管理github專案WindowsGithub
- Git 使用總結Git
- Git使用總結Git
- git的使用總結Git
- 使用Git進行小專案程式碼管理Git
- 【Vue專案總結】後臺管理專案總結Vue
- git篇--入職初期如何使用Git進行專案管理--01Git專案管理
- 使用Git上傳專案Git
- Git Flow 使用經驗總結Git
- 如何在Github上使用Git subtree來管理父子專案Github
- Git和github使用方法總結Github
- 幾年的Git使用技巧總結Git
- TypeScript在React專案中的使用總結TypeScriptReact
- 專案(Explore)總結之專案風險管理
- 專案(Explore)總結之專案整合管理
- 專案管理之---競投專案總結(轉)專案管理
- 黑猴子的家:IDEA 使用 Git 進行專案管理IdeaGit專案管理
- 專案管理PMP過關總結專案管理
- 專案中的 Git 使用規範Git
- 使用git工具上傳本地專案Git
- 專案(Explore)總結之專案溝通管理
- 專案(Explore)總結之專案質量管理
- 專案(Explore)總結之專案費用管理
- 專案(Explore)總結之專案時間管理
- 專案(Explore)總結之專案範圍管理
- Redis在專案中合理使用經驗總結Redis
- Java專案中MongoDb學習和使用總結JavaMongoDB
- vue專案使用微信公眾號支付總結Vue
- 專案(FBMS)總結-管理篇(4)
- 專案(FBMS)總結-管理篇(3)
- 專案(FBMS)總結-管理篇(2)
- 專案(FBMS)總結-管理篇(1)
- 專案(Explore)總結之專案人力資源管理
- maven 學習總結(三)——使用Maven構建專案Maven
- 專案中的 Git 使用規範 [轉]Git
- 使用Git命令列clone一個專案Git命令列