Git常用命令合集

1. 配置git全局賬號信息

git 是分布式版本控制系統(tǒng),因此每臺機(jī)器都必須自報家門诬乞,也就是配置你的用戶名和郵箱。

  • 配置用戶名丽惭、郵箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
  • 查看用戶名、郵箱
git config user.name
git config user.email
  • 修改用戶名责掏、郵箱
git config --global --replace-all user.name "New Name"
git config --global --replace-all user.email "new@xx.com"

2. 創(chuàng)建版本庫,提交修改到版本庫

什么是版本庫呢换衬?版本庫又名倉庫证芭,英文名repository担映,你可以簡單理解成一個目錄废士,這個目錄里面的所有文件都可以被Git管理起來蝇完,每個文件的修改、刪除短蜕,Git都能跟蹤,以便任何時刻都可以追蹤歷史朋魔,或者在將來某個時刻可以“還原”。

  • 通過git init 將這個目錄變成Git可以管理的倉庫

    git init

  • git add 命令告知git警检,把文件添加到本地倉庫;

    // 1. 添加指定文件
    git add xxx.txt
    
    // 2. 添加所有修改文件
    git add .
  • git commit 命令告知git扇雕, 把文件提交到本地倉庫。
    git commit -m "本次提交的說明"

3. 版本回退

當(dāng)你不斷對文件進(jìn)行修改镶奉,然后不斷提交修改到版本庫里,就好比玩RPG游戲時腮鞍,每通過一關(guān)就會自動把游戲狀態(tài)存盤,如果某一關(guān)沒過去移国,你還可以選擇讀取前一關(guān)的狀態(tài)。有些時候迹缀,在打Boss之前,你會手動存盤祝懂,以便萬一打Boss失敗了,可以從最近的地方重新開始砚蓬。

Git也是一樣,每當(dāng)你覺得文件修改到一定程度的時候,就可以“保存一個快照”祟剔,這個快照在Git中被稱為commit。一旦你把文件改亂了物延,或者誤刪了文件,還可以從最近的一個commit恢復(fù)叛薯,然后繼續(xù)工作,而不是把幾個月的工作成果全部丟失买置。

  • 使用 git log 命令顯示從最近到最遠(yuǎn)的提交日志
git-log.png

如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上 --pretty=oneline 參數(shù)蓉冈。

  • 使用 git reset 命令回退到指令的版本
    // 第1種回退方式:
    // HEAD^表示上一個版本,HEAD^^表示上上一個版本寞酿,
    // HEAD~100表示上一百個版本
    git reset --hard HEAD^
    
    // 第2種回退方式:
    // 指定commit id 方式,commit id不需要寫全伐弹,git 會自動匹配
    git reset --hard 109abd
  • Git提供 git reflog 命令來記錄每一次Git操作命令
git-reflog.png

4. 撤銷修改

  1. 當(dāng)你把 工作區(qū) 的代碼改亂了之后,想直接丟棄工作區(qū)的修改時惨好,使用如下命令:

    git checkout -- readme.txt

  2. 當(dāng)你把改亂的代碼添加到 暫存區(qū) 之后,想要把暫存區(qū)的修改回退到工作區(qū)日川,使用如下命令:

    git reset HEAD readme.txt

    git reset 命令不僅可以回退版本,還可以把暫存區(qū)的修改回退到工作區(qū)回论。

  3. 如果已經(jīng)提交到版本庫,可以通過 版本回退 進(jìn)行回滾傀蓉,前提是沒有提交到遠(yuǎn)程倉庫。

5. 創(chuàng)建分支與合并分支

  • 創(chuàng)建分支葬燎,并切換到該分支

    1. git checkout -b dev
    2. 上述命令相當(dāng)于執(zhí)行了 git branch devgit checkout dev
    3. git branch : 列出所有分支萨蚕,當(dāng)前分支用 * 標(biāo)記靶草。
  • 合并分支

    1. git merge dev岳遥;
    2. git merge 用于合并分支到當(dāng)前分支;
    3. 合并完成后浩蓉,可以刪除dev分支(git branch -d dev)。

6. 解決沖突

  • 代碼沖突的原因:

    1. 不同的分支中捻艳,同時提交了對相同文件的修改。
    2. 不同分支(不同的本地分支认轨、本地與遠(yuǎn)程分支)。
  • 代碼沖突的解決:

    1. 使用 git merge 命令進(jìn)行合并嘁字,這種情況下Git無法執(zhí)行快速合并,只能試圖將各自的修改合并起來纪蜒,但這種合并可能就存在沖突。

    2. 當(dāng)出現(xiàn)沖突時(如下圖所示)纯续,就需要我們手動解決沖突后在提交。


      git-merge-conflict.png
    3. Git用 <<<<<<< 猬错,=======>>>>>>> 標(biāo)記出不同分支的內(nèi)容烤芦。

      git-merge-conflict-2.png

    4. 提交手動解決沖突后的代碼。

  • 提示:出現(xiàn)沖突時 git status 也可以用于查看沖突原因构罗。

7. 分支管理策略

通常,合并分支時遂唧,如果可能,Git會用Fast forward模式盖彭,但這種模式下纹烹,刪除分支后召边,會丟掉分支信息铺呵。如果要強(qiáng)制禁用Fast forward模式隧熙,Git就會在merge時生成一個新的commit,這樣贞盯,從分支歷史上就可以看出分支信息。

  • 禁用Fast forward模式進(jìn)行分支合并
    git merge --no-ff -m "禁用快速模式合并信息" dev

  • 分支管理策略

    1. master分支應(yīng)該是非常穩(wěn)定的躏敢,也就是僅用來發(fā)布新版本,平時不能在上面干活件余。
    2. dev分支是不穩(wěn)定的,到某個時候啼器,比如1.0版本發(fā)布時,再把dev分支合并到master上镀首,在master分支發(fā)布1.0版本鼠次。
    3. 你和你的小伙伴們每個人都在dev分支上干活更哄,每個人都有自己的分支腥寇,時不時地往dev分支上合并就可以了。

8. Bug分支

軟件開發(fā)中赦役,bug就像家常便飯一樣。有了bug就需要修復(fù)掂摔,在Git中,由于分支是如此的強(qiáng)大乙漓,所以,每個bug都可以通過一個新的臨時分支來修復(fù)叭披,修復(fù)后,合并分支,然后將臨時分支刪除熏纯。

  • 當(dāng)你正在dev分支干活時(工作只進(jìn)行一半),突然要創(chuàng)建bug分支fix bug樟澜,但是創(chuàng)建并切換分支需要提交當(dāng)前代碼,而你又不想提交該怎么辦往扔??萍膛?

    1. 使用 git stash 命令,將當(dāng)前工作現(xiàn)場存儲起來蝗罗,等以后再恢復(fù)現(xiàn)場再繼續(xù)工作。

      git-stash.png

    2. 切換到Bug分支進(jìn)行bug 修復(fù)串塑。

    3. 切換回dev分支,進(jìn)行現(xiàn)場恢復(fù)桩匪。

      • 查看之前的工作現(xiàn)場,使用 git stash list 命令查看;

      • 使用 git stash apply stash@{0}恢復(fù)現(xiàn)場傻昙,stash內(nèi)容并不刪除彩扔,你需要用 git stash drop來刪除妆档;

      • 使用 git stash pop stash@{0} 虫碉,恢復(fù)的同時把stash內(nèi)容也刪了。

9. Feature分支

添加一個新功能時敦捧,你肯定不希望因為一些實驗性質(zhì)的代碼,把主分支搞亂了兢卵,所以逼纸,每添加一個新功能济蝉,最好新建一個feature分支菠发,在上面開發(fā),完成后滓鸠,合并,最后糜俗,刪除該feature分支。

  • 開發(fā)一個新feature悠抹,最好新建一個分支扩淀;
  • 如果要丟棄一個沒有被合并過的分支楔敌,可以通過 git branch -D <name> 強(qiáng)行刪除驻谆。

10. 多人協(xié)作

當(dāng)你從遠(yuǎn)程倉庫克隆時卵凑,實際上Git自動把本地的master分支和遠(yuǎn)程的master分支對應(yīng)起來了胜臊,并且,遠(yuǎn)程倉庫的默認(rèn)名稱是origin象对。

  • 查看遠(yuǎn)程分支信息

    1. git remote
    2. git remote -v 查看詳細(xì)的遠(yuǎn)程分支信息
  • 推送分支,使用 git push origin 分支名

  • 抓取分支勒魔,使用 git pull origin 分支名

11. 忽略特殊文件

有些時候,你必須把某些文件放到Git工作目錄中沥邻,但又不能提交它們羊娃,比如保存了數(shù)據(jù)庫密碼的配置文件啦,等等蕊玷,每次git status都會顯示Untracked files ...

這個問題解決起來也很簡單,在Git工作區(qū)的根目錄下創(chuàng)建一個特殊的.gitignore文件垃帅,然后把要忽略的文件名填進(jìn)去,Git就會自動忽略這些文件贸诚。不需要從頭寫.gitignore文件厕吉,GitHub已經(jīng)為我們準(zhǔn)備了各種配置文件,只需要組合一下就可以使用了头朱。
所有配置文件可以直接在線瀏覽:gitignore

相關(guān)文章:
Git教程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末龄减,一起剝皮案震驚了整個濱河市项钮,隨后出現(xiàn)的幾起案子希停,更是在濱河造成了極大的恐慌烁巫,老刑警劉巖宠能,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異棍潘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)亦歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來水由,“玉大人,你說我怎么就攤上這事砂客。” “怎么了鞠值?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵渗钉,是天一觀的道長彤恶。 經(jīng)常有香客問我鳄橘,道長声离,這世上最難降的妖魔是什么瘫怜? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮鲸湃,結(jié)果婚禮上子寓,老公的妹妹穿的比我還像新娘笋除。我一直安慰自己别瞭,他們只是感情好株憾,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嗤瞎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贝奇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天掉瞳,我揣著相機(jī)與錄音,去河邊找鬼陕习。 笑死,一個胖子當(dāng)著我的面吹牛该镣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播损合,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嫁审!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起律适,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎擦耀,沒想到半個月后涩堤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡胎围,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年德召,在試婚紗的時候發(fā)現(xiàn)自己被綠了汽纤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片上岗。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蕴坪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出背传,到底是詐尸還是另有隱情,我是刑警寧澤径玖,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站梳星,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏冤灾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一韵吨、第九天 我趴在偏房一處隱蔽的房頂上張望话侄。 院中可真熱鬧学赛,春花似錦、人聲如沸盏浇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至滴劲,卻和暖如春攻晒,著一層夾襖步出監(jiān)牢的瞬間班挖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工萧芙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留假丧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓包帚,卻偏偏與公主長得像运吓,于是被迫代替她去往敵國和親渴邦。 傳聞我的和親對象是個殘疾皇子拘哨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

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

  • 聲明:這篇文章來源于廖雪峰老師的官方網(wǎng)站,我僅僅是作為學(xué)習(xí)之用 Git簡介 Git是什么宅静? Git是目前世界上最先...
    橫渡閱讀 3,959評論 3 27
  • Git 是目前最流行的分布式版本控制系統(tǒng)之一。 版本控制指的是姨夹,記錄每次版本變更的內(nèi)容和時間等細(xì)節(jié),保留各版本之間...
    神齊閱讀 1,431評論 0 7
  • 一:Git是什么磷账? Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。 二:SVN與Git的最主要的區(qū)別逃糟? SVN是集...
    Splendid飛羽閱讀 323評論 0 0
  • 教程網(wǎng)址:http://www.liaoxuefeng.com/wiki/0013739516305929606d...
    maybenai閱讀 688評論 0 1
  • 安裝Git Git的下載地址:Git官網(wǎng)下載地址 Git本地倉庫和命令 配置用戶 下載完Git后,右鍵會有一個Gi...
    TokyoZ閱讀 4,510評論 1 7