git 廖雪峰教程筆記

分布式版本控制系統(tǒng)( Distributed Version Control System蹋辅,簡(jiǎn)稱 DVCS )

面向需求筆記卢未,只看近期工作可能要用到的內(nèi)容

  1. 創(chuàng)建版本庫(kù)
    新建目錄辰妙,git init把當(dāng)前目錄變成git可以管理的倉(cāng)庫(kù)

  2. 在版本庫(kù)目錄下文件添加到倉(cāng)庫(kù):git add(add 可以多次頻繁使用慷嗜,全部添加完之后commit)
    把文件提交到倉(cāng)庫(kù): git commit -m '...'
    $ git log <last release> HEAD --grep feature 僅僅顯示本次發(fā)布新增加的功能弊添。

  3. 修改文件之后
    查看git狀態(tài):git status
    顯示被修改了還沒(méi)有提交

  4. 查看修改了什么: git diff

  5. 查看修改記錄: git log --pretty=onelint
    后面的參數(shù)是整理輸出格式的

  6. 回退
    git reset --hard HEAD^
    HEAD^表示上一版本
    HEAD^^
    HEAD~100

  7. 工作區(qū)债鸡,暫存區(qū)
    工作區(qū),電腦里可以看到的目錄
    版本庫(kù)(repository)庸论,工作區(qū)里有一個(gè)隱藏目錄.git职辅, 這個(gè)不算工作區(qū),而是git版本庫(kù)聂示,版本庫(kù)里有很多東西域携,包括暫存區(qū),還有g(shù)it自動(dòng)創(chuàng)建的第一個(gè)分支master鱼喉,和一個(gè)指向master的指針HEAD

  8. 撤銷操作

git status
On branch master
Changes not staged for commit:
//還沒(méi)有add
git status
On branch master
Changes to be committed:
//還沒(méi)有commit

總而言之:

  1. 場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容秀鞭,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- filename扛禽。(可以把文件在工作區(qū)的修改全部撤銷)

  2. 場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容锋边,還添加到了暫存區(qū)時(shí),想丟棄修改编曼,分兩步豆巨,第一步用命令git reset HEAD file(把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū))掐场,就回到了場(chǎng)景1往扔,第二步按場(chǎng)景1操作贩猎。

  3. 場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)時(shí),想要撤銷本次提交萍膛,參考版本回退一節(jié)吭服,不過(guò)前提是沒(méi)有推送到遠(yuǎn)程庫(kù)。

  4. 刪除文件
    先在工作區(qū)rm
    這時(shí)候git status會(huì)顯示有文件被刪除
    如果確實(shí)要?jiǎng)h除蝗罗,git rm filename艇棕, git commit
    如果不想刪了,git checkout -- filename

  5. checkout
    版本庫(kù)里代碼替換工作區(qū)版本绿饵,“一鍵還原”

  6. 遠(yuǎn)程倉(cāng)庫(kù)
    找一臺(tái)電腦充當(dāng)服務(wù)器欠肾,其他人都從這里clone代碼到自己電腦,也提交到這個(gè)服務(wù)器
    github sshkey

  7. ssh key(每臺(tái)電腦對(duì)應(yīng)一個(gè))

  8. 創(chuàng)建SSH Key拟赊。在用戶主目錄下刺桃,看看有沒(méi)有.ssh目錄,如果有吸祟,再看看這個(gè)目錄下有沒(méi)有id_rsa和id_rsa.pub這兩個(gè)文件瑟慈,如果已經(jīng)有了,可直接跳到下一步屋匕。如果沒(méi)有葛碧,打開(kāi)Shell(Windows下打開(kāi)Git Bash),創(chuàng)建SSH Key:
    $ ssh-keygen -t rsa -C "youremail@example.com"
    你需要把郵件地址換成你自己的郵件地址过吻,然后一路回車进泼,使用默認(rèn)值即可,由于這個(gè)Key也不是用于軍事目的纤虽,所以也無(wú)需設(shè)置密碼乳绕。
    (如果一切順利的話,可以在用戶主目錄里找到.ssh
    目錄逼纸,里面有id_rsa和id_rsa.pub兩個(gè)文件洋措,這兩個(gè)就是SSH Key的秘鑰對(duì),id_rsa是私鑰杰刽,不能泄露出去菠发,id_rsa.pub是公鑰,可以放心地告訴任何人贺嫂。)

  9. 在github中添加sshkey

  10. branch(重點(diǎn)W茵!涝婉!)
    創(chuàng)建并切換到分支:git checkout -b dev
    查看當(dāng)前分支:git branch/git status
    切換回master:git checkout master
    把dev合并到master(merge:合并指定分支到當(dāng)前分支哥力,古跟我說(shuō)的是master合并到branch):git merge dev
    刪除分支: git branch -d <name>

  11. conflict

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

//查看分支合并情況
$ git log --graph --pretty=oneline --abbrev-commit

如果工作只進(jìn)行到一半,還沒(méi)法提交墩弯,預(yù)計(jì)完成還需1天時(shí)間吩跋。但是,必須在兩個(gè)小時(shí)內(nèi)修復(fù)該bug渔工,怎么辦锌钮?
幸好,Git還提供了一個(gè)stash
功能引矩,可以把當(dāng)前工作現(xiàn)場(chǎng)“儲(chǔ)藏”起來(lái)梁丘,等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作:
$ git stash

多人協(xié)作

//查看遠(yuǎn)程庫(kù)信息
git remote
git remote -v

//推送分支,把本地提交到遠(yuǎn)程庫(kù)
git push origin master

提交有沖突,先pull把新提交的抓下來(lái)旺韭,在本地合并解決后再推送

多人協(xié)作的工作模式通常是這樣:

首先氛谜,可以試圖用git push origin branch-name推送自己的修改;

如果推送失敗区端,則因?yàn)檫h(yuǎn)程分支比你的本地更新值漫,需要先用git pull試圖合并;

如果合并有沖突织盼,則解決沖突杨何,并在本地提交;

沒(méi)有沖突或者解決掉沖突后沥邻,再用git push origin branch-name推送就能成功危虱!

如果git pull提示“no tracking information”,則說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒(méi)有創(chuàng)建唐全,用命令git branch --set-upstream branch-name origin/branch-name埃跷。

這就是多人協(xié)作的工作模式,一旦熟悉了邮利,就非常簡(jiǎn)單弥雹。

實(shí)際情況:

本地master被污染,從本地的master上checkout的branch 也是被污染的近弟,想修正

解決方法:
(當(dāng)前所在位置是branch1)

  1. 刪掉本地master: git branck -D master
  2. pull遠(yuǎn)程master: git pull origin master
    (pull會(huì)把所有master和所有branch都拿下來(lái)缅糟,而且不會(huì)改變當(dāng)前所在位置)

到這里其實(shí)可以把現(xiàn)在branch和剛pull下來(lái)的master比較就完事了,但是我想新建分支并把之前分支廢棄

  1. 進(jìn)入master分支: git checkout master
  2. 新建分支:git checkout -b branck2
  3. 可以git branch 確保自己在branch2
  4. 把先前分支branch1中做的修改merge到branch2中:git merge branch1
  5. git diff master 檢查遠(yuǎn)程master和修改后要push文件是否都正確
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祷愉,一起剝皮案震驚了整個(gè)濱河市窗宦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌二鳄,老刑警劉巖赴涵,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異订讼,居然都是意外死亡髓窜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寄纵,“玉大人鳖敷,你說(shuō)我怎么就攤上這事〕淌茫” “怎么了定踱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)恃鞋。 經(jīng)常有香客問(wèn)我崖媚,道長(zhǎng),這世上最難降的妖魔是什么恤浪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任畅哑,我火速辦了婚禮,結(jié)果婚禮上水由,老公的妹妹穿的比我還像新娘荠呐。我一直安慰自己,他們只是感情好绷杜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布直秆。 她就那樣靜靜地躺著,像睡著了一般鞭盟。 火紅的嫁衣襯著肌膚如雪圾结。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,610評(píng)論 1 305
  • 那天齿诉,我揣著相機(jī)與錄音筝野,去河邊找鬼。 笑死粤剧,一個(gè)胖子當(dāng)著我的面吹牛歇竟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抵恋,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼焕议,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弧关?” 一聲冷哼從身側(cè)響起盅安,我...
    開(kāi)封第一講書(shū)人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎世囊,沒(méi)想到半個(gè)月后别瞭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡株憾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蝙寨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晒衩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墙歪,死狀恐怖听系,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箱亿,我是刑警寧澤跛锌,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布弃秆,位于F島的核電站届惋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏菠赚。R本人自食惡果不足惜脑豹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衡查。 院中可真熱鬧瘩欺,春花似錦、人聲如沸拌牲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)塌忽。三九已至拍埠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間土居,已是汗流浹背枣购。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擦耀,地道東北人棉圈。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像眷蜓,于是被迫代替她去往敵國(guó)和親分瘾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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