git常用命令介紹和使用

摘要:本篇文章將記錄git常用命令介紹和使用夭委,主要包括clone幅狮、init、add株灸、mv崇摄、reset、rm慌烧、log逐抑、status、branch屹蚊、checkout厕氨、commit、fetch汹粤、pull命斧、push。

clone:克隆一個倉庫到新目錄

從遠程主機克隆一個版本庫嘱兼。

$ gitclone<版本庫的網(wǎng)址>

比如版本庫網(wǎng)址為https://github.com/naffitary/gitstudy.git国葬。

$ gitclonehttps://github.com/naffitary/gitstudy.git

該命令會在本地主機生成一個目錄,與遠程主機的版本庫同名 。

如果要指定不同的目錄名汇四,可以將目錄名作為git clone命令的第二個參數(shù)接奈。

$ git clone<版本庫的網(wǎng)址><本地目錄名>

比如

$ gitclonehttps://github.com/naffitary/gitstudy.git project.git

該命令會在當前目錄下生成project.git 內(nèi)容從版本庫的網(wǎng)址中克隆。

git clone支持多種協(xié)議船殉,除了HTTP(s)以外鲫趁,還支持SSH、Git利虫、本地文件協(xié)議等挨厚。

init:創(chuàng)建一個空的Git倉庫或重新初始化現(xiàn)有的Git倉庫

運用mkdir命令創(chuàng)建一個git目錄

$mkdirproject.git

創(chuàng)建了project.git 目錄,但沒有輸出糠惫。

切換到xxx.git目錄(這里我用的是project)下

$cdproject.git/

切換到project.git目錄下疫剃,沒有輸出。

顯示目標列表硼讽,跟后面產(chǎn)生對比

$ls

沒有輸出巢价。

初始化倉庫

$ git--bare init

輸出Initialized empty Git repository in D:/php相關(guān)/git/Git/project.git/,表示初始化完畢固阁,沒有出錯壤躲。而且project.git 目錄會有bare標志,顯示為project.git (BARE:master)

再次顯示目標列表备燃,跟前面產(chǎn)生對比

$ls

輸出project.git 下的目標列表config description HEAD hooks/ info/ objects/ refs/

add: 添加文件內(nèi)容到索引

git add 碉克, 只將那些創(chuàng)建或修改并且沒有被刪除的文件添加到索引,其中可以是文件并齐,也可以是目錄漏麦。(aa就是我建的一個目錄。)

$gitaddaa

這里我遇到一個問題况褪,正確add任何存在的文件會提示錯誤信息撕贞,其它git所屬命令(除init)也會提示錯誤信息:fatal: This operation must be run in a work tree。通過查找資料和實踐發(fā)現(xiàn)测垛,可能是我創(chuàng)建的是空倉庫的緣故捏膨,在git --bare init之后,先后輸入git init和git remote add origin命令然后git add aa赐纱,就可以正確添加了脊奋。

git add -u ,把中所有跟蹤文件中被修改過或已刪除文件的信息添加到索引庫疙描。 它不會處理沒有跟蹤的文件。

$gitadd-u? aa

git add -A 讶隐,把中所有跟蹤文件中被修改過或已刪除文件和所有未跟蹤的文件信息添加到索引庫起胰。

比如,$git add -A aa

git add -i , 查看中被所有修改過或已刪除文件但沒有提交的文件效五,

并通過其revert子命令可以查看中所有未跟蹤的文件地消,同時進入一個子命令系統(tǒng)。

比如

$gitadd -iaa

git add --all畏妖,添加當前目錄下的所有的目錄和文件脉执。

$ gitadd--all

以上前4點,都可以用.表示路徑path戒劫,表示當前目錄半夷。$git add .,$ git add -u. 迅细,$ git add -A .巫橄,$ git add -i .。

比如 輸入

$ gitadd-i .

輸出以下信息茵典。

staged? ? unstaged path

1:? ? ? ? +1/-0+0/-0gitstudy

*** Commands ***

1:status2: update3:revert4: add untracked

5: patch6:diff7:quit8: help

選擇子命令command(注意:可以輸入序號湘换,也可以輸入命令單詞),命令1是狀態(tài)统阿,顯示路徑上的變化彩倚;命令2是更新,將工作狀態(tài)樹添加到更改組 扶平;命令3是還原帆离,還原更改組到頭版本;命令4是添加未跟蹤蜻直,添加未跟蹤文件的內(nèi)容到更改組盯质;命令5是修補程序即補丁,挑選可行的以及選擇性更新概而;命令6是差異呼巷, 比較單個文件或者目錄內(nèi)容;命令7是退出赎瑰,退出該命令選項王悍;命令8是幫助,顯示其他命令的作用餐曼,幫助使用压储。

mv:移動或重命名文件,目錄或符號鏈接

用$ ls查看當前目錄下的文件和目錄源譬,可以看看準備移動的文件存不存在集惋,為后面操作做準備〔饶铮可以看到當前目錄下有以下文件和目錄11.txt aa/ pro.git/ README.md刮刑。

移動11.txt到aa目錄下:

$ git mv11.txtaa

移動完后,查看一下狀態(tài),看看有沒有移動成功雷绢。

$ git status-s

可以看到狀態(tài)結(jié)果如下:

Aaa/11.txt

?? pro.git/

或者再用$ ls查看當前目錄下的文件和目錄泛烙,可以看到,當前目錄下文件和目錄為aa/ pro.git/ README.md翘紊,aa目錄下多了11.txt蔽氨,也能說明移動成功。

reset: 將當前HEAD復位為指定狀態(tài)

如果發(fā)現(xiàn)錯誤的將不想staging的文件add進入index之后帆疟,想回退取消鹉究,則可以使用如下命令:

gitresetHEAD...

同時git add完畢之后,git也會做相應的提示鸯匹。

git reset[--mode ][或HEAD]

將當前的分支重設(reset)到指定的或者HEAD(如果不顯示指定commit坊饶,默認是HEAD,即最新的一次提交)殴蓬。mode的取值可以是hard匿级、mixed。

gitreset--hard

重設index和working directory染厅,自從以來在working directory中的任何改變都被丟棄痘绎,并把HEAD指向。

gitreset--mixed

僅重設index肖粮,但是不重設working directory孤页。這個模式是默認模式,即當不顯示告知git reset模式時涩馆,會使用mixed模式行施。這個模式的效果是,working directory中文件的修改都會被保留魂那,不會丟棄蛾号,也不會被標記成"Changes to be committed"。

rm:從工作樹和索引中刪除文件

使用格式:

git rm [] [--] ...

-n, --dry-run? ? ? ? ? 干運行

-q, --quiet? ? ? ? ? ? ? 不列出刪除的文件

--cached? ? ? ? ? ? ? ? 只能從索引中刪除

-f, --force? ? ? ? ? ? ? ? 覆蓋最新的檢查

-r? ? ? ? ? ? ? ? ? ? ? ? ? ? 允許遞歸刪除

--ignore-unmatch? ? 退出零狀態(tài)即使沒有匹配

注意:$ git rm文件名 涯雅,必須在跟蹤并提交到倉庫中即add和commit后鲜结,才能刪除。如果是已提交并修改后的文件和目錄活逆,需要用git commit -a -m文件名或git commit -a選擇提交精刷,不然會提示錯誤信息,error: the following file has local modifications:文件在本地被修改了蔗候。直接用git commit -m文件名或git commit選擇提交是無法正常刪除的怒允,因為雖然沒有提示錯誤信息但實際上并沒有commit成功。

log:顯示提交日志

不帶參數(shù)锈遥,會顯示所有的歷史記錄

$gitlog

按時間輸出误算,最近的在最上面仰美,

commit8deb05890c4a3d3a5da0085e8d93fde6a8105076 (HEAD->master, origin/master, origin/HEAD)

Author: naffitary <2219165492@qq.com>

Date:? Wed Jul513:32:372017+0800

Initialcommit

帶參數(shù)-p迷殿,按補丁顯示每個更新間的差異儿礼。

commit8deb05890c4a3d3a5da0085e8d93fde6a8105076 (HEAD->master, origin/master, origin/HEAD)

Author: naffitary <2219165492@qq.com>

Date:? Wed Jul513:32:372017+0800

Initialcommit

diff--git a/README.md b/README.md

newfilemode100644

index0000000..a077ed0

--- /dev/null

+++ b/README.md

@-0,0+1@@

+# gitstudy

\Nonewlineatendoffile

帶參數(shù)--stat,顯示每次更新的修改文件的統(tǒng)計信息庆寺,每個提交都列出了修改過的文件蚊夫,以及其中添加和移除的行數(shù),并在最后列出所有增減行數(shù)小計

$ git status-s

輸出信息沒有-p命令詳細懦尝。

AD aa/gitstudy.git

??11.txt

??? pro.git

status:顯示工作樹狀態(tài)

輸出詳細狀態(tài)信息用$ git status知纷,輸出簡短狀態(tài)信息用$ git status -s。

branch:列表陵霉,創(chuàng)建或刪除分支

git branch命令的-r選項琅轧,可以用來查看遠程分支。

$ gitbranch-r

輸出

origin/master

-a選項查看所有分支踊挠。

$ gitbranch-a

輸出

*master

remotes/origin/master

上面命令表示乍桂,本地主機的當前分支是master,遠程分支是origin/master效床。

checkout:切換分支或恢復工作樹文件

使用git checkout命令創(chuàng)建一個新的分支睹酌。

$ git checkout -bnewBrachorigin/master

上面命令表示,在origin/master的基礎上剩檀,創(chuàng)建一個新分支憋沿。

此外,也可以使用git merge命令或者git rebase命令沪猴,在本地分支上合并遠程分支辐啄。

$ git merge origin/master

或者

$git rebase origin/master

上面命令表示在當前分支上,合并origin/master运嗜。

commit:將更改記錄添加到倉庫中

注意:養(yǎng)成在一開始就輸入以下命令壶辜,來事先設置郵箱和用戶名,以防遠程操作的命令出錯洗出。

$ gitconfig--global user.email “2219165492@qq.com”

$ gitconfig--global user.name “naffitary”

$git commit? -m"提交的描述信息"

如果我們這里不用-m參數(shù)的話士复,即$ git commit;git將調(diào)到一個文本編譯器(通常是vim)來讓你輸入提交的描述信息翩活,前面有#將會被無視阱洪,若想被commit去掉前面的#并ZZ或:wq保存并退出,git commit -a也是如此菠镇。

$ git commit -a-m"提交的描述信息"

git commit命令的-a選項可只將所有被修改或者已刪除的且已經(jīng)被git管理的文檔提交到倉庫中冗荸。如果只是修改或者刪除了已被Git管理的文檔,是沒必要使用git add命令的利耍。

git add .命令除了能夠判斷出當前目錄(包括其子目錄)所有被修改或者已刪除的文檔蚌本,還能判斷用戶所添加的新文檔盔粹,并將其信息追加到索引中。

$ gitcommit--amend

對于已經(jīng)修改提交過的注釋程癌,如果需要修改舷嗡,可以借助git commit --amend來進行。

fetch:從另一個存儲庫下載對象和引用

將遠程主機的版本庫的更新(Git術(shù)語叫做commit)取回本地嵌莉。默認情況下进萄,git fetch取回所有分支(branch)的更新。

$ git fetch<遠程主機名>

比如锐峭,

$git fetch origin

如果只想取回特定分支的更新中鼠,可以指定分支名。

$ git fetch<遠程主機名><分支名>

比如沿癞,

$ git fetch originmaster

pull:從另一個存儲庫或本地分支中拉取并集成

取回遠程主機某個分支的更新援雇,再與本地的指定分支合并。

$ git pull<遠程主機名><遠程分支名>:<本地分支名>

比如椎扬,取回origin主機的next分支惫搏,與本地的master分支合并:

$ git pull originnext:master

如果遠程分支是與當前分支合并,則冒號后面的部分可以省略盗舰。

$git pull originnext

上面命令表示晶府,取回origin/next分支,再與當前分支合并钻趋。實質(zhì)上川陆,這等同于先做git fetch,再做git merge蛮位。

$git fetch origin

$git merge origin/next

如果當前分支與遠程分支存在追蹤關(guān)系较沪,git pull就可以省略遠程分支名。

$git pull origin

上面命令表示失仁,本地的當前分支自動與對應的origin主機”追蹤分支”進行合并尸曼。

如果當前分支只有一個追蹤分支,連遠程主機名都可以省略萄焦。

$git pull

上面命令表示控轿,當前分支自動與唯一一個追蹤分支進行合并。

push:推送更新遠程引用以及關(guān)聯(lián)的對象

將本地分支的更新拂封,推送到遠程主機茬射。

$ git push<遠程主機名><本地分支名>:<遠程分支名>

注意,分支推送順序的寫法是<來源地>:<目的地>冒签,所以git pull是<遠程分支>:<本地分支>在抛,而git push是<本地分支>:<遠程分支>。

如果省略遠程分支名萧恕,則表示將本地分支推送與之存在”追蹤關(guān)系”的遠程分支(通常兩者同名)刚梭,如果該遠程分支不存在肠阱,則會被新建。

$ gitpushoriginmaster

上面命令表示朴读,將本地的master分支推送到origin主機的master分支屹徘。如果后者不存在,則會被新建磨德。

如果省略本地分支名缘回,則表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支典挑。

$ gitpushorigin:master

等同于

$ gitpushorigin--deletemaster

上面命令表示刪除origin主機的master分支。

如果當前分支與遠程分支之間存在追蹤關(guān)系啦吧,則本地分支和遠程分支都可以省略您觉。

$ gitpushorigin

上面命令表示,將當前分支推送到origin主機的對應分支授滓。

如果當前分支只有一個追蹤分支琳水,那么主機名都可以省略。

$ gitpush

如果當前分支與多個主機存在追蹤關(guān)系般堆,則可以使用-u選項指定一個默認主機在孝,這樣后面就可以不加任何參數(shù)使用git push。

$ gitpush-uoriginmaster

上面命令將本地的master分支推送到origin主機淮摔,同時指定origin為默認主機私沮,后面就可以不加任何參數(shù)使用git push了。不帶任何參數(shù)的git push和橙,默認只推送當前分支仔燕,這叫做simple方式。此外魔招,還有一種matching方式晰搀,會推送所有對應的遠程分支的本地分支。如果要修改這個設置办斑,可以采用git config命令外恕。

$ gitconfig--global push.defaultmatching

或者

$ gitconfig--global push.defaultsimple

還有一種情況,就是不管是否存在對應的遠程分支乡翅,將本地的所有分支都推送到遠程主機鳞疲,這時需要使用–all選項。

$git push --allorigin

上面命令表示峦朗,將所有本地分支都推送到origin主機建丧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市波势,隨后出現(xiàn)的幾起案子翎朱,更是在濱河造成了極大的恐慌橄维,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拴曲,死亡現(xiàn)場離奇詭異争舞,居然都是意外死亡,警方通過查閱死者的電腦和手機澈灼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門竞川,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叁熔,你說我怎么就攤上這事委乌。” “怎么了荣回?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵遭贸,是天一觀的道長。 經(jīng)常有香客問我心软,道長壕吹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任删铃,我火速辦了婚禮耳贬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猎唁。我一直安慰自己咒劲,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布胖秒。 她就那樣靜靜地躺著缎患,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阎肝。 梳的紋絲不亂的頭發(fā)上挤渔,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音风题,去河邊找鬼判导。 笑死,一個胖子當著我的面吹牛沛硅,可吹牛的內(nèi)容都是我干的眼刃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼摇肌,長吁一口氣:“原來是場噩夢啊……” “哼擂红!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起围小,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤昵骤,失蹤者是張志新(化名)和其女友劉穎树碱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體变秦,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡成榜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蹦玫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赎婚。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖樱溉,靈堂內(nèi)的尸體忽然破棺而出挣输,到底是詐尸還是另有隱情,我是刑警寧澤饺窿,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布歧焦,位于F島的核電站,受9級特大地震影響肚医,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜向瓷,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一肠套、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猖任,春花似錦你稚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至长搀,卻和暖如春宇弛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背源请。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工枪芒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谁尸。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓舅踪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親良蛮。 傳聞我的和親對象是個殘疾皇子抽碌,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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