Git 常用命令總結(jié)?

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
Github Logo
經(jīng)過這幾天的學(xué)習(xí)Github,現(xiàn)在也對Github有了更深的一層了解.

Git是一個分布式文件版本管理系統(tǒng)女轿。Git 直接記錄文件快照丹鸿,而非差異比較,所以在切換分支速度極快缓呛,幾乎是秒切催享。所有操作基本上都是本地執(zhí)行,時刻保持?jǐn)?shù)據(jù)完整性哟绊,每臺機器上都有完整的 Git 提交歷史因妙,即使不聯(lián)網(wǎng),也能任意切換到歷史版本票髓。多數(shù)操作僅添加數(shù)據(jù)攀涵,也就是說,操作都是可恢復(fù)的洽沟。

初始化目錄

# 創(chuàng)建空的 Git 目錄
git init 
git add README
git commit -m 'initial project version'

# 或者使用 clone 方式從遠(yuǎn)程復(fù)制一個
git clone git://git.kernel.org/pub/scm/git/git.git [mygit]```

##文件狀態(tài)

工作目錄下面的所有文件都不外乎這兩種狀態(tài):已跟蹤或未跟蹤以故。已跟蹤的文件是指本來就被納入版本控制管理的文件,在上次快照中有它們的記錄玲躯,工作一段時間后据德,它們的狀態(tài)可能是未更新(nothing to commit),已修改(Changes not staged for committed)或者已放入暫存區(qū)(Changes to be committed)跷车。而所有其他文件都屬于未跟蹤文件(Untracked files)棘利,它們既沒有上次更新時的快照,也不在當(dāng)前的暫存區(qū)域朽缴。如下圖

![](http://upload-images.jianshu.io/upload_images/25574-26c6796007af0029.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- `README.txt` 已放入暫存區(qū)善玫,等待被提交。使用`git commit -m 'change log'`提交
- `benchmarks.rb`已修改密强,但修改未放入暫存區(qū)茅郎。使用`git add benchmarks.rb`添加到暫存區(qū)
- `b.txt`未根據(jù),需要用命令`git add b.txt`添加到暫存區(qū)或渤。

需要注意的是系冗,每次修改文件都需要執(zhí)行`git add filename`將修改添加到暫存區(qū),而不僅僅只是新文件薪鹦。也就是說掌敬,每次更改惯豆,都要執(zhí)行兩個命令,`git add`和`git commit`才能將更改添加到版本庫中奔害。一次完整的提交過程:

將當(dāng)前目前下的所有更改添加到暫存區(qū)楷兽,或者根據(jù)情況,只添加某些文件的更改华临,將 . 換成文件名

git add .

將暫存區(qū)的內(nèi)容添加到 Git 版本庫中芯杀,永久存儲。這一步無法選擇要提交哪些內(nèi)容雅潭,所有暫存區(qū)的內(nèi)容都會被提交揭厚。

git commit -m 'change log'```

.gitignore

有時候,我們可能不想跟蹤一些文件寻馏,比如工程文件的配置文件棋弥,編譯生成的二進(jìn)制文件。這些文件無需納入版本管理诚欠,否則在團隊協(xié)作,合并代碼時容易發(fā)生沖突漾岳。在項目的根目錄下轰绵,新建.gitignore文件,將不需要跟蹤的文件添加到里面尼荆,如下:

# 此為注釋 – 將被 Git 忽略
# 忽略所有 .DS_Store 結(jié)尾的文件
*.DS_Store
# 但 lib.a 除外
!lib.a
# 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的所有文件
build/
# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
# A **/ pattern is available in Git since version 1.8.2.```

如果在創(chuàng)建`.gitignore`文件前左腔,這些文件已經(jīng)進(jìn)入版本管理時,需要先將它們從暫存區(qū)中刪除:`git rm —cached filename` 或 `git rm -rf —cached .`捅儒,讓`.gitignore`生效液样。

##對比

`git diff`可以查看當(dāng)前修改和某次提交之后都改動了哪些東西。

>- 1.查看已暫存和未暫存的更新 :git diff
- 2.查看已暫存和上次提交時的快照之間的變化: git diff —cached 或 git diff —staged
- 3.對比當(dāng)前提交和某個提交:git diff 99734f7ff
- 4.對比當(dāng)前分支和其他某個分支:git diff test

![git diff](http://upload-images.jianshu.io/upload_images/25574-16a320bf2080b86c.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

##查看提交歷史

>- 1.查看提交日志巧还,只列出時間和提交信息:git log
- 2.查看最近2次提交的歷史鞭莽,并列出改動的內(nèi)容差異:git log -p -2
- 3.以圖表的形式列出提交歷史: git log --oneline --graph

![git log -p -2](http://upload-images.jianshu.io/upload_images/25574-30c6db6abcb0cdb9.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

##撤銷操作

>- 1.修改最后一次提交信息:git commit --amend
- 2.取消已經(jīng)暫存的文件:git reset HEAD filename
- 3.取消對文件的修改:git checkout -- filename
- 4.返回到某個節(jié)點,不保留修改:git reset --hard HASH
- 5.返回到某個節(jié)點麸祷,保留修改:git reset --soft HASH


##遠(yuǎn)程倉庫

>- 1.查看:git remote -v
- 2.添加遠(yuǎn)程倉庫:git remote add pb git://github.com/paulboone/ticgit.git
- 3.拉取遠(yuǎn)程倉庫的代碼到本地倉庫:git fetch pb
- 4.修改遠(yuǎn)程倉庫地址:git remote set-url origin git://github.com/newuser/ticgit.git

##打標(biāo)簽

- 每次推送一個新的版本到遠(yuǎn)程倉庫的 master 時澎怒,需要打一個版本號的標(biāo)簽。

>- 1.查看標(biāo)簽:git tag -l
- 2.打標(biāo)簽:git tag -a v1.4 -m 'my version 1.4'
- 3.查看相應(yīng)標(biāo)簽的版本信息:git show v1.4
- 4.推送標(biāo)簽到遠(yuǎn)程:git push origin v1.5 或者 git push origin --tags


##分支

- 在 Git 中提交時阶牍,會保存一個提交(commit)對象喷面,該對象包含一個指向暫存內(nèi)容快照的指針。Git 中的分支走孽,本質(zhì)上是個指向 commit 對象的可變指針惧辈。


##新建分支

git branch test
git checkout test

或者直接 checkout -b, -b 參數(shù)表示新創(chuàng)建一個分支

git checkout -b test```

合并分支

  • 將 issue-1 分支合并到 master:
git checkout master
git merge issue-1 

  #  合并后刪除
git branch -d issue-1```

##沖突解決
- 在`merge`代碼的時候,如果兩個分支對同一行文件做了不一樣的修改磕瓷,便會產(chǎn)生沖突盒齿。解決沖突需要人為介入,編輯沖突的文件,選擇正確的一行代碼县昂,然后重新提交肮柜。
- 如果代碼產(chǎn)生沖突,沖突的文件會出現(xiàn)類似下面的內(nèi)容:

<<<<<<< HEAD
<div id="footer">contact us at support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>

issue-1```

<<<<<<< HEAD到======= 之間是當(dāng)前分支的代碼倒彰,=======>>>>>>> issue-1issue-1分支的代碼审洞,這行代碼不一致,這里我們選擇issue-1的代碼待讳,修改后這幾行變?yōu)?/p>

<div id="footer">
      please contact us at support@github.com
</div>```

修改完之后芒澜,運行`git add .; git commit -m 'merged'`提交當(dāng)前修改后的代碼,沖突便解決了创淡,代碼也合并了痴晦。

##管理分支
>- 列出當(dāng)前所有本地分支: git branch
- 包含各分支最后提交信息: git branch -v
- 查看當(dāng)前分支已合并的分支: git branch --merged
- 刪除分支:git branch -d testing


##遠(yuǎn)程分支

>遠(yuǎn)程分支`(remote branch)`是對遠(yuǎn)程倉庫中的分支的索引,遠(yuǎn)程分支的表示形式:`(遠(yuǎn)程倉庫名)/(分支名)` 琳彩。如 `origin/master`誊酌,`origin` 是遠(yuǎn)程倉庫名,`master`是分支名露乏。

>查看遠(yuǎn)程分支: `git branch -r`
推送本地分支: `git push origin master`
拉取遠(yuǎn)程分支并合并到當(dāng)前分支:`git pull origin master`
獲取遠(yuǎn)程代碼到本地倉庫:`git fetch origin`
合并遠(yuǎn)程分支到本地分支代碼:`git merge origin/master`
本地新建遠(yuǎn)程分支:`git checkout -b hotfix origin/master` # 從遠(yuǎn)程 master 分支上新建本地 hotfix 分支
刪除遠(yuǎn)程分支碧浊,在分支名前加冒號:`git push origin :hotfix` # 刪除遠(yuǎn)程 hostfix 分支
- git pull = git fetch + git merge

##Stash
- 要切換到其他分支又不提交當(dāng)前的修改時,使用 git stash 保存當(dāng)前修改到一個堆棧中瘟仿,需要時重新應(yīng)用修改

>- 1.保存修改:git stash
- 2.應(yīng)用保存起來的修改:git stash apply 或 git stash pop
- 3.查看已保存的stashing:git stash list
- 4.刪除stash:git stash drop


###具體可以參照此文http://iissnan.com/progit/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箱锐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子劳较,更是在濱河造成了極大的恐慌驹止,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件观蜗,死亡現(xiàn)場離奇詭異臊恋,居然都是意外死亡,警方通過查閱死者的電腦和手機嫂便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門捞镰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毙替,你說我怎么就攤上這事岸售。” “怎么了厂画?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵凸丸,是天一觀的道長。 經(jīng)常有香客問我袱院,道長屎慢,這世上最難降的妖魔是什么瞭稼? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮腻惠,結(jié)果婚禮上环肘,老公的妹妹穿的比我還像新娘。我一直安慰自己集灌,他們只是感情好悔雹,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著欣喧,像睡著了一般腌零。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唆阿,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天益涧,我揣著相機與錄音,去河邊找鬼驯鳖。 笑死闲询,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浅辙。 我是一名探鬼主播嘹裂,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摔握!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丁寄,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤氨淌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伊磺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盛正,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年屑埋,在試婚紗的時候發(fā)現(xiàn)自己被綠了豪筝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡摘能,死狀恐怖续崖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情团搞,我是刑警寧澤严望,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站逻恐,受9級特大地震影響像吻,放射性物質(zhì)發(fā)生泄漏峻黍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一拨匆、第九天 我趴在偏房一處隱蔽的房頂上張望姆涩。 院中可真熱鬧,春花似錦惭每、人聲如沸骨饿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽样刷。三九已至,卻和暖如春览爵,著一層夾襖步出監(jiān)牢的瞬間置鼻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工蜓竹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留箕母,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓俱济,卻偏偏與公主長得像嘶是,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蛛碌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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

  • 基礎(chǔ)命令 用戶設(shè)置 初始化倉庫 把文件添加到倉庫 把文件提交到倉庫 添加文件到Git倉庫 分兩步: 第一步聂喇,使用命...
    前端渣渣閱讀 1,447評論 0 20
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,632評論 9 163
  • Git是一個分布式文件版本管理系統(tǒng)。Git 直接記錄文件快照蔚携,而非差異比較希太,所以在切換分支速度極快,幾乎是秒切酝蜒。所...
    yanging閱讀 3,237評論 13 153
  • dxxxxxxxxx cccc asdf asdfas asdf
    答不溜姐閱讀 63評論 0 0
  • 今天第一次通宵加班誊辉,如果下個月還是這樣不能再呆下去了。一周工作80個小時以上亡脑,還想干點啥別的事堕澄?真心不想多談了,能...
    任雨點閱讀 134評論 0 0