Git 小結(jié)

本篇文章是摘抄廖雪峰老師 git 教程中的小結(jié)部分

其 git 教程的傳送門(mén):
Git教程
Git 的官方網(wǎng)站:
http://git-scm.com
國(guó)外網(wǎng)友制作的 Git Cheat Sheet,建議打印出來(lái)備用:
Git Cheat Sheet

圖片來(lái)源于網(wǎng)絡(luò)

1. 創(chuàng)建版本庫(kù)

  • 初始化一個(gè) Git 倉(cāng)庫(kù)搬俊,使用 git init 命令默蚌。
  • 添加文件到 Git 倉(cāng)庫(kù),分兩步:
    (1)第一步,使用命令 git add <file>美尸,注意鞠柄,可反復(fù)多次使用,添加多個(gè)文件械馆;
    (2)第二步胖眷,使用命令 git commit,完成霹崎。

2. 時(shí)光穿梭機(jī)

  • 要隨時(shí)掌握工作區(qū)的狀態(tài)珊搀,使用 git status 命令。
  • 如果 git status 告訴你有文件被修改過(guò)尾菇,用 git diff 可以查看修改內(nèi)容食棕。
2.1 版本退回
  • HEAD 指向的版本就是當(dāng)前版本,因此错沽,Git 允許我們?cè)诎姹镜臍v史之間穿梭簿晓,使用命令 git reset --hard commit_id
  • 穿梭前千埃,用 git log 可以查看提交歷史憔儿,以便確定要回退到哪個(gè)版本。
  • 要重返未來(lái)放可,用 git reflog 查看命令歷史谒臼,以便確定要回到未來(lái)的哪個(gè)版本。
2.2 工作區(qū)和暫存區(qū)

暫存區(qū)是Git非常重要的概念

2.3 管理修改
  • 每次修改耀里,如果不add到暫存區(qū)蜈缤,那就不會(huì)加入到 commit 中。
2.4 撤銷(xiāo)修改
  • 場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容冯挎,想直接丟棄工作區(qū)的修改時(shí)底哥,用命令 git checkout -- file注:git checkout -- file 命令中若沒(méi)有 --,就變成了“切換到另一個(gè)分支”的命令)。
  • 場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容趾徽,還添加到了暫存區(qū)時(shí)续滋,想丟棄修改,分兩步孵奶,第一步用命令 git reset HEAD file疲酌,就回到了場(chǎng)景1,第二步按場(chǎng)景1操作了袁。
  • 場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)時(shí)朗恳,想要撤銷(xiāo)本次提交,參考版本回退一節(jié)载绿,不過(guò)前提是沒(méi)有推送到遠(yuǎn)程庫(kù)僻肖。
2.5 刪除文件
  • 確實(shí)要從版本庫(kù)中刪除該文件,那就用命令 git rm file 刪掉卢鹦,并且 git commit臀脏;
  • 若刪錯(cuò)了,可以用 ** git checkout -- file** 把誤刪的文件從版本庫(kù)里恢復(fù)到最新版本
    git checkout其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本冀自,無(wú)論工作區(qū)是修改還是刪除揉稚,都可以“一鍵還原”)。
  • 命令 git rm 用于刪除一個(gè)文件熬粗。如果一個(gè)文件已經(jīng)被提交到版本庫(kù)搀玖,那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心驻呐,你只能恢復(fù)文件到最新版本灌诅,你會(huì)丟失最近一次提交后你修改的內(nèi)容。

3. 遠(yuǎn)程倉(cāng)庫(kù)

3.1 添加遠(yuǎn)程庫(kù)
  • 要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù)含末,使用命令 git remote add origin git@server-name:path/repo-name.git猜拾;
  • 關(guān)聯(lián)后,使用命令 git push -u origin master 第一次推送master分支的所有內(nèi)容佣盒;
  • 此后挎袜,每次本地提交后,只要有必要肥惭,就可以使用命令 git push origin master 推送最新修改盯仪;
3.2 從遠(yuǎn)程庫(kù)克隆
  • 要克隆一個(gè)倉(cāng)庫(kù),首先必須知道倉(cāng)庫(kù)的地址蜜葱,然后使用 git clone 命令克隆全景。
  • Git 支持多種協(xié)議,包括 https牵囤,但通過(guò) ssh 支持的原生 git 協(xié)議速度最快爸黄。

4. 分支管理

4.1 創(chuàng)建與合并分支
  • 查看分支:git branch
  • 創(chuàng)建分支:git branch <name>
  • 切換分支:git checkout <name>
  • 創(chuàng)建+切換分支:git checkout -b <name>
  • 合并某分支到當(dāng)前分支:git merge <name>
  • 刪除分支:git branch -d <name>
4.2 解決沖突
  • 當(dāng) Git 無(wú)法自動(dòng)合并分支時(shí)滞伟,就必須首先解決沖突。解決沖突后馆纳,再提交诗良,合并完成汹桦。
  • git log --graph 命令可以看到分支合并圖鲁驶。
4.3 分支管理策略
  • 合并分支時(shí),加上 --no-ff 參數(shù)就可以用普通模式合并舞骆,合并后的歷史有分支钥弯,能看出來(lái)曾經(jīng)做過(guò)合并,而 fast forward 合并就看不出來(lái)曾經(jīng)做過(guò)合并督禽。
4.4 Bug分支
  • 修復(fù) bug 時(shí)脆霎,我們會(huì)通過(guò)創(chuàng)建新的 bug分支 進(jìn)行修復(fù),然后合并狈惫,最后刪除睛蛛;
  • 當(dāng)手頭工作沒(méi)有完成時(shí),先把工作現(xiàn)場(chǎng) git stash 一下胧谈,然后去修復(fù)bug忆肾,修復(fù)后,再 git stash pop菱肖,回到工作現(xiàn)場(chǎng)客冈。
4.5 Feature分支
  • 開(kāi)發(fā)一個(gè)新 feature,最好新建一個(gè)分支稳强;
  • 如果要丟棄一個(gè)沒(méi)有被合并過(guò)的分支场仲,可以通過(guò) git branch -D <name> 強(qiáng)行刪除。
4.6 多人協(xié)作
  • 查看遠(yuǎn)程庫(kù)信息退疫,使用 git remote -v渠缕;
  • 本地新建的分支如果不推送到遠(yuǎn)程,對(duì)其他人就是不可見(jiàn)的褒繁;
  • 從本地推送分支褐健,使用 git push origin branch-name,如果推送失敗澜汤,先用 git pull 抓取遠(yuǎn)程的新提交蚜迅;
  • 在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用 git checkout -b branch-name origin/branch-name俊抵,本地和遠(yuǎn)程分支的名稱(chēng)最好一致谁不;
  • 建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用 git branch --set-upstream branch-name origin/branch-name徽诲;
  • 從遠(yuǎn)程抓取分支刹帕,使用 git pull吵血,如果有沖突,要先處理沖突偷溺。

5. 標(biāo)簽管理

5.1 創(chuàng)建標(biāo)簽
  • 命令 git tag <name> 用于新建一個(gè)標(biāo)簽蹋辅,默認(rèn)為 HEAD,也可以指定一個(gè)commit id挫掏;
  • git tag -a <tagname> -m "blablabla..."可以指定標(biāo)簽信息侦另;
  • git tag -s <tagname> -m "blablabla..."可以用PGP簽名標(biāo)簽;
  • 命令 git tag 可以查看所有標(biāo)簽尉共。
5.2 操作標(biāo)簽
  • 命令 git push origin <tagname> 可以推送一個(gè)本地標(biāo)簽褒傅;
  • 命令 git push origin --tags 可以推送全部未推送過(guò)的本地標(biāo)簽;
  • 命令 git tag -d <tagname> 可以刪除一個(gè)本地標(biāo)簽袄友;
  • 命令 git push origin :refs/tags/<tagname> 可以刪除一個(gè)遠(yuǎn)程標(biāo)簽殿托。

6. 自定義Git

6.1 忽略特殊文件
  • 忽略某些文件時(shí),需要編寫(xiě) .gitignore剧蚣;
  • .gitignore 文件本身要放到版本庫(kù)里支竹,并且可以對(duì) .gitignore 做版本管理!
6.2 配置別名

給Git配置好別名鸠按,就可以輸入命令時(shí)偷個(gè)懶

6.3 搭建 Git 服務(wù)器
  • 搭建 Git 服務(wù)器非常簡(jiǎn)單礼搁,通常10分鐘即可完成;
  • 要方便管理公鑰待诅,用 Gitosis叹坦;
  • 要像 SVN 那樣變態(tài)地控制權(quán)限,用 Gitolite卑雁。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末募书,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子测蹲,更是在濱河造成了極大的恐慌莹捡,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扣甲,死亡現(xiàn)場(chǎng)離奇詭異篮赢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)琉挖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)启泣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人示辈,你說(shuō)我怎么就攤上這事寥茫。” “怎么了矾麻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵纱耻,是天一觀的道長(zhǎng)芭梯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)弄喘,這世上最難降的妖魔是什么玖喘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮蘑志,結(jié)果婚禮上累奈,老公的妹妹穿的比我還像新娘。我一直安慰自己卖漫,他們只是感情好费尽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布赠群。 她就那樣靜靜地躺著羊始,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查描。 梳的紋絲不亂的頭發(fā)上突委,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音冬三,去河邊找鬼匀油。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勾笆,可吹牛的內(nèi)容都是我干的敌蚜。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窝爪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼弛车!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蒲每,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纷跛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后邀杏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贫奠,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年望蜡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唤崭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脖律,死狀恐怖谢肾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情状您,我是刑警寧澤勒叠,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布兜挨,位于F島的核電站,受9級(jí)特大地震影響眯分,放射性物質(zhì)發(fā)生泄漏拌汇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一弊决、第九天 我趴在偏房一處隱蔽的房頂上張望噪舀。 院中可真熱鬧,春花似錦飘诗、人聲如沸与倡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纺座。三九已至,卻和暖如春溉潭,著一層夾襖步出監(jiān)牢的瞬間净响,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工喳瓣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留馋贤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓畏陕,卻偏偏與公主長(zhǎng)得像配乓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惠毁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,645評(píng)論 9 163
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git犹芹,從https:/...
    落魂灬閱讀 12,655評(píng)論 4 54
  • 通過(guò)這次國(guó)慶排班再一次看清你的嘴臉,我每天忙忙碌碌仁讨、從最初的力不從心到現(xiàn)在的馬不停蹄羽莺,你都沒(méi)有看在眼里。去年元旦就...
    strong118閱讀 194評(píng)論 0 0
  • 豐寧壩上:京北第一草原 豐寧壩上被稱(chēng)為“京北第一草原”洞豁,是距離北京最近的天然草原盐固。分為壩下、接壩和壩上三個(gè)地貌單元...
    Shirley唐一泓閱讀 217評(píng)論 0 0
  • 新入手一本書(shū)——《好玩的書(shū)》丈挟,這本書(shū)通篇講一個(gè)字—“玩”刁卜,是的,你沒(méi)看錯(cuò)曙咽,隨意翻開(kāi)一頁(yè)蛔趴,都是玩,從虛擬到現(xiàn)實(shí)例朱,從手...
    逆書(shū)而上閱讀 215評(píng)論 0 0