使用Git管理項目 使用總結(jié)

此文作為在工作工使用git的一篇筆記防止遺忘鸽斟。長期更新,如果有錯誤妈橄,請指正,不勝感激赞庶。

工欲善其事必先利其器训挡,我同時使用的git命令行和GUI的方式使用git,原因是:命令行在多分支查看與多文件提交時歧强,比對效率不如gui工具高澜薄;但是GUI的功能上不如命令行強大,某些操作速度上不如命令行快摊册。
我處理命令行g(shù)it外肤京,用的GUI工具主要有兩個,一個是jetbrains家族軟件的idea自帶的git插件茅特,一個是GitKraken(界面比較華麗忘分,專業(yè)版收費,個人使用免費版本就行)

系列文章:
1白修、《git入門教程》http://www.reibang.com/p/d22d1a517f93

安裝好git后的的第一步(如果不設(shè)置后面不允許提交):

git config --global user.email "bsqql123@163.com"
git config --global user.name "ice blue"

1妒峦、基礎(chǔ)命令

由于是基礎(chǔ)命令,就不進行介紹了兵睛,很多文章都介紹的比較詳細肯骇。

git config --list 查看當(dāng)前的配置
git add .
git commit -m "init" # init 為你的提交信息,可以任意填寫祖很,但是團隊開發(fā)時建議制定規(guī)范笛丙,并按規(guī)范填寫。

2 假颇、快捷命令

對于已經(jīng)加入緩存區(qū)中的文件胚鸯,可以使用git commit -am ""# 省去了git add .這一步操作。
從緩存區(qū)移除 ,文件拆融。
git rm --cache <file>

展示所有被追蹤的文件
git ls-files -t

git push origin

上面命令表示蠢琳,將當(dāng)前分支推送到origin主機的對應(yīng)分支。如果當(dāng)前分支只有一個追蹤分支镜豹,那么主機名都可以省略傲须。如下:

git push

git branch --set-upstream my_branch origin/my_branch 這條命名設(shè)置遠程追蹤。

常用的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)創(chuàng)建分支

git branch mystudygit1.0

創(chuàng)建分支并且切換到分支
git branch -b mystudygit1.0
創(chuàng)建指定版本的分支,并且切換到此分支(-b表示切換的意思)
git checkout -b name-of-new-branch 169d2dc

git checkout -- file 表示將已經(jīng)加入 緩存區(qū)的文件的改動刪除已卸,用的比較少佛玄,具體參考如下鏈接:
http://www.cnblogs.com/Calvino/p/5930656.html

  1. 切換分支
    git checkout mystudygit1.0

  2. 刪除分支
    git branch -d mystudygit1.0 //如果該分支沒有合并到主分支會報錯
    或者
    git branch -D mystudygit1.0 //強制刪除

刪除本地遠程分支
git branch -r -d origin/branch-name
刪除服務(wù)器遠程分支

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> 命令

如果發(fā)生了沖突愧哟,需要手工解決沖突奥吩,
然后使用 git cherry-pick --continue 告知 git 已經(jīng)解決完沖突或者
使用 git cherry-pick --abort 取消,並且回到 cherry-pick 前的狀態(tài)

要選擇多個提交蕊梧,可以給git cherry-pick命令傳遞-n選項霞赫,比如:

git cherry-pick –n 321d76f
git cherry-pick –n c87fc86

此時所有的321d76f 版本會應(yīng)用到當(dāng)前的暫存區(qū)和工作目錄但是不會提交,head指針不會發(fā)生移動肥矢。改變
這樣在揀選了這個改動之后端衰,進行暫存而不立即提交,接著可以進行下一個揀選操作甘改,一旦揀選完需要的各個提交旅东,就可以使用git commit命令 一并提交。

idea 自帶git插件rebase楼誓,rebase操作:

image.png

點擊右下角的git:xxx 即可出來彈窗玉锌。

image.png

如果出現(xiàn)沖突的換會出現(xiàn)類似彈窗名挥。

image.png

雙擊文件名稱即可進行手工解決沖突疟羹,idea非常人性化的對比文件

image.png

點擊圖中箭頭即可accept代碼。
中間為合并的版本禀倔,最右邊為遠程版本榄融,圖中也顯示了出來。具體可以操作一下試試救湖。

image.png

apply all non-confliction changes 這個功能也是十分的好用愧杯。

當(dāng)然可以手工操作,不過覺得界面操作更為快捷鞋既,解決沖突更易力九。

參考文檔:https://git-scm.com/docs/git-cherry-pick

4、git規(guī)范

rebase準(zhǔn)則:

“No one shall rebase a shared branch”?—?Everyone about rebase
mingl
翻譯一下就是:
不要在公共分支上rebase邑闺,因為會使分支變得混亂跌前。

具體參見:
https://github.com/wxyyxc1992/Coder-Essentials/blob/master/VersionControl/Git/Branch/Rebase/git-rebase-and-the-gloden-rule-explained.md

5、開發(fā)流程

在工作中陡舅,用git管理項目需要走一下流程抵乓。

1、Release分支: 穩(wěn)定分支,由master leader 負(fù)責(zé)merge灾炭。用于生產(chǎn)環(huán)境的部署茎芋。

2、Master分支: 開發(fā)分支蜈出。定期 merge 到 release 分支田弥。

3、Pre分支:預(yù)生產(chǎn)分支铡原,測試通過后皱蹦,可以申請merge到master分支。Pre 分支用于 Preview 環(huán)境的部署眷蜈。

4沪哺、Feature 分支:開發(fā)分支。開發(fā)完后 cherry-pick 到 staging 分支進行測試酌儒,測試通過后 cherry-pick 到 Pre 分支進行 Preview 環(huán)境的測試辜妓。feature 分支名以 feature_ 開頭,后面跟簡短的英文說明忌怎。比如籍滴,某次修改為了添加測試,可將分支名命名為 feature_add_unit_tests 榴啸。

git config --global user.email "bsqql123@163.com"
git config --global user.name "ice blue"

git reflog 可以查看歷史操作命令孽惰,非常好用。

image.png

git reset --soft sha-id 即可返回到指定操作前鸥印。

pull request 的操作步驟勋功,首先完成提交后,一定要記得rebase 公共分支代碼库说,
比如我在
dev分支checkout的feature分支狂鞋,commit后,pull request前記得rebase dev分支的代碼潜的。

當(dāng) pull request后骚揍,別人審核你的代碼不通過,這時你要重新修改啰挪,可以使用

git add <file> #一定要先把文件放到暫存區(qū)
然后使用
git commit --amend
這個命令信不,只能修改最后一次提交,如果想修改前幾次的提交亡呵,請使用reset抽活。

操作步驟

git fetch
git rebase -i dev

或者使用更為簡潔的命令:

git pull --rebase devx

常見問題:

! [rejected] dev -> dev (non-fast-forward)
一般出現(xiàn)這個問題是由于本地遠程分支和服務(wù)遠程分支不同步造成的,
有兩種解決辦法:
1政己、強制推送到遠程
2酌壕、先fetch 后merger掏愁,或者直接git pull

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卵牍,隨后出現(xiàn)的幾起案子果港,更是在濱河造成了極大的恐慌,老刑警劉巖糊昙,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辛掠,死亡現(xiàn)場離奇詭異,居然都是意外死亡释牺,警方通過查閱死者的電腦和手機萝衩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來没咙,“玉大人猩谊,你說我怎么就攤上這事〖栏眨” “怎么了牌捷?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涡驮。 經(jīng)常有香客問我暗甥,道長,這世上最難降的妖魔是什么捉捅? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任撤防,我火速辦了婚禮,結(jié)果婚禮上棒口,老公的妹妹穿的比我還像新娘寄月。我一直安慰自己,他們只是感情好陌凳,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布剥懒。 她就那樣靜靜地躺著,像睡著了一般合敦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上验游,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天充岛,我揣著相機與錄音,去河邊找鬼耕蝉。 笑死崔梗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的垒在。 我是一名探鬼主播蒜魄,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谈为?” 一聲冷哼從身側(cè)響起旅挤,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伞鲫,沒想到半個月后粘茄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡秕脓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年柒瓣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吠架。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡芙贫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出傍药,到底是詐尸還是另有隱情屹培,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布怔檩,位于F島的核電站褪秀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏薛训。R本人自食惡果不足惜媒吗,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乙埃。 院中可真熱鬧闸英,春花似錦、人聲如沸介袜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遇伞。三九已至辙喂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸠珠,已是汗流浹背巍耗。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渐排,地道東北人炬太。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像驯耻,于是被迫代替她去往敵國和親亲族。 傳聞我的和親對象是個殘疾皇子炒考,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • git 指南 git操作 本地操作 git add <file>暫存工作區(qū)的修改到暫存區(qū) git commit將暫...
    IrisZL閱讀 583評論 0 0
  • 以下筆記主要參考gitgot,大致了解git使用和原理霎迫。 第一部分我們從個人的視角去研究如何用好Git斋枢,并且揭示G...
    carolwhite閱讀 2,379評論 0 1
  • git常用命令總結(jié)[https://www.cnblogs.com/fanyegong/p/5127780.htm...
    G__yuan閱讀 789評論 0 2
  • 本文針對初級用戶,從最簡單的講起女气,但是需要讀者對Git的基本用法有所了解杏慰。 Git是開源的分布式版本控制系統(tǒng),...
    Sachie閱讀 1,151評論 0 2
  • Add & Commit git init 初始化一個 Git 倉庫(repository)炼鞠,即把當(dāng)前所在目錄變成...
    冬絮閱讀 4,832評論 0 9