Git常用命令大全

本篇文章主要總結(jié)作者自己日常使用的一些命令臂拓,整理出來方便后期查看,以及給一些有需要的人著蛙。

一、拉取倉(cāng)庫(kù)代碼

至于Git工具安裝請(qǐng)參考另外兩篇文章:
Windows
Ubuntu
git clone 如果本地目錄不想與遠(yuǎn)程倉(cāng)庫(kù)同名怎么辦恼布??也有辦法搁宾,將目錄名作為git clone命令的第二個(gè)參數(shù):

git clone git@github.com:XXXX/nothing2.git localDev(localDev為遠(yuǎn)程倉(cāng)庫(kù)的分支名)

git init也可以用init命令拉取折汞,不過這個(gè)需要好幾步才能實(shí)現(xiàn)

git init
git remote add origin git@github.com:XXXX/nothing2.git
git fetch origin dev(dev為遠(yuǎn)程倉(cāng)庫(kù)的分支名)

二、修改本地代碼并提交到遠(yuǎn)程倉(cāng)庫(kù)

1盖腿、分支創(chuàng)建爽待、刪除、切換翩腐、合并

git branch master創(chuàng)建本地分支master
git push origin 本地分支名:倉(cāng)庫(kù)分支名創(chuàng)建倉(cāng)庫(kù)分支鸟款,大概意思是將本地分支推送到倉(cāng)庫(kù),如果倉(cāng)庫(kù)沒有這個(gè)分支名就新建一個(gè)倉(cāng)庫(kù)分支
git branch查看本地現(xiàn)有所有分支
git branch -r查看倉(cāng)庫(kù)現(xiàn)有所有分支
git branch -a查看本地和倉(cāng)庫(kù)現(xiàn)有所有分支
git checkout master切換到本地分支master
git checkout -b master新建本地分支master并將切換到master分支
git branch -d master刪除本地master分支茂卦,當(dāng)然當(dāng)前分支一定不能在master分支上
git push origin --delete master刪除倉(cāng)庫(kù)分支master何什,小心使用
git merge master將本地master分支合并到當(dāng)前本地分支上

2、更新本地代碼

gti pull 相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地
git pull origin 倉(cāng)庫(kù)分支名:本地分支名拉取遠(yuǎn)程倉(cāng)庫(kù)分支與本地分支合并
git fetch相當(dāng)于是從遠(yuǎn)程獲取最新到本地等龙,不會(huì)自動(dòng)merge处渣,比如如下指令:

git fetch orgin master //將遠(yuǎn)程倉(cāng)庫(kù)的master分支下載到本地當(dāng)前branch中
git log -p master  ..origin/master //比較本地的master分支和origin/master分支的差別
git merge origin/master //進(jìn)行合并

也可以如下一樣:

git fetch origin master:tmp //從遠(yuǎn)程倉(cāng)庫(kù)master分支獲取最新,在本地建立tmp分支
git diff tmp //將當(dāng)前分支和tmp進(jìn)行對(duì)比
git merge tmp //合并tmp分支到當(dāng)前分支

3蛛砰、pull時(shí)拉取代碼跟本地代碼沖突

git stash 用這個(gè)命令將本地代碼先暫存在本地倉(cāng)庫(kù)中罐栈,再拉遠(yuǎn)程倉(cāng)庫(kù)代碼,再合并暴备,具體執(zhí)行指令:

git stash 將本地代碼stash到倉(cāng)庫(kù)中
git pull 將遠(yuǎn)程代碼拉取到本地
git stash pop 將倉(cāng)庫(kù)中的代碼合到本地最新代碼中
git stash show  顯示stash合并到本地代碼后悠瞬,哪些文件會(huì)修改,以及修改的概述

4涯捻、查看當(dāng)前分支修改

git status查看當(dāng)前工作區(qū)和暫存區(qū)文件的狀態(tài)浅妆,一般文件顯示紅色表示未追蹤,綠色表示已添加進(jìn)本地暫存區(qū)障癌;
git add 修改的文件名將文件從未追蹤狀態(tài)納入追蹤凌外,并提交到暫存區(qū);git add .`加一個(gè)點(diǎn)表示包含全部未追蹤文件涛浙;

git diff 修改的文件名可以查看文件哪里被修改了康辑;

git reset HEAD add的文件名 將 git add之后的文件從暫存庫(kù)中拿出,變成未跟蹤狀態(tài)

5轿亮、git commit

git commit 主要是將暫存區(qū)里的改動(dòng)給提交到本地的版本庫(kù)疮薇。每次使用git commit 命令我們都會(huì)在本地版本庫(kù)生成一個(gè)40位的哈希值,這個(gè)哈希值也叫commit-id;
commit-id在版本回退的時(shí)候是非常有用的我注,它相當(dāng)于一個(gè)快照,可以在未來的任何時(shí)候通過與git reset的組合命令回到這里.

git commit -m "message" 這種是比較常見的用法按咒,-m 參數(shù)表示可以直接輸入后面的“message”,如果不加 -m參數(shù)但骨,那么是不能直接輸入“message”的励七,而是會(huì)調(diào)用一個(gè)編輯器一般是vim來讓你輸入這個(gè)“message”智袭,
message即是我們用來簡(jiǎn)要說明這次提交的語(yǔ)句。還有另外一種方法掠抬,當(dāng)我們想要提交的message很長(zhǎng)或者我們想描述的更清楚更簡(jiǎn)潔明了一點(diǎn)吼野,我們可以使用這樣的格式,如下:

git commit -m ‘
        message1
        message2
        message3
        ’

git commit -a -m "message" 可以不經(jīng)過git add把文件先放入暫存區(qū)两波,而直接提交到本地倉(cāng)庫(kù)中瞳步,一定小心使用。

6雨女、本地倉(cāng)庫(kù)提交到遠(yuǎn)程倉(cāng)庫(kù)

git push以下是幾種提交指令:

git push origin master:master (在local repository中找到名字為master的branch谚攒,使用它去更新remote repository下名字為master的branch,如果remote repository下不存在名字是master的branch氛堕,那么新建一個(gè))
git push origin master (省略了<dst>馏臭,等價(jià)于“git push origin master:master”)
git push origin master:refs/for/mybranch (在local repository中找到名字為master的branch,用他去更新remote repository下面名字為mybranch的branch)
git push origin HEAD:refs/for/mybranch (HEAD指向當(dāng)前工作的branch讼稚,master不一定指向當(dāng)前工作的branch括儒,所以我覺得用HEAD還比master好些)
git push origin :mybranch (再origin repository里面查找mybranch,刪除它锐想。用一個(gè)空的去更新它帮寻,就相當(dāng)于刪除了)

7、其他一些常用命令

git reset回滾代碼赠摇,回到原先某次提交

git log  可以加 -3 這樣就只查找最近3條提交記錄
git clean -f 刪除當(dāng)前目錄下所有沒有track過的文件
git reset --hard 'commitId'   'commitId'可以通過`git log`查看固逗,選擇你想要回滾的記錄
git revert -n 'commitId' 重新復(fù)制一份‘commitId’的代碼,跟reset的區(qū)別就是reset是往回滾藕帜,而revert只是復(fù)制

git checkout的三個(gè)作用

第一個(gè)就是切換分支烫罩。例如你從遠(yuǎn)程倉(cāng)庫(kù)clone下來所有的源代碼,你git branch一下會(huì)看到你通常是在master洽故,如果你想切換到某一個(gè)分支上呢贝攒? git checkout <branchname>
第二個(gè)就是放棄對(duì)某個(gè)文件的修改。例如你想放棄對(duì)某個(gè)文件Hello.cpp的修改时甚,git checkout -- <Hello.cpp>
第三個(gè)就是新建一個(gè)分支隘弊,git checkout <-b> <branchname>,不加-b的話只新建不切換到新的分支上荒适,加-b新建并切換到該分支上

8梨熙、如何屏蔽本地代碼修改

1:如果修改的代碼還未提交過直接在文件.gitignore中添加想要屏蔽的文件
2:如果已經(jīng)提交過的是不行的,需要執(zhí)行
git update-index --assume-unchanged Xml/config.xml (Xml/config.xml是需要屏蔽的文件)
3:恢復(fù)2步驟中的文件
git update-index --no-assume-unchanged + 文件名

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刀诬,一起剝皮案震驚了整個(gè)濱河市串结,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖肌割,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異帐要,居然都是意外死亡把敞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門榨惠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奋早,“玉大人,你說我怎么就攤上這事赠橙〉⒆埃” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵期揪,是天一觀的道長(zhǎng)掉奄。 經(jīng)常有香客問我,道長(zhǎng)凤薛,這世上最難降的妖魔是什么姓建? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮缤苫,結(jié)果婚禮上速兔,老公的妹妹穿的比我還像新娘。我一直安慰自己活玲,他們只是感情好涣狗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舒憾,像睡著了一般镀钓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上珍剑,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天掸宛,我揣著相機(jī)與錄音,去河邊找鬼招拙。 笑死唧瘾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的别凤。 我是一名探鬼主播饰序,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼规哪!你這毒婦竟也來了求豫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝠嘉,沒想到半個(gè)月后最疆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚤告,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年努酸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杜恰。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡获诈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出心褐,到底是詐尸還是另有隱情舔涎,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布逗爹,位于F島的核電站亡嫌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桶至。R本人自食惡果不足惜昼伴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镣屹。 院中可真熱鬧圃郊,春花似錦、人聲如沸女蜈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伪窖。三九已至逸寓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間覆山,已是汗流浹背竹伸。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留簇宽,地道東北人勋篓。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像魏割,于是被迫代替她去往敵國(guó)和親譬嚣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • 分布式版本管理工具 git屬于分布式 svn集中式 git安裝 git初始化一個(gè)倉(cāng)庫(kù) 其實(shí)就是創(chuàng)建了一個(gè).git隱...
    SnowDragonYY閱讀 1,506評(píng)論 0 0
  • 一钞它、 Git 常用命令速查git branch 查看本地所有分支git status 查看當(dāng)前狀態(tài)git comm...
    Yaoxue9閱讀 624評(píng)論 0 3
  • Git是一個(gè)很強(qiáng)大的分布式版本控制系統(tǒng)拜银。它不但適用于管理大型開源軟件的源代碼殊鞭,管理私人的文檔和源代碼也有很多優(yōu)勢(shì)。...
    小叮當(dāng)愛學(xué)習(xí)閱讀 522評(píng)論 0 4
  • Git是一個(gè)很強(qiáng)大的分布式版本控制系統(tǒng)尼桶。它不但適用于管理大型開源軟件的源代碼操灿,管理私人的文檔和源代碼也有很多優(yōu)勢(shì)。...
    遠(yuǎn)處那片海閱讀 245評(píng)論 0 0
  • Git 是一個(gè)很強(qiáng)大的分布式版本控制系統(tǒng)泵督。它不但適用于管理大型開源軟件的源代碼牲尺,管理私人的文檔和源代碼也有很多優(yōu)勢(shì)...
    龐哈哈哈12138閱讀 342評(píng)論 0 3