git 總結(jié)

Git 總結(jié)

一、創(chuàng)建與合并分支

1、從master分支創(chuàng)建dev分支并切換到dev分支
git checkout master
git checkout -b dev

其中,git checkout -b dev 等價(jià)于:

git branch dev
git checkout dev

查看本地當(dāng)前的分支,分支前面帶“*”表示當(dāng)前分支,剩下的分支表示本地有的分支。

git branch

查看遠(yuǎn)程全部的分支,白色的表示本地有的,紅色的表示本地沒(méi)有,僅在遠(yuǎn)程存在。

git branch -a
2、修改代碼、提交代碼(當(dāng)前的操作是在dev分支上進(jìn)行)
git add test.py
git commit -m "提交test.py"

一般 -m 適合簡(jiǎn)單的message,需要寫(xiě)全面一點(diǎn)直接 git commit 后進(jìn)入 vim 模式編輯,保存退出后自動(dòng)提交

3、分支合并(將dev合并到master)
git checkout master
git merge dev

最好不要使用merge,使用rebase

git checkout dev
git rebase master
4、合并完成后,刪除dev分支.(刪除dev分支時(shí),注意我們當(dāng)前所在的分支不能是dev分支)
git branch -d dev
5、刪除后,查看分支(此時(shí)看不到dev分支了)
git branch
6、總結(jié) :工作中經(jīng)常從master創(chuàng)建新的分支,具體操作如下:

創(chuàng)建新分支:

  1. git branch -b [新分支名稱(chēng)] 創(chuàng)建新分支,-b 參數(shù)為創(chuàng)建分支的同時(shí),切換到該分支上

  2. git branch 查看本地分支

    git checkout 分支名稱(chēng) 切換分支

修改代碼并提交

  1. / after modifing some files

  2. git add files (git add .) 如果發(fā)現(xiàn)提交錯(cuò)了 使用 git restore --staged . 撤銷(xiāo)在暫存區(qū)的提交

  3. git status 可以看到未提交的狀態(tài)

  4. git commit

  5. git status 可以看到已經(jīng)提交的狀態(tài)

  6. git log 查看提交記錄

切回master更新代碼

  1. git checkout master 切換回master分支
  2. git pull -r 拉取最新代碼 -r 代表rebase

切回新分支rebase

  1. git checkout [新分支名稱(chēng)]

  2. git rebase master rebase到master

  3. git review -t [feature-id] master review到master分支,-t 參數(shù)指 topic Topic相當(dāng)于gerrit里把相同topic都?xì)w為一類(lèi)

二、解決沖突

1、發(fā)生沖突的文件
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

其中,git使用 <<<<<<<,=======,>>>>>>>標(biāo)記文件中自己和別人產(chǎn)生沖突的部分。

<<<<<<<,=======之間為自己的代碼;=======,>>>>>>>之間為別人的代碼。

如果保留自己的代碼,將別人的代碼刪掉即可。

2、沖突解決后提交
git status
git add ***
git commit -m "fix conflict"
git push origin 分支名

三、Bug分支

1、儲(chǔ)藏更改: 將當(dāng)前更改的代碼儲(chǔ)藏起來(lái),等以后恢復(fù)使用
git stash
2、恢復(fù)儲(chǔ)藏的代碼
# 恢復(fù)的同時(shí)把stash內(nèi)容刪掉
git stash pop
# 通過(guò) git stash list,查看本地所有的stash,如果要恢復(fù)第一個(gè)就執(zhí)行:
git stash apply stash@{0}

# 恢復(fù)stash,但是stash內(nèi)容并不刪除
git stash apply  

# 在上面操作的基礎(chǔ)上,以此來(lái)刪除stash
git stash drop 

# 查看全部的stash列表
git stash list 

git stash pop 和 git stash apply 區(qū)別

原來(lái)git stash pop stash@{id}命令會(huì)在執(zhí)行后將對(duì)應(yīng)的stash id 從stash list里刪除,

而 git stash apply stash@{id} 命令則會(huì)繼續(xù)保存stash id。

3、將stash空間清空
git stash clear

四、版本回退

1、回退至上一個(gè)版本
git reset --hard HEAD~1

git reset (–mixed) HEAD~1
回退一個(gè)版本,且會(huì)將暫存區(qū)的內(nèi)容和本地已提交的內(nèi)容全部恢復(fù)到未暫存的狀態(tài),不影響原來(lái)本地文件(未提交的也不受影響)
git reset –soft HEAD~1
回退一個(gè)版本,不清空暫存區(qū),將已提交的內(nèi)容恢復(fù)到暫存區(qū),不影響原來(lái)本地的文件(未提交的也不受影響)
git reset –hard HEAD~1
回退一個(gè)版本,清空暫存區(qū),將已提交的內(nèi)容的版本恢復(fù)到本地,本地的文件也將被恢復(fù)的版本替換

2、回退至指定版本
git reset --hard 版本號(hào)
3、查看以往版本號(hào)(本地的commit)
git reflog
4、查看各版本號(hào)及信息(所有的commit:本地commit + 其他同事的commit)
git log

五、撤銷(xiāo)修改

1、撤銷(xiāo)修改
git  checkout -- test.py

分兩種情況分析:

  1. 還沒(méi)有執(zhí)行 git add 操作,執(zhí)行上面的操作后,會(huì)恢復(fù)到和版本庫(kù)中一模一樣的版本狀態(tài)。
  2. ②: 執(zhí)行了git add ,還沒(méi)執(zhí)行 git commit ,再執(zhí)行上面的操作后,會(huì)恢復(fù)到git add 結(jié)束后的狀態(tài)

注:一旦執(zhí)行了git commit -m "*",就不能再使用上面的命令回退。

2、撤銷(xiāo)新建文件

比如新建一個(gè)aa.html頁(yè)面,并未執(zhí)行g(shù)it add ,即沒(méi)有被git追蹤,此時(shí)如果想撤銷(xiāo)新建動(dòng)作,可執(zhí)行:

git clean -f ../test.py
3、撤銷(xiāo)新建文件夾

比如新建一個(gè)文件夾"demo",并未執(zhí)行g(shù)it add ,即沒(méi)有被git追蹤,此時(shí)如果你想撤銷(xiāo)新建動(dòng)作,可執(zhí)行:

git clean -df ./demo

六、對(duì)已push版本進(jìn)行回退

1、第一步:
# 本地回退到指定的版本
git reset --hard 版本號(hào)
2、第二步:
# 將遠(yuǎn)程的也回退到指定版本
git push  -f origin dev

七、本地同步遠(yuǎn)程刪除的分支

# 用來(lái)清除已經(jīng)沒(méi)有遠(yuǎn)程信息的分支,這樣git branch -a 就不會(huì)拉取遠(yuǎn)程已經(jīng)刪除的分支了
git fetch origin -p

八、刪掉未與遠(yuǎn)程分支對(duì)應(yīng)的本地分支

從gitlab上看不到的分支在本地可以通過(guò)git branch -a 查到,刪掉沒(méi)有與遠(yuǎn)程分支對(duì)應(yīng)的本地分支:

git fetch -p

九、查看遠(yuǎn)程庫(kù)與本地分支的信息

git remote show origin

十、標(biāo)簽管理

1、給當(dāng)前分支最新commit打標(biāo)簽
git tag v1.0.0
2、比如現(xiàn)在周五,要給周一某個(gè)commit打標(biāo)簽,應(yīng)執(zhí)行以下步驟:

(1)、查看log日志,找到相應(yīng)的commit版本號(hào)

git log --pretty=oneline --abbrev-commit
// 顯示如下commit,比如我想在 "34372b05"這個(gè)commit打標(biāo)簽44d2e20b fix bug34372b05 fix bug29554931 fix bug

(2)、給指定的commit打標(biāo)簽

git tag v1.0.0 34372b05

(3)、創(chuàng)建的標(biāo)簽只存在本地,推至遠(yuǎn)程

git push origin v1.0.0

(4)、一次性推送未推至遠(yuǎn)程的本地標(biāo)簽

git push origin --tags

(5)、查詢(xún)所有標(biāo)簽

git tag

(6)、查詢(xún)標(biāo)簽詳細(xì)信息

git show v1.0.0

(7)、刪除本地標(biāo)簽

git tag -d v1.0.0

(8)、刪除遠(yuǎn)程標(biāo)簽

# 先從本地刪除
git tag -d v1.0.0
# 然后從遠(yuǎn)程刪除
git push origin :refs/tags/v1.0.0
# 最后可以在gitlab上查看是否真正的刪除了標(biāo)簽
3、創(chuàng)建帶有說(shuō)明的標(biāo)簽,用-a指定標(biāo)簽名,-m指定說(shuō)明文字
# git  tag  -a  版本號(hào)  -m  說(shuō)明信息  commit版本號(hào)
git tag -a v1.0.0 -m "version 1.0.0 released" 34372b05(commit版本號(hào))     
# 查看標(biāo)簽詳細(xì)信息
git show v1.0.0    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,514評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,373評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,975評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,743評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,199評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,414評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,951評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,780評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,218評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,649評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,889評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,673評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,967評(píng)論 2 374

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

  • 一、簡(jiǎn)介 1.概述 Git 是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。Git 是 Li...
    會(huì)思考的鴨子閱讀 1,511評(píng)論 0 13
  • 說(shuō)明:本次總結(jié)來(lái)自廖雪峰的官方網(wǎng)站,僅供學(xué)習(xí),如有侵權(quán)請(qǐng)聯(lián)系管理員刪除。 git命令 安裝git 安裝完成后需要配...
    test小星星閱讀 416評(píng)論 0 0
  • 關(guān)于git,之前總是遇到什么問(wèn)題然后做了一個(gè)簡(jiǎn)單總結(jié)。今天決定來(lái)一個(gè)系統(tǒng)的總結(jié),加深一下自己對(duì)git的理解。 1、...
    丶灰太狼他叔閱讀 637評(píng)論 2 0
  • git總結(jié) 標(biāo)簽(空格分隔): git 本文是對(duì)廖雪峰的git教程的總結(jié) [TOC] 創(chuàng)建版本庫(kù) 創(chuàng)建版本庫(kù):gi...
    哈希君閱讀 412評(píng)論 0 0
  • Git和GitHub一直在用,但是沒(méi)有詳細(xì)學(xué)習(xí)過(guò),只會(huì)幾個(gè)簡(jiǎn)單的命令,做一些提交上傳的操作。這幾天公司沒(méi)項(xiàng)目,比較...
    _賴(lài)筆小新閱讀 8,323評(píng)論 2 110