iOS Git分支操作

一合愈、本地分支

  • 1颅崩、創(chuàng)建分支
    git branch name
eg:
$ git branch testing
  • 2呻疹、切換分支
    git checkout name
eg:
$ git checkout testing


  • 3吃引、新建分支處理問題
    比如現(xiàn)在有一個需要處理的issue,并且命名為issue20刽锤,這個時候我們創(chuàng)建一個分支并且修復(fù)他可以這樣子
git checkout -b issue20

這里我們加上了-b這個參數(shù)镊尺,起代表的意思是:
創(chuàng)建一個分支,并且選擇他

$ git branch issue20
$ git checkout issue20



假設(shè)我們已經(jīng)把issue20修復(fù)完成了并思,這個時候我們要把分支修改后的內(nèi)容合并到master分上面去

  • 4庐氮、合并分支
    • 1、回到你要合并的分支
    • 2宋彼、使用merge指令
$ git checkout '輸入要回到的分支名稱'
$ git merge '要合并的分支名稱'

eg:
$ git checkout master
$ git merge testing

請注意弄砍,合并時出現(xiàn)了“Fast forward”的提示。由于當(dāng)前 master 分支所在的提交對象是要并入的 testing 分支的直接上游输涕,Git 只需把 master 分支指針直接右移输枯。換句話說,如果順著一個分支走下去可以到達另一個分支的話占贫,那么 Git 在合并兩者時桃熄,只會簡單地把指針右移,因為這種單線的歷史分支不存在任何需要解決的分歧型奥,所以這種合并過程可以稱為快進(Fast forward)瞳收。



合并完成之后,對于我們修復(fù)bug的那個分支已經(jīng)不需要存在了厢汹,就可以把起刪除掉


  • 5螟深、刪除分支
    git branch -d name
eg:
$ git branch -d testing

但是在項目中合并可能不會那么容易,如果遇到的合并分支的沖突

$ git merge issue20
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.



如何查看沖突文件烫葬?

  • 6界弧、查看沖突文件
$ git status

任何包含未解決沖突的文件都會以未合并(unmerged)的狀態(tài)列出。Git 會在有沖突的文件里加入標準的沖突解決標記搭综,可以通過它們來手工定位并解決這些沖突垢箕。可以看到此文件包含類似下面這樣的部分:

<<<<<<< HEAD
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
  please contact us at support@github.com
</div>
>>>>>>> issue20

可以看到=======隔開的上半部分兑巾,是 HEAD(即 master 分支条获,在運行 merge 命令時所切換到的分支)中的內(nèi)容,下半部分是在 issue20 分支中的內(nèi)容蒋歌。解決沖突的辦法無非是二者選其一或者由你親自整合到一起帅掘。比如你可以通過把這段內(nèi)容替換為下面這樣來解決:

<div id="footer">
please contact us at email.support@github.com
</div>

這個解決方案各采納了兩個分支中的一部分內(nèi)容委煤,而且我還刪除了 <<<<<<<,======= 和 >>>>>>> 這些行修档。在解決了所有文件里的所有沖突后碧绞,運行 git add 將把它們標記為已解決狀態(tài)
(譯注:實際上就是來一次快照保存到暫存區(qū)域。)吱窝。因為一旦暫存头遭,就表示沖突已經(jīng)解決。如果你想用一個有圖形界面的工具來解決這些問題癣诱,不妨運行 git mergetool计维,它會調(diào)用一個可視化的合并工具并引導(dǎo)你解決所有沖突:

$ git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare vimdiff emerge
Merging:
index.html

Normal merge conflict for 'index.html':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (opendiff):

如果不想用默認的合并工具(Git 為我默認選擇了 opendiff,因為我在 Mac 上運行了該命令)撕予,你可以在上方"merge tool candidates"里找到可用的合并工具列表鲫惶,輸入你想用的工具名。我們將在第七章討論怎樣改變環(huán)境中的默認值实抡。

退出合并工具以后欠母,Git 會詢問你合并是否成功。如果回答是吆寨,它會為你把相關(guān)文件暫存起來赏淌,以表明狀態(tài)為已解決。

再運行一次 git status 來確認所有沖突都已解決:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   index.html

如果覺得滿意了啄清,并且確認所有沖突都已解決六水,也就是進入了暫存區(qū),就可以用git commit來完成這次合并提交辣卒。提交的記錄差不多是這樣:

Merge branch 'issue20'

Conflicts:
  index.html
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
#       .git/MERGE_HEAD
# and try again.
#

如果想給將來看這次合并的人一些方便掷贾,可以修改該信息,提供更多合并細節(jié)荣茫。
比如你都作了哪些改動想帅,以及這么做的原因。有時候裁決沖突的理由并不直接或明顯啡莉,有必要略加注解港准。


  • 7、查看分支列表
$ git branch

branch

其中綠色前面帶*號的表示當(dāng)前選中的分支


  • 8咧欣、查看分支列表以及分支信息
$ git branch -v
branch info


  • 9浅缸、查看那些分支還未/已合并

已合并,通常我們?yōu)榱颂幚砟硞€問題而開的分支,在合并之后就可以刪除了

eg:
$ git branch --merged

未合并该押,如果刪除未合并的分支會報錯疗杉,因為那樣子會數(shù)據(jù)丟失,但是如果你執(zhí)意刪除可以使用-D來進行刪除

eg:
$ git branch --no-merged


二蚕礼、遠程分支

當(dāng)我們需要協(xié)同開發(fā)的時候烟具,我們通常會一個發(fā)布通道,一個測試通道以及一個正在開發(fā)的通道奠蹬。

發(fā)布通道中我們會把測試ok的代碼合并到里面去朝聋,然后我們新編寫的功能開發(fā)完成就會加入測試分支。

類似于下面這樣子,作者自己畫的囤躁,有點丑……見諒

Git分支管理.png


  • 1冀痕、新建遠程分支
    可以分為兩步,第一步新創(chuàng)建本地分支狸演,第二步把本地分支push到服務(wù)器上去
eg:
$ git branch haha

eg:
$ git push origin haha


  • 2言蛇、下拉指定分支
git checkout --track origin/testbranch

如果你從服務(wù)器上面下拉分支的時候出現(xiàn)了
fatal: 'origin/testbranch' is not a commit and a branch 'testbranch' cannot be created from it
這種錯誤,那么就可以使用

重點:

git fetch origin 來同步遠程服務(wù)器上的數(shù)據(jù)到本地

然后在下拉一次

$ git checkout --track origin/testbranch

Branch testbranch set up to track remote branch testbranch from origin.
Switched to a new branch 'testbranch'

看到Switched to a new branch 'xxx'這樣子的字樣就說明成功了


  • 3宵距、提交數(shù)據(jù)到指定分支
    git push origin 分支名稱

git push origin haha
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 260 bytes | 260.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
...


  • 4腊尚、刪除指定分支
    git push origin :分支名稱
 git push origin :haha
remote: Powered by Gitee.com
To gitee.com:codepgq/EIQ-Smart.git
 - [deleted]         haha




三、合并分支的指定文件

假設(shè)現(xiàn)在有兩個分支:jack满哪、smith婿斥,
然后在jack中新建了兩個文件(a.c 和 b.c)
這個時候想把b.c合并到smith中

  • 首先在jack 這里如果你沒提交有可能會丟失數(shù)據(jù)
git add . 
git commit -m "xxxxx"
  • 然后就要切換分支
git checkout simith
  • 再把要合并的文件,導(dǎo)入到當(dāng)前的分支中
    git checkout 分支名 文件路徑
git checkout jack b.c
這里需要注意哨鸭,因為b.c就在根文件民宿,所以不需要路徑只需要文件名,
但是如果你的文件在子文件夾內(nèi)像鸡,就需要把文件路徑也導(dǎo)入進來


更新:2018年11月06日

如何切換Git的源(當(dāng)個人項目轉(zhuǎn)移到公司賬號下或者修改了項目名稱)

碼云
git remote set-url origin [git@gitee.com](mailto:git@gitee.com):地址.git


github
git remote set-url origin [git@github.com](mailto:git@github.com):地址.git
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末活鹰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子只估,更是在濱河造成了極大的恐慌华望,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仅乓,死亡現(xiàn)場離奇詭異赖舟,居然都是意外死亡,警方通過查閱死者的電腦和手機夸楣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門宾抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豫喧,你說我怎么就攤上這事石洗。” “怎么了紧显?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵讲衫,是天一觀的道長。 經(jīng)常有香客問我,道長涉兽,這世上最難降的妖魔是什么招驴? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮枷畏,結(jié)果婚禮上别厘,老公的妹妹穿的比我還像新娘。我一直安慰自己拥诡,他們只是感情好触趴,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渴肉,像睡著了一般冗懦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仇祭,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天披蕉,我揣著相機與錄音,去河邊找鬼前塔。 笑死嚣艇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的华弓。 我是一名探鬼主播食零,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寂屏!你這毒婦竟也來了贰谣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤迁霎,失蹤者是張志新(化名)和其女友劉穎吱抚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體考廉,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡秘豹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昌粤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片既绕。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涮坐,靈堂內(nèi)的尸體忽然破棺而出凄贩,到底是詐尸還是另有隱情,我是刑警寧澤袱讹,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布疲扎,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏椒丧。R本人自食惡果不足惜壹甥,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓜挽。 院中可真熱鬧盹廷,春花似錦征绸、人聲如沸久橙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淆衷。三九已至,卻和暖如春渤弛,著一層夾襖步出監(jiān)牢的瞬間祝拯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工她肯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佳头,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓晴氨,卻偏偏與公主長得像康嘉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子籽前,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

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

  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照亭珍,而是把代碼倉庫完整的鏡像下來。這樣一來枝哄,任何一處協(xié)同...
    __silhouette閱讀 15,899評論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照肄梨,而是把代碼倉庫完整的鏡像下來...
    sunnyghx閱讀 3,929評論 0 11
  • 星期四,就要去長沙挠锥。 今天一整天希希兒都在告訴我众羡,大家沒有忘記我,大家都歡迎我蓖租,讓我不要有心理壓力粱侣。 我放了心,卻...
    羥羊閱讀 303評論 0 1
  • 四月不減肥,五月會怎樣菜秦?
    娜年時光閱讀 230評論 0 0