git之創(chuàng)建分支漫贞,合并分支,解決沖突

程序項目的分支

開發(fā)程序項目過程中育叁,我們可能需要從原來的程序項目中分出另一個項目來修改迅脐,這個操作成為branch。

在Git文檔庫中創(chuàng)建分支需要使用"git branch"指令

  • 在切換分支的時候豪嗽,Git會先對比文檔庫中當前分支的文件內(nèi)容是否和將要切換過去的分支文件相同谴蔑。針對不同文件,Git需要從文檔庫中取出該文件龟梦,這是為了讓文件夾中的文件符合分支原來的狀態(tài)隐锭。但是為了避免數(shù)據(jù)意識,當Git要覆蓋文件夾中的文件時计贰,會檢測該文件的內(nèi)容是否已經(jīng)加入文檔庫钦睡。如果還沒有加入,Git會顯示警告信息躁倒,并且停止執(zhí)行荞怒,以免資料遺失 。如果確定不想保留這些已經(jīng)修改秧秉,卻還沒有加入文檔庫的文件褐桌,可以換成執(zhí)行"git checkout -f+分支名",Git就會強制覆蓋修改后的文件象迎。

  • 除了被tracked的文件以外荧嵌,對于untracked和ignored的文件,Git都不會進行任何處理砾淌。

補充說明:雖然Git切換分支之后完丽,會‘盡可能’讓文件夾中的文件恢復成原來該分支的狀態(tài),但是并不能保證一模一樣拇舀。例如當前分支和即將切換過去的分支都有文件A,而且內(nèi)容完全一樣蜻底。但是我們再當前的分支中修改了文件A骄崩,卻沒有commit聘鳞。這時候切換分支的時候,Git對比文檔庫中兩個分支的文件A是相同的要拂,所以不會從文檔庫中取出文件A抠璃,結(jié)果切換分支之后,文件A就不會回到原來的狀態(tài)脱惰。這種錯誤的起因有一部分是操作上的瑕疵搏嗡,因為在一班情況下,在切換分支之前拉一,會先把最新的文件內(nèi)容存入文檔庫采盒,這樣就不會發(fā)生這樣的問題。所以在切換分支之前要先status檢查一下是否一致蔚润。如果不一致磅氨,就需要做適當?shù)奶幚恚蛘咧苯訄?zhí)行“git checkout .”用文檔庫中的文件覆蓋文件夾中的文件嫡纠。

合并程序項目的分支

在大多數(shù)情況下烦租,程序項目的分支都會被合并到主要的分支。除非想要將該分支獨立出來除盏,成為另一個項目叉橱。合并分支需要使用"git merge"指令,格式如下:

git merge <branch-name>

這個指令會把指定的分支者蠕,合并到當前工作中的分支窃祝。

假如我們需要合并分支A和分支B,執(zhí)行以下指令蠢棱。

git checkout A
git merge B

如果換成

git checkout B
git merge A

兩者的區(qū)別是什么呢锌杀?假設我們有branch-1和branch-2兩個分支

分支列表

我們切換到branch-1再合并branch-2

合并到branch-1

我們可以看見,最后的時間節(jié)點為branch-1的泻仙。

接下來糕再,我們回滾到未合并之前,

git reset --hard HEAD^

切換到branch-2玉转,再合并branch-1突想。

合并到branch-2

用merge合并的方法,我們現(xiàn)在只有兩個分支看起來就比較復雜了究抓,如果分支更多猾担,我們可能很難看懂。我們需要更簡潔的合并方法'git rabase'刺下。

git rebase  //命令在另一個分支基礎之上重新應用绑嘹,用于把一個分支的修改合并到當前分支。

那么我們重新把branch-2應用到branch-1中:

git rebase branch-2
rabase

這樣的結(jié)構(gòu)看起起來是不是清晰了很多

解決合并沖突

在我們工作的時候橘茉,如果兩個人共同做一個項目就有可能發(fā)生沖突工腋,什么時候會發(fā)生沖突呢姨丈?我們還以上面的分支為例,我會盡可能用大家熟悉的例子來講解擅腰。

現(xiàn)在我們已經(jīng)把branch-2合并到branch-1中了蟋恬,那么我們的branch-1跟branch-2中都有“branch-2.txt”文件,我們同時修改這個文件趁冈;

branch-1修改
branch-2中修改

好了歼争,我們開始在branch-1中合并branch-2

沖突出現(xiàn)啦!

我們的沖突出現(xiàn)了渗勘,并且在branch-2.txt中沐绒,那么我們看一下呀邢,branch-2.txt現(xiàn)在的樣子吧?

branch-2.txt

在HEAD那個區(qū)域是我們工作的分支价淌,在====下面的是我們將要合并的分支內(nèi)容,接下來我們需要對這段文字進行處理蝉衣,哪些使我們需要的括尸,不需要的我們刪掉病毡。假如我需要保存兩次修改:

修改沖突

然后再重新提交到遠程就ok了。

提示:
如果合并的過程中發(fā)生了沖突啦膜,我們想要放棄這次合并,可執(zhí)行“git merge --abort”指令僧家。Git文檔庫和文件夾中的文件內(nèi)容都會恢復到未執(zhí)行合并前的狀態(tài)雀摘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末八拱,一起剝皮案震驚了整個濱河市阵赠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肌稻,老刑警劉巖清蚀,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異爹谭,居然都是意外死亡枷邪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門诺凡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來齿风,“玉大人药薯,你說我怎么就攤上這事【劝撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵真屯,是天一觀的道長脸候。 經(jīng)常有香客問我,道長绑蔫,這世上最難降的妖魔是什么运沦? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮配深,結(jié)果婚禮上携添,老公的妹妹穿的比我還像新娘废登。我一直安慰自己缔赠,他們只是感情好沦疾,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布嫉髓。 她就那樣靜靜地躺著缸废,像睡著了一般姥闪。 火紅的嫁衣襯著肌膚如雪忌警。 梳的紋絲不亂的頭發(fā)上营搅,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天俐镐,我揣著相機與錄音矫限,去河邊找鬼。 笑死佩抹,一個胖子當著我的面吹牛叼风,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棍苹,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼无宿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了廊勃?” 一聲冷哼從身側(cè)響起懈贺,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坡垫,沒想到半個月后梭灿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡堡妒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年皮迟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伏尼。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爆阶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情班套,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布吱韭,位于F島的核電站鱼的,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸳吸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一坎拐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哼勇,春花似錦呕乎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湿刽。三九已至,卻和暖如春渴庆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背襟雷。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耸弄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓老客,卻偏偏與公主長得像震叮,于是被迫代替她去往敵國和親鳍鸵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git击罪,從https:/...
    落魂灬閱讀 12,664評論 4 54
  • 兩年了贪薪,英語似乎成了我一直在努力搞定的東西,背單詞画切,看quora,學語法霍弹,這似乎成了我一直都要不停不停逼迫自己去搞...
    yguy閱讀 224評論 0 1
  • 經(jīng)常在朋友圈流傳一個關(guān)于友誼的游戲,比如你在第一時間能想到誰砾肺,就代表跟誰關(guān)系最好。 在過去变汪,因我既沒有精致的五官,...
    我是婷玉呀閱讀 409評論 0 7