git常用操作

gitlab

  1. 設置分支保護 Settinsg->Repository->Protected Branches->Expand可以設置分支保護;

  2. eclipe解決沖突 見CSDN http://blog.csdn.net/rosten/article/details/17068285

  3. 多人merge時pull的這個時間關系不取決于誰先執(zhí)行push混狠,而取決于本地倉庫中誰先執(zhí)行commit。所以merge會按照時間順序嚴格的記錄每一次commit赖临。

  4. rebase操作更復雜屏富,沖突的概率也更高,并且不是按照時間順序記錄。

  5. 對于一個多人開發(fā)團隊頻繁提交更新的情況翠忠,如果使用merge會使得歷史線圖非常復雜,并且merge一次就會新增一個記錄點乞榨,如果使用rebase就是完全的線性開發(fā)秽之。

  6. 如果同一文件反復修改或提交次數(shù)比較多,預期會出現(xiàn)很多的conflict吃既,那么可以使用merge合并考榨,僅需要解決一次沖突即可(不過,大范圍主題式的修改鹦倚,是不是應該事先就新開一個分支呢河质?);如果修改范圍小,預期conflict少掀鹅,則建議使用rebase散休。

    重寫歷史

    1.改變最近一次提交

    改變提交說明,或者改變剛剛通過增加淫半,改變溃槐,刪除而記錄的快照。

    git commit --amend
    

    執(zhí)行命令后將帶入文本編輯器科吭,里面包含了最近一次提交說明昏滴,供修改。當保存并退出編輯器对人,這個編輯器會寫入一個新的提交谣殊,里面包含了那個說明,并且讓它成為新的最近一次提交牺弄。

    如果你完成提交后又想修改被提交的快照姻几,增加或者修改其中的文件,可能因為你最初提交時势告,忘了添加一個新建的文件蛇捌,這個過程基本上一樣。你通過修改文件然后對其運行git add或對一個已被記錄的文件運行git rm咱台,隨后的git commit --amend會獲取你當前的暫存區(qū)并將它作為新提交對應的快照 络拌。

    2.修改多個提交說明

    可以通過給git rebase增加-i選項來以交互方式地運行rebase。必須通過告訴命令衍合到哪次提交回溺,來指明需要重寫的提交的回溯深度春贸。

    如,如果想修改最近三次的提交說明遗遵,或者其中任意一次萍恕,你必須給git rebase -i提供一個參數(shù),指明你想要修改的提交的父提交车要,例如HEAD~2或者HEAD~3允粤。可能記住~3更加容易翼岁,因為你想修改最近三次提交维哈;但是請記住你事實上所指的是四次提交之前,即你想修改的提交的父提交登澜。

    git rebase -i HEAD~3 
    

    運行這個命令會為文本編輯器提供一個提交列表阔挠,看起來像下面這樣

    pick f7f3f6d changed my name a bit
    pick 310154e updated README formatting and added blame
    pick a5f4a0d added cat-file
    
    # Rebase 710f0f8..a5f4a0d onto 710f0f8
    #
    # Commands:
    #  p, pick = use commit
    #  e, edit = use commit, but stop for amending
    #  s, squash = use commit, but meld into previous commit
    

    請注意這里的倒序。交互式的rebase給了一個即將運行的腳本脑蠕。它會從在命令行上指明的提交開始(HEAD~3)然后自上至下重播每次提交里引入的變更购撼。它將最早的列在頂上而不是最近的跪削,因為這是第一個需要重播的。

    需要修改這個腳本來讓它停留在你想修改的變更上迂求。要做到這一點碾盐,你只要將你想修改的每一次提交前面的pick改為edit。例如揩局,只想修改第三次提交說明的話毫玖,你就像下面這樣修改文件:

    edit f7f3f6d changed my name a bit
    pick 310154e updated README formatting and added blame
    pick a5f4a0d added cat-file
    

    當你保存并退出編輯器,Git會倒回至列表中的最后一次提交凌盯,然后返回命令行中付枫,輸入git commit --amend

    修改提交說明,退出編輯器驰怎。然后阐滩,運行 git rebase --continue 這個命令會應用其他兩次提交。

    3. 重排提交

    使用交互式衍合來重排或刪除提交如果县忌,你想刪除"added cat-file"這個提交并且修改其他兩次提交引入的順序掂榔,你將rebase腳本從這個

    pick f7f3f6d changed my name a bit
    pick 310154e updated README formatting and added blame
    pick a5f4a0d added cat-file
    

    改為這個:

    pick 310154e updated README formatting and added blame
    pick f7f3f6d changed my name a bit
    

    當你保存并退出編輯器,Git 將分支倒回至這些提交的父提交症杏,應用310154e装获,然后f7f3f6d,接著停止厉颤。有效地修改了這些提交的順序并且徹底刪除了"added cat-file"這次提交穴豫。

    4.壓制(Squashing)提交

如果不用"pick"或者"edit",而是指定"squash"走芋,Git 會同時應用那個變更和它之前的變更并將提交說明歸并绩郎。因此潘鲫,如果想將這三個提交合并為單一提交翁逞, 可以將腳本修改成這樣

pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file

保存并退出編輯器,Git 會應用全部三次變更然后將送回編輯器來歸并三次提交說明溉仑。

# This is a combination of 3 commits.
# The first commit's message is:
changed my name a bit
# This is the 2nd commit message:
updated README formatting and added blame
# This is the 3rd commit message:
added cat-file

然后保存挖函,就會擁有包含前三次提交的全部變更的單一提交 。

注:最頂行pick 不能修改為squash

存儲(Stashing)

當你正在進行項目中某一部分的工作浊竟,里面的東西處于一個比較雜亂的狀態(tài)怨喘,而你想轉到其他分支上進行一些工作。問題是振定,你不想提交進行了一半的工作必怜,否則以后你無法回到這個工作點。解決這個問題的辦法就是git stash命令后频。

“‘儲藏”“可以獲取工作目錄的中間狀態(tài)——也就是修改過的被追蹤的文件和暫存的變更——并將它保存到一個未完結變更的堆棧中梳庆,隨時可以重新應用暖途。

當追準備切換分支,但是還不想提交你正在進行中的工作膏执;所以儲藏這些變更驻售。為了往堆棧推送一個新的儲藏,只要運行?git stash

這時更米,你可以方便地切換到其他分支工作欺栗;你的變更都保存在棧上。要查看現(xiàn)有的儲藏征峦,你可以使用?git stash list

$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log

git stash apply:重新應用你剛剛實施的儲藏

git stash apply stash@{number}:應用更早的儲藏

合并分支

只需回到需要合并的源分支迟几,運行git merge命令指定要合并進來的分支即可;Git 作了合并眶痰,但沒有提交瘤旨,它會停下來等你解決沖突。要看看哪些文件在合并時發(fā)生沖突竖伯,可以用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>
>>>>>>> iss53

可以看到=======隔開的上半部分,是?HEAD(即master分支打厘,在運行merge命令時所切換到的分支)中的內容修肠,下半部分是在iss53分支中的內容。解決沖突的辦法無非是二者選其一或者親自整合到一起户盯。比如可以通過把這段內容替換為下面這樣來解決:

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

在解決了所有文件里的所有沖突后嵌施,運行?git add?將把它們標記為已解決狀態(tài)(譯注:實際上就是來一次快照保存到暫存區(qū)域。)

Pull 沖突

pull時為了防止更改后pull Feiled的出現(xiàn)莽鸭,先執(zhí)行commit,stash or revert吗伤。

  • 執(zhí)行pull
image.png
  • 因為存在代碼沖突,所以接下來會自動彈出merge融合窗口硫眨,如下圖:
image.png
  • 點擊merge足淆,進入下圖:下圖中,左邊是本地修改后的礁阁,右邊是遠程git上面的巧号,中間是修改后結果Result。我們可以通過修改Result一欄得到解決沖突的結果

    merge.png
  • 編譯之后點Apply這樣沖突就解決了姥闭,但是我們還需要提交本地代碼到本地和遠程倉庫中 git -- commit files--丹鸿,提交代碼到本地或者遠程倉庫 。

版本回退

  • git log --pretty=oneline 簡潔顯示最近到最遠的提交日志

  • 在Git中棚品,用HEAD表示當前版本靠欢,也就是最新的提交弥姻,上一個版本就是HEAD^,上上一個版本就是HEAD^^掺涛,當然往上100個版本寫100個^比較容易數(shù)不過來庭敦,所以寫成HEAD~100

  • 現(xiàn)在薪缆,把當前版本回退到上一個版本秧廉,可以使用git reset --hard HEAD^ 。使用 git log查看現(xiàn)在版本庫的狀態(tài)會發(fā)現(xiàn)最新的版本以及看不到了拣帽,可以使用git reset --hard 版本號 返回最新版本

  • git checkout -- file可以丟棄工作區(qū)的修改 疼电,實質上就是讓這個文件回到最近一次git commitgit add時的狀態(tài)。 文件已修改减拭,未add到暫存區(qū): git checkout -- file可還原蔽豺;文件已修改,并add到暫存區(qū)未commit:git read HEAD file git checkout -- file可還原; 文件已修改拧粪,并add到暫存區(qū)已commit修陡,參考上文版本退回或者重置提交。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末可霎,一起剝皮案震驚了整個濱河市魄鸦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌癣朗,老刑警劉巖拾因,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旷余,居然都是意外死亡绢记,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門正卧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蠢熄,“玉大人,你說我怎么就攤上這事穗酥』ど蓿” “怎么了惠遏?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵砾跃,是天一觀的道長。 經常有香客問我节吮,道長抽高,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任透绩,我火速辦了婚禮翘骂,結果婚禮上壁熄,老公的妹妹穿的比我還像新娘。我一直安慰自己碳竟,他們只是感情好草丧,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莹桅,像睡著了一般昌执。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诈泼,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天懂拾,我揣著相機與錄音,去河邊找鬼铐达。 笑死岖赋,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瓮孙。 我是一名探鬼主播唐断,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杭抠!你這毒婦竟也來了栗涂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤祈争,失蹤者是張志新(化名)和其女友劉穎斤程,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菩混,經...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡忿墅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沮峡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疚脐。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖邢疙,靈堂內的尸體忽然破棺而出棍弄,到底是詐尸還是另有隱情,我是刑警寧澤疟游,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布呼畸,位于F島的核電站,受9級特大地震影響颁虐,放射性物質發(fā)生泄漏蛮原。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一另绩、第九天 我趴在偏房一處隱蔽的房頂上張望儒陨。 院中可真熱鬧花嘶,春花似錦、人聲如沸蹦漠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笛园。三九已至拆撼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喘沿,已是汗流浹背闸度。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚜印,地道東北人莺禁。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像窄赋,于是被迫代替她去往敵國和親哟冬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容

  • 本篇的基礎知識: git常用操作命令 cocoapods基本使用 cocoapods本地私有庫的使用 cocoap...
    Lovell_閱讀 596評論 1 0
  • Git 基礎 基本原理 客戶端并不是只提取最新版本的文件快照忆绰,而是把代碼倉庫完整的鏡像下來浩峡。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 15,883評論 5 147
  • 任何對這個世界的善意和愛,都要以不破壞自己的生活為前提稚茅,適度的犧牲和忍讓是一種美德纸淮,但沒有任何一個人、任何一件事亚享,...
    周維格閱讀 7,509評論 91 194
  • 文/徐徐來 薇薇結婚的時候欺税,新郎在臺上說侈沪,我親愛的薇薇,以后我會好好愛你晚凿,謝謝上天讓我遇到你這么好的女孩子亭罪。 我看...
    徐徐來閱讀 4,327評論 34 111
  • ——今日悅讀—— 【0222今日悅讀】心雨 【書名】《致加西亞的信》 【作者】阿爾伯特·哈伯德 【金句】 1.我認...
    心雨8091閱讀 136評論 0 0