git

新增分支

git branch XXX

切換分支

git checkout XXX

新建并切換分支

git checkout -b XXX

基于遠(yuǎn)程master分支切除一個(gè)新分支

git checkout -b new_feature origin/master

刪除分支

git branch -d XXX

出于安全考慮乏矾,沒有被合并到master過的branch在刪除是會(huì)失斆峡埂(因?yàn)榭赡軙?huì)誤刪掉未完成的branch)
如果確認(rèn)要?jiǎng)h除這個(gè)branch(例如某個(gè)未完成的功能被團(tuán)隊(duì)確認(rèn)永久斃掉了)
可以用下述命令永久刪除

git branch -D XXX

刪除遠(yuǎn)程倉庫的branch分支

git push origin -d XXX

branch的意義

推送本地分支

git push origin feature

這里的git push 多了origin feature 這個(gè)連個(gè)參數(shù)
origin 是遠(yuǎn)程倉庫的別名,是在git clone時(shí)git自動(dòng)起的
feature 是遠(yuǎn)程倉庫中目標(biāo)branch的名字
即:我要push到origin這個(gè)倉庫的feature分支
在git中钻心,默認(rèn)情況下凄硼,git push 只能上傳那些之前從遠(yuǎn)端clone下來的或者pull下來的分支
而如果需要push本地自己創(chuàng)建的分支,則需要手動(dòng)指定目標(biāo)倉庫和目標(biāo)分支(并且目標(biāo)分支的名稱必須和本地分支完全相同)
遠(yuǎn)程倉庫中HEAD是永遠(yuǎn)指向他的默認(rèn)分支的(master)捷沸,并不會(huì)隨著默認(rèn)分支的移動(dòng)而移動(dòng)


pull內(nèi)部操作其實(shí)是把遠(yuǎn)程倉庫取到本地后(使用fetch)摊沉,再用一次merge來把遠(yuǎn)端倉庫的新commits合并到本地


merge:合并commits

merge負(fù)責(zé):從目標(biāo)commit和commit(即HEAD所指向的commit)分叉的位置起,把目標(biāo)commit的路徑上所有commit的內(nèi)容一并應(yīng)用到當(dāng)前commit痒给,然后自動(dòng)生成一個(gè)新的commit

git merge feature

Feature Branching 最流行的工作流

這種工作模型的限制:使用這種工作模型時(shí)说墨,每個(gè)人的代碼在被大家看到的時(shí)候,就是它進(jìn)入正式的生產(chǎn)庫的時(shí)候
這種工作流的核心內(nèi)容總結(jié):
1苍柏、任何新功能(feature)或bug修復(fù)全部新建一個(gè)branch來寫尼斧;
2、branch寫完后试吁,合并到master棺棵,然后刪除這個(gè)branch

解決了團(tuán)隊(duì)開發(fā)的兩個(gè)關(guān)鍵問題:
1、代碼分享
2熄捍、一人多任務(wù)

查看歷史

git log

查看詳細(xì)歷史

-p是 --patch的縮寫烛恤,可以看到具體每個(gè)commit的改動(dòng)細(xì)節(jié)

git log -p

精簡歷史

如果你只想大致看一下改動(dòng)內(nèi)容,但并不想深入每一行的細(xì)節(jié)(例如你想回顧一下自己是在哪個(gè) commit 中修改了 games.txt 文件)余耽,那么可以把選項(xiàng)換成 --stat

git log --stat

查看任意一個(gè)commit

在 show 后面加上這個(gè) commit 的引用(branch 或 HEAD 標(biāo)記)或它的 SHA-1 碼:

git show 5e68b0d8

看指定 commit 中的指定文件

在 commit 的引用或 SHA-1 后輸入文件名:

git show 5e68b0d8 shopping\ list.txt

直接輸入gitk命令缚柏,可以在可視化窗口中查看歷史

rebase

由于merge后就會(huì)出現(xiàn)分叉,顯得混亂碟贾;
如果不希望出現(xiàn)分叉船惨,可以用rebase來代替merge
為了避免和遠(yuǎn)端倉庫發(fā)生沖突柜裸,一般不要從master向其他branch執(zhí)行rebase操作
而如果是master以外的branch之間的rebase(比如branch1和branch2)直接rebase就好

git checkout branch1
git rebase master

剛剛提交的代碼,發(fā)現(xiàn)寫錯(cuò)了怎么辦粱锐? 對(duì)最新一條commit進(jìn)行修正

amend是修正的意思
git會(huì)把當(dāng)前commit里的內(nèi)容和暫存區(qū)(stageing area)里的內(nèi)容合并起來后創(chuàng)建一個(gè)新的commit
用這個(gè)新的commit把當(dāng)前commit替換掉
所以commit --amend做的事是:對(duì)最新一條commit進(jìn)行修正
注:commit --amend 并不是直接修改原 commit 的內(nèi)容疙挺,而是生成一條新的 commit

git commit --amend

寫錯(cuò)的不是最新的提交,而是倒數(shù)第二個(gè)怜浅?

rebase -i:交互式rebase

rebase -i 是 rebase -interactive 的縮寫形式铐然,即 交互式rebase

git rebase -i HEAD^^

上面這行代碼表示,把當(dāng)前 commit ( HEAD 所指向的 commit) rebase 到 HEAD 之前 2 個(gè)的 commit 上

說明:在 Git 中恶座,有兩個(gè)「偏移符號(hào)」: ^ 和 ~搀暑。
^ 的用法:在 commit 的后面加一個(gè)或多個(gè) ^ 號(hào),可以把 commit 往回偏移跨琳,偏移的數(shù)量是 ^ 的數(shù)量自点。例如:master^ 表>示 master 指向的 commit 之前的那個(gè) commit; HEAD^^ 表示 HEAD 所指向的 commit 往前數(shù)兩個(gè) commit脉让。
~ 的用法:在 commit 的后面加上 ~ 號(hào)和一個(gè)數(shù)桂敛,可以把 commit 往回偏移,偏移的數(shù)量是 ~ 號(hào)后面的數(shù)溅潜。例如:HEAD~5 >表示 HEAD 指向的 commit往前數(shù) 5 個(gè) commit术唬。

操作步驟:
1/git rebase -i HEAD^^
2/git add .
3/git commit --amend
4/ git rebase --continue

比錯(cuò)還錯(cuò),想直接丟棄剛寫的提交滚澜?

reset --hard 丟棄 最新的提交
即撤銷這條 commit
一旦回退到上個(gè)版本粗仓,除非記住該版本的commit標(biāo)記,否則不能再找到之后的版本了
慎用

git reset --hard HEAD^

想丟棄的也不是最新的提交设捐?

用交互式 rebase 撤銷提交

git rebase -i HEAD^^
運(yùn)行命令后借浊,直接刪除不要的 commit即可

用 rebase --onto 撤銷提交

下次再看,亂

代碼已經(jīng) push 上去了才發(fā)現(xiàn)寫錯(cuò)萝招?

1. 出錯(cuò)的內(nèi)容在你自己的 branch

強(qiáng)制提交覆蓋本地的分支
-f 是 --force 的縮寫巴碗,意為「忽略沖突,強(qiáng)制 push」

git push origin branch1 -f

2. 出錯(cuò)的內(nèi)容已經(jīng)合并到 master

千萬不能在master上強(qiáng)制push

在 revert 完成之后即寒,把新的 commit 再 push 上去橡淆,這個(gè) commit 的內(nèi)容就被撤銷了。它和前面所介紹的撤銷方式相比母赵,最主要的區(qū)別是逸爵,這次改動(dòng)只是被「反轉(zhuǎn)」了,并沒有在歷史中消失掉凹嘲,你的歷史中會(huì)存在兩條 commit :一個(gè)原始 commit 师倔,一個(gè)對(duì)它的反轉(zhuǎn) commit。

git checkout branch 的本質(zhì)

git checkout branch名 的本質(zhì)周蹭,其實(shí)是把 HEAD 指向指定的 branch趋艘,然后簽出這個(gè) branch 所對(duì)應(yīng)的 commit 的工作目錄疲恢。所以同樣的,checkout 的目標(biāo)也可以不是 branch瓷胧,而直接指定某個(gè) commit:

git checkout HEAD^^s
git checkout master~5
git checkout 78a4bc
git checkout 78a4bc^

臨時(shí)打包類型

stash:臨時(shí)存放工作目錄的改動(dòng)
把當(dāng)前工作目錄暫時(shí)清理干凈

git stash

需要的時(shí)候在重新復(fù)位

git stash pop

注意:沒有被 track 的文件(即從來沒有被 add 過的文件)不會(huì)被 stash 起來显拳,因?yàn)?Git 會(huì)忽略它們。如果想把這些文件也一起 stash搓萧,可以加上 -u 參數(shù)杂数,它是 --include-untracked 的簡寫。就像這樣:

git stash -u
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘸洛,一起剝皮案震驚了整個(gè)濱河市揍移,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌反肋,老刑警劉巖那伐,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異石蔗,居然都是意外死亡罕邀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門抓督,熙熙樓的掌柜王于貴愁眉苦臉地迎上來燃少,“玉大人束亏,你說我怎么就攤上這事铃在。” “怎么了碍遍?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵定铜,是天一觀的道長。 經(jīng)常有香客問我怕敬,道長揣炕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任东跪,我火速辦了婚禮畸陡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虽填。我一直安慰自己丁恭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布斋日。 她就那樣靜靜地躺著牲览,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恶守。 梳的紋絲不亂的頭發(fā)上第献,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天贡必,我揣著相機(jī)與錄音,去河邊找鬼庸毫。 笑死仔拟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的岔绸。 我是一名探鬼主播理逊,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盒揉!你這毒婦竟也來了晋被?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤刚盈,失蹤者是張志新(化名)和其女友劉穎羡洛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藕漱,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欲侮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肋联。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片威蕉。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖橄仍,靈堂內(nèi)的尸體忽然破棺而出韧涨,到底是詐尸還是另有隱情,我是刑警寧澤侮繁,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布虑粥,位于F島的核電站,受9級(jí)特大地震影響宪哩,放射性物質(zhì)發(fā)生泄漏娩贷。R本人自食惡果不足惜空入,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一棍好、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纽竣,春花似錦品抽、人聲如沸储笑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽南蓬。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赘方,已是汗流浹背烧颖。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窄陡,地道東北人炕淮。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像跳夭,于是被迫代替她去往敵國和親涂圆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 你以為,他給了你一塊蛋糕颈抚,那就是愛情踩衩,對(duì)不起,他應(yīng)該給你整座蛋糕店贩汉。 以前的時(shí)候以為喜歡和愛最大的區(qū)別就是喜歡可以...
    這個(gè)周末閱讀 315評(píng)論 0 0