Git常用命令

在此對經(jīng)常用到的一些git命令進(jìn)行總結(jié)
  1. git基本操作
    git config --global user.name "Name"
    git config --global user.email "emailaddress"
    這個(gè)命令會(huì)在"~/.gitconfig"輸出設(shè)置文件。
    git init 初始化倉庫
    git status 查看狀態(tài)
    git add 添加文件,其實(shí)更準(zhǔn)確的說應(yīng)該是跟蹤文件。這個(gè)命令有多個(gè)功能,可以用它跟蹤一個(gè)新文件,也可以把已經(jīng)跟蹤的文件放到暫存區(qū),還能用于合并時(shí)把有沖突的文件標(biāo)記為已解決狀態(tài)等??梢岳斫膺@個(gè)命令為"添加內(nèi)容到下一次提交中"。
    .gitignore 不想納入Git管理的文件可以在此文件中列出。
    git commit -m "..." 保存?zhèn)}庫的歷史記錄(-m可以不加,之后會(huì)出現(xiàn)詳細(xì)記錄部分,第一行簡述,第二行空格,第三行是記述更改的原因和詳細(xì)內(nèi)容)
    git reset --hard HEAD 重置命令,讓工作目錄回到上次提交的狀態(tài)。(如果只是恢復(fù)一個(gè)文件的話可以用git checkout file_name
    git log 查看提交日志
    git diff 查看更改前后的差別,包括工作樹、暫存區(qū)、最新提交之間的差別(+號是新添加的行,被刪除的行用-),
    可以加HEAD,這里的HEAD是指向當(dāng)前分支中最新一次提交的指針。
    git rm 可以用此命令從Git中移除某個(gè)文件。先從暫存區(qū)移除然后再提交。
    git mv file_from file_to 將文件重命名。

  2. 分支操作
    git branch 分支名 創(chuàng)建分支名,也會(huì)在當(dāng)前提交對象上創(chuàng)建一個(gè)指針??梢约?code>-d參數(shù)來刪除一個(gè)分支。如果僅僅運(yùn)行git branch會(huì)得到當(dāng)前所有分支的一個(gè)列表。

分支

Git的"master"分支并不是一個(gè)特殊分支。它就跟其他分支完全沒有區(qū)別。之所以幾乎每一個(gè)倉庫都有master分支,是因?yàn)?code>git init命令默認(rèn)創(chuàng)建它,并且大多數(shù)人一般都不去改動(dòng)它。

Git有一個(gè)名為HEAD的特殊指針,指向當(dāng)前所在的本地分支。可以用git log --decorate來查看各個(gè)分支當(dāng)前所指的對象。
git checkout 分支名 可以切換到一個(gè)已經(jīng)存在的分支。
git log --online --decorate --graph --all 這行命令會(huì)輸出提交歷史、各個(gè)分支的指向以及項(xiàng)目的分支分叉情況。
git merge 分支名 合并分支

如果順著一個(gè)分支走下去能夠到達(dá)另一個(gè)分支,Git在合并這兩個(gè)分支的時(shí)候就只會(huì)簡單的將指針向前推進(jìn),因?yàn)檫@種情況下的合并操作沒有需要解決的分歧,這種情況稱之為『快進(jìn)』,(fast-forward)。

git ls-remote (remote) 獲得遠(yuǎn)程引用的完整列表,或者用git remote show (remote) 獲得遠(yuǎn)程分支的更多信息。
git fetch 更新自己的遠(yuǎn)程倉庫引用
git pull 拉取命令,大多數(shù)情況下它的含義是一個(gè)git fetch 加一個(gè) git merge。
git push [remote-name] [branch-name] 推送到遠(yuǎn)程倉庫服務(wù)器。
git stash 保存當(dāng)前操作(或者說是保存工作目錄的中間狀態(tài))。加list參數(shù)可以查看一系列的存儲(chǔ)。git stash pop stash@{num}用來恢復(fù)儲(chǔ)存,num是要恢復(fù)的儲(chǔ)存的序號。git stash pop命令是恢復(fù)stash隊(duì)列中的stash@{0},不過相應(yīng)的儲(chǔ)存記錄會(huì)被刪除。也可以用git stash apply來應(yīng)用最近的保存的儲(chǔ)存,或者加stash@{num}來指定應(yīng)用哪一個(gè)儲(chǔ)存。git stash clear用來清除所有的儲(chǔ)存記錄。

著重說一下git rebase ,一個(gè)區(qū)別于merge的命令,可以用以下圖片來比較這兩個(gè)命令的不同:

合并前

使用git merge合并分支

git merge

如果想讓"mywork"分支歷史看起來像沒有經(jīng)過任何合并一樣,使用git rebase

git rebase origin```
這些命令會(huì)把"mywork"分支里的每個(gè)提交(commit)取消掉,并且把它們臨時(shí) 保存為補(bǔ)丁(patch)(這些補(bǔ)丁放到".git/rebase"目錄中),然后把"mywork"分支更新 到最新的"origin"分支,最后把保存的這些補(bǔ)丁應(yīng)用到"mywork"分支上。
當(dāng)'mywork'分支更新之后,它會(huì)指向這些新創(chuàng)建的提交(commit),而那些老的提交會(huì)被丟棄。 如果運(yùn)行垃圾收集命令`pruning garbage collection`, 這些被丟棄的提交就會(huì)刪除.
![git rebase](http://upload-images.jianshu.io/upload_images/3830214-717253416ce8f28a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

兩個(gè)命令所產(chǎn)生的歷史區(qū)別:
![merge和rebase所產(chǎn)生的歷史的區(qū)別](http://upload-images.jianshu.io/upload_images/3830214-6b5a857b7c44cadb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

在rebase的過程中,也許會(huì)出現(xiàn)沖突(conflict). 在這種情況,Git會(huì)停止rebase并會(huì)讓你去解決 沖突;在解決完沖突后,用`git-add`命令去更新這些內(nèi)容的索引(index), 然后,無需執(zhí)行`git-commit`,只要執(zhí)行`git rebase --continue`這樣git會(huì)繼續(xù)應(yīng)用(apply)余下的補(bǔ)丁。

在任何時(shí)候,都可以用`--abort`參數(shù)來終止`rebase`的行動(dòng),并且"mywork" 分支會(huì)回到`rebase`開始前的狀態(tài)。`git rebase --abort`

推薦大家?guī)讉€(gè)學(xué)習(xí)Git的網(wǎng)站:
[http://learngitbranching.js.org/](http://learngitbranching.js.org/) (很不錯(cuò)的git分支練習(xí)網(wǎng)站)
[Git學(xué)習(xí)文檔](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6)

以上為常用的一些命令,在學(xué)習(xí)的過程中遇到的其他的常用命令以及知識點(diǎn)會(huì)陸續(xù)補(bǔ)充,未完待續(xù)...

####參考資料
[git-scm.com](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6)
[Git Community Book 中文版](http://gitbook.liuhui998.com/4_2.html)
《GitHub入門與實(shí)踐》
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 配置 首先是配置帳號信息ssh -T git@github.com # 登陸 github 修改項(xiàng)目中的個(gè)人信息 ...
    guanguans閱讀 821評論 0 3
  • Git常用命令總結(jié) git init 在本地新建一個(gè)repo,進(jìn)入一個(gè)項(xiàng)目目錄,執(zhí)行g(shù)it init,會(huì)初始化一個(gè)...
    曾基錕閱讀 299評論 0 0
  • git init 在本地新建一個(gè)repo,進(jìn)入一個(gè)項(xiàng)目目錄,執(zhí)行g(shù)it init,會(huì)初始化一個(gè)repo,并在當(dāng)前文...
    qwerer閱讀 307評論 0 0
  • 從江城遠(yuǎn)望出去,高聳山脈綿延的地區(qū)塘嶺,孕育著紅糖老姜茶中重要食材——老姜。流于形式的商家們往往辨別不出老姜和菜姜...
    少女愛旅游閱讀 597評論 1 3
  • 我問佛,剪斷塵緣又如何?最終還是為她奔波,萬事蹉跎。 我問佛,四大皆空又如何?最終還是為她湮沒,心隨風(fēng)落。 我問佛...
    肖喵閱讀 318評論 0 0

友情鏈接更多精彩內(nèi)容