筆記-Git的使用

目錄

一,Git之深入核心概念:一切皆引用

  • 1,git的基本概念
  • 2,git的實(shí)際操作
  • 3,git中的引用
    二污朽,Git深入之二:交互式rebase, 交互式add和工作流
    三蜕乡,其他常用指令和git flow

Git之深入核心概念:一切皆引用

1,git的基本概念
image.png

git分布式版本控制系統(tǒng)相對(duì)于中央式倉(cāng)庫(kù)一個(gè)最重要的區(qū)別點(diǎn)是它會(huì)有一個(gè)本地倉(cāng)庫(kù)。它相對(duì)于傳統(tǒng)的svn有如下好處.
1,不必?fù)?dān)心沒(méi)有網(wǎng)絡(luò)提交不了代碼锁施,本地也能辦公
2,當(dāng)然svn也能沒(méi)有網(wǎng)絡(luò)本地辦公淮悼,但是對(duì)于提交代碼會(huì)有一個(gè)commit記錄咐低,這個(gè)commit記錄在svn沒(méi)有網(wǎng)絡(luò)的情況下是不能生成的
3,團(tuán)隊(duì)的協(xié)同開(kāi)發(fā),效率得到提升袜腥,特別是本地建分支见擦,功能開(kāi)發(fā),以及分支維護(hù)等羹令。(文章中提到git flow,rebase等常用功能)
4, 本地倉(cāng)庫(kù)中提供的暫存區(qū)和工作區(qū)的功能鲤屡,能夠解決分支之間協(xié)同開(kāi)發(fā)的以困難點(diǎn). 例如我有a,b兩個(gè)分支,a分支我修改了某些文件福侈,但是這個(gè)時(shí)候我需要切換到b分支進(jìn)行開(kāi)發(fā)酒来,那么對(duì)于這些文件我可以先不提交,暫時(shí)放入暫存區(qū)

2,git的實(shí)際操作

下面來(lái)熟悉一下git如何去做一些常用的操作的. 首先使用git clone來(lái)clone一個(gè)遠(yuǎn)程倉(cāng)庫(kù)

$ git clone https://github.com/micaixiaoduanku/hello-world.git
Cloning into 'hello-world'...
remote: Enumerating objects: 41, done.
remote: Total 41 (delta 0), reused 0 (delta 0), pack-reused 41
Unpacking objects: 100% (41/41), done.

然后修改文件肪凛,并放入暫存區(qū)

vim README.md 
$ git add README.md 
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   README.md


接著commit到本地倉(cāng)庫(kù)

$ git commit -m "第一次提交"
[master 62fb97b] 第一次提交
 1 file changed, 1 insertion(+), 3 deletions(-)

git log看下提交日志

git log
commit 62fb97b3d93d8bf347049921dfb7f7eddc58ff16 (HEAD -> master)
    第一次提交

每次commit都會(huì)生成一個(gè)唯一id.
最后push到遠(yuǎn)端:

$ git push origin master
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (1/1), done.
Writing objects: 100% (3/3), 272 bytes | 272.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/micaixiaoduanku/hello-world.git
   de97033..62fb97b  master -> master

git的分支創(chuàng)建和切換

git log
commit 62fb97b3d93d8bf347049921dfb7f7eddc58ff16 (HEAD -> master, origin/master, origin/HEAD)
Author: xxxxxx <xxxxx@xxxxx.com>
Date:   Sun Jan 6 21:46:07 2019 +0800

    第一次提交

目前HEAD是指向的master說(shuō)明堰汉,當(dāng)前是master分支辽社,接下來(lái)我們創(chuàng)建一個(gè)分支,并切換到它

$ git branch feature1
$ git checkout feature1
Switched to branch 'feature1'
huanglideMacBook-Pro:hello-world huangli$ git log
commit 62fb97b3d93d8bf347049921dfb7f7eddc58ff16 (HEAD -> feature1, origin/master, origin/HEAD, master)

目前可以注意到HEAD指向了feature1

3,git中的引用
image.png

當(dāng)下的代碼永遠(yuǎn)是HEAD. 當(dāng)做一個(gè)新的提交過(guò)后


image.png

HEAD永遠(yuǎn)是指到當(dāng)前的位置.

origin/master和origin/HEAD的意思

origin/master和origin/HEAD是遠(yuǎn)程倉(cāng)庫(kù)的鏡像.

git pull做了什么衡奥?

第一步做git fetch同步鏡像爹袁,第二步做git merge. (這個(gè)merge是fast forward)


image.png

Git深入之二:交互式rebase, 交互式add和工作流

merge中的fast forward


image.png

在上面這種情況下,master merge feature1 就是fast forward矮固,不會(huì)產(chǎn)生新的commit. 不過(guò)如果想在這種情況,不執(zhí)行fastforward也是可以的譬淳,通過(guò)

git merge --no-ff feature1
image.png

master merge feature2就是正常的merge, 會(huì)產(chǎn)生新的commit


image.png
feature branching

我們?cè)陂_(kāi)發(fā)的過(guò)程中會(huì)遇到遠(yuǎn)程分支和本地分支不同步的情況档址,如下


image.png

如上面這種情況,我本地master是不能向遠(yuǎn)程master進(jìn)行push操作的邻梆,必須先進(jìn)行一次merge操作


image.png

然后這個(gè)時(shí)候才能push.
如果運(yùn)氣不好守伸,還會(huì)遇到遠(yuǎn)程分支和本地分支不同步的情況,這個(gè)時(shí)候浦妄,還需要再次進(jìn)行一次merge操作了
git rebase操作

rebase的實(shí)際操作


image.png

當(dāng)feature1 rebase master后提交會(huì)變成這樣


image.png

交互式rebase主要是在rebase過(guò)程中提供一些可供選擇的功能尼摹,例如在rebase過(guò)程中合并commit, 修改一些提交信息等操作。

git rebase -i HEAD~2
pick 62fb97b 第一次提交
pick 4f94057 第二次提交
pick 0ad478e ttt

# Rebase de97033..0ad478e onto de97033 (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.

其他常用指令和git flow

...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剂娄,一起剝皮案震驚了整個(gè)濱河市蠢涝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阅懦,老刑警劉巖和二,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耳胎,居然都是意外死亡惯吕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門怕午,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)废登,“玉大人,你說(shuō)我怎么就攤上這事郁惜”ぞ啵” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵扳炬,是天一觀的道長(zhǎng)吏颖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)恨樟,這世上最難降的妖魔是什么半醉? 我笑而不...
    開(kāi)封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮劝术,結(jié)果婚禮上缩多,老公的妹妹穿的比我還像新娘呆奕。我一直安慰自己,他們只是感情好衬吆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布梁钾。 她就那樣靜靜地躺著,像睡著了一般逊抡。 火紅的嫁衣襯著肌膚如雪姆泻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天冒嫡,我揣著相機(jī)與錄音拇勃,去河邊找鬼。 笑死孝凌,一個(gè)胖子當(dāng)著我的面吹牛方咆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蟀架,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瓣赂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了片拍?” 一聲冷哼從身側(cè)響起煌集,我...
    開(kāi)封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎穆碎,沒(méi)想到半個(gè)月后牙勘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡所禀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年方面,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片色徘。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恭金,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出褂策,到底是詐尸還是另有隱情横腿,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布斤寂,位于F島的核電站耿焊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏遍搞。R本人自食惡果不足惜罗侯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溪猿。 院中可真熱鬧钩杰,春花似錦纫塌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至避除,卻和暖如春怎披,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驹饺。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工钳枕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赏壹。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像衔沼,于是被迫代替她去往敵國(guó)和親蝌借。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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

  • Git 是目前最流行的分布式版本控制系統(tǒng)之一指蚁。 版本控制指的是菩佑,記錄每次版本變更的內(nèi)容和時(shí)間等細(xì)節(jié),保留各版本之間...
    神齊閱讀 1,427評(píng)論 0 7
  • Add & Commit git init 初始化一個(gè) Git 倉(cāng)庫(kù)(repository)凝化,即把當(dāng)前所在目錄變成...
    冬絮閱讀 4,833評(píng)論 0 9
  • 昨天在同事電腦上操作了一把cherry-pick代碼,發(fā)現(xiàn)很多功能不用,就慢慢忘記了,梳理了下流程圖: git c...
    gogoingmonkey閱讀 668評(píng)論 0 0
  • PS:小白的入門筆記稍坯,希望能有用,主要參考廖君Git教程 操作環(huán)境說(shuō)明: github倉(cāng)庫(kù) https://git...
    呆呆的張先生閱讀 594評(píng)論 3 2
  • 好友姚迪大學(xué)畢業(yè)1年了,一直沒(méi)有找到合適的工作枪向。她本身是學(xué)傳媒的勤揩,按道理應(yīng)該往出版社或者廣播、電視媒體這個(gè)方向去找...
    認(rèn)真霸氣妮閱讀 238評(píng)論 0 0