Git 常用命令行

參考學(xué)習(xí)地址:https://backlog.com/git-tutorial/cn/intro/intro4_2.html

git本地存儲結(jié)構(gòu)

1.新建git本地數(shù)據(jù)庫

按照以下步驟把新創(chuàng)建的tutorial目錄設(shè)置到Git數(shù)據(jù)庫。

$ mkdir tutorial   //創(chuàng)建tutorial文件夾
$ cd tutorial        //進(jìn)入文件夾
$ git init              //初始化git數(shù)據(jù)庫

=========================================

2.查看工作樹和索引狀態(tài)
$ git status

=========================================

3.將改動文件(包括增刪改等操作)添加到索引中

將文件加入到索引发魄,就可以追蹤它的變更了洋闽。使用add命令踢俄。在<file>指定加入索引的文件故响。用空格分割可以指定多個文件。

$ git add <file> <file> ...

如果要把所有改動的文件都加入到索引中遣臼,則可以使用:

$ git add .

=========================================

4.將索引區(qū)文件提交到本地數(shù)據(jù)庫中
$ git commit -m "描述內(nèi)容"

注解一般格式為:

第1行:提交修改內(nèi)容的摘要
第2行:空行
第3行以后:修改的理由

提交完之后可以使用$ git status確認(rèn)狀態(tài)

5.查看本地數(shù)據(jù)庫提交狀態(tài)
$ git log

=========================================

6.給遠(yuǎn)程數(shù)據(jù)庫起別名碍遍,一般為origin

我們可以給遠(yuǎn)程數(shù)據(jù)庫取一個別名。這樣矮锈,下次推送的時候就不需要輸入長串的遠(yuǎn)程數(shù)據(jù)庫地址了。在這個教程里睁蕾,我們的遠(yuǎn)程數(shù)據(jù)庫命名為“origin”苞笨。

請使用remote指令添加遠(yuǎn)程數(shù)據(jù)庫。在<name>處輸入遠(yuǎn)程數(shù)據(jù)庫名稱子眶,在<url>處指定遠(yuǎn)程數(shù)據(jù)庫的URL瀑凝。

$ git remote add <name> <url>

執(zhí)行推送或者拉取的時候,如果省略了遠(yuǎn)程數(shù)據(jù)庫的名稱臭杰,則默認(rèn)使用名為”origin“的遠(yuǎn)程數(shù)據(jù)庫粤咪。因此一般都會把遠(yuǎn)程數(shù)據(jù)庫命名為origin。

=========================================

7.將本地創(chuàng)建的數(shù)據(jù)庫推送到遠(yuǎn)程

我們首先在本地創(chuàng)建了一個數(shù)據(jù)庫渴杆,然后在github上創(chuàng)建了一個遠(yuǎn)程倉庫寥枝,現(xiàn)在要把本地的數(shù)據(jù)庫內(nèi)容推送到github上這個遠(yuǎn)程倉庫中:
使用push命令向數(shù)據(jù)庫推送更改內(nèi)容。<repository>處輸入目標(biāo)地址磁奖,<refspec>處指定推送的分支囊拜。

$ git push <repository> <refspec>

當(dāng)執(zhí)行命令時,如果您指定了-u選項比搭,那么下一次推送時就可以省略分支名稱了冠跷。但是,首次運行指令向空的遠(yuǎn)程數(shù)據(jù)庫推送時身诺,必須指定遠(yuǎn)程數(shù)據(jù)庫名稱和分支名稱蔽莱。

$ git push -u origin master

=========================================

8.將遠(yuǎn)程倉庫克隆到本地

使用clone指令可以復(fù)制數(shù)據(jù)庫,在<repository>指定遠(yuǎn)程數(shù)據(jù)庫的URL戚长,
在<directory>指定新目錄的名稱。

$ git clone <repository> <directory>

比如:

$ git clone https://nulab.backlog.jp/git/BLG/tutorial.git tutorial2

=========================================

9.在克隆的本地數(shù)據(jù)庫推送數(shù)據(jù)

當(dāng)在克隆的數(shù)據(jù)庫目錄執(zhí)行推送時怠苔,您可以省略數(shù)據(jù)庫和分支名稱同廉。

$ git push

=========================================

10.將遠(yuǎn)程數(shù)據(jù)庫內(nèi)容拉到本地

使用pull指令進(jìn)行拉取操作。省略數(shù)據(jù)庫名稱的話,會在名為origin的數(shù)據(jù)庫進(jìn)行pull迫肖。

$ git pull <repository> <refspec>

例如:

$ git pull origin master

拉取完成后锅劝,我們使用log指令來確認(rèn)歷史記錄是否已更新

=========================================

11.解決沖突

如果執(zhí)行push的時候提示報錯:

To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

則說明我們修改并要push的文件,在遠(yuǎn)程倉庫已經(jīng)有了新的修改
首先我們需要拉取到遠(yuǎn)程的最新修改:

$ git pull <repository> <refspec>   //比如$ git pull origin master

這時候終端會顯示出沖突文件:

CONFLICT (content): Merge conflict in sample.txt

找到目標(biāo)文件修改沖突后蟆湖,文件的內(nèi)容發(fā)生了修改故爵,所以需要進(jìn)行提交:

$ git add sample.txt
$ git commit -m "合并"

這樣就完成了從遠(yuǎn)程數(shù)據(jù)庫導(dǎo)入最新的修改內(nèi)容。
我們可以用log命令來確認(rèn)數(shù)據(jù)庫的歷史記錄是否準(zhǔn)確隅津。指定--graph選項诬垂,能以文本形式顯示更新記錄的流程圖。指定--oneline選項伦仍,能在一行中顯示提交的信息结窘。

$ git log --graph --oneline

確認(rèn)無誤后,就可以執(zhí)行push操作提交到遠(yuǎn)程了充蓝。

=========================================

12.建立分支

創(chuàng)建名為issue1的分支隧枫。 可以通過branch命令來創(chuàng)建分支。

$ git branch <branchname> // $ git branch issue1
創(chuàng)建名為issue1的分支谓苟。

不指定參數(shù)直接執(zhí)行branch命令的話官脓,可以顯示分支列表。 前面有*的就是現(xiàn)在的分支涝焙。

$ git branch
  issue1
* master

=========================================

13.切換分支

若要在新建的issue1分支進(jìn)行修改提交卑笨,需要切換到issue1分支。
要執(zhí)行checkout命令以切換到目標(biāo)分支纱皆。

$ git checkout <branch>    //$ git checkout issue1
切換到issue1分支湾趾。

注意創(chuàng)建并切換分支:
在checkout命令指定 -b選項執(zhí)行,可以創(chuàng)建分支并進(jìn)行切換派草。

$ git checkout -b <branch>

=========================================

14.merge合并分支 fast-forward

執(zhí)行merge命令以合并分支搀缠。

$ git merge <commit> //該命令將指定分支導(dǎo)入到HEAD指定的分支。

先切換master分支:

$ git checkout master
Switched to branch 'master'

然后把issue1分支導(dǎo)入到master分支:

$ git merge issue1

master分支指向的提交移動到和issue1同樣的位置近迁。這個是fast-forward(快進(jìn))合并艺普。

=========================================

15.解決合并沖突

首先創(chuàng)建issue2分支和issue3分支,并切換checkout到issue2分支修改內(nèi)容addcommit后鉴竭,
然后切換checkout到issue3分支修改內(nèi)容addcommit

要把issue2分支和issue3分支的修改合并到master:

  1. 切換master分支后歧譬,與issue2分支合并,執(zhí)行fast-forward(快進(jìn))合并。


    快進(jìn)合并
$ git checkout master
Switched to branch 'master'
$ git merge issue2

2.接著合并issue3分支:

$ git merge issue3
Auto-merging myfile.txt
CONFLICT (content): Merge conflict in myfile.txt
Automatic merge failed; fix conflicts and then commit the result.

自動合并失敗搏存。由于在同一行進(jìn)行了修改瑰步。修改沖突的部分,重新提交璧眠。

$ git add myfile.txt
$ git commit -m "合并issue3分支"
非快進(jìn)合并

歷史記錄如圖所示缩焦。因為在這次合并中修改了沖突部分读虏,所以會重新創(chuàng)建合并修改的提交記錄。這樣袁滥,master的HEAD就移動到這里了盖桥。這種合并不是fast-forward合并,而是non fast-forward合并题翻。

=========================================

16.rebase合并分支

合并上述15條中的issue3分支的時候揩徊,使用rebase可以使提交的歷史記錄顯得更簡潔。
切換到issue3分支后嵌赠,對master執(zhí)行rebase塑荒。

$ git checkout issue3
Switched to branch 'issue3'
$ git rebase master

此時終端沖突報錯,和merge時的操作相同猾普,修改沖突提交

$ git add myfile.txt
$ git rebase --continue

狀態(tài)如下:


rebase的時候袜炕,修改沖突后的提交不是使用commit命令,而是執(zhí)行rebase命令指定 --continue選項初家。若要取消rebase偎窘,指定--abort選項。
這樣溜在,在master分支的issue3分支就可以fast-forward合并了陌知。切換到master分支后執(zhí)行合并:

$ git checkout master
Switched to branch 'master'
$ git merge issue3
Updating 8f7aa27..96a0ff0
Fast-forward

此時狀態(tài)如下:


=========================================

17.刪除分支

在branch命令指定-d選項執(zhí)行,以刪除分支掖肋。

$ git branch -d <branchname>  // $ git branch -d issue1
執(zhí)行以下的命令以刪除issue1分支仆葡。

issue1分支被刪除了。您可以用branch命令來確認(rèn)分支是否已被刪除志笼。

$ git branch
* master

=========================================

18.添加輕標(biāo)簽tag

使用tag命令來添加標(biāo)簽沿盅,在<tagname>執(zhí)行標(biāo)簽的名稱:

$ git tag <tagname>  // $ git tag apple
在HEAD指向的提交里添加名為apple的標(biāo)簽,請執(zhí)行以下的命令纫溃。

如果沒有使用參數(shù)而執(zhí)行tag腰涧,可以顯示標(biāo)簽列表:

$ git tag

如果在log命令添加 --decorate選項執(zhí)行,可以顯示包含標(biāo)簽資料的歷史記錄:

$ git log --decorate
commit e7978c94d2104e3e0e6e4a5b4a8467b1d2a2ba19 (HEAD, tag: apple, master)
Author: yourname <yourname@yourmail.com>
Date:   Wed Jul 18 16:43:27 2012 +0900

    first commit

=========================================

19.給輕標(biāo)簽tag添加注解

若要添加注解標(biāo)簽紊浩,可以使用-m:

$  git tag -m "add bundle" 1.0.1
在HEAD指向的提交里添加名為banana的標(biāo)簽窖铡。

也可以指定-m選項來添加注解:

 git tag -a tagname -m "comments"   //本地創(chuàng)建

如果在tag命令指定-n選項執(zhí)行,可以顯示標(biāo)簽的列表和注解:

$ git tag -n
apple           first commit
banana          連猴子都懂的Git

提交tag到遠(yuǎn)程:

git push origin tagname //提交單個標(biāo)簽
git push origin --tags      //提交所有標(biāo)簽

=========================================

20.刪除標(biāo)簽

若要刪除標(biāo)簽坊谁,在tag命令指定 -d選項執(zhí)行费彼。

$ git tag -d <tagname>

=========================================

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市口芍,隨后出現(xiàn)的幾起案子箍铲,更是在濱河造成了極大的恐慌,老刑警劉巖鬓椭,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虹钮,死亡現(xiàn)場離奇詭異聋庵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芙粱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氧映,“玉大人春畔,你說我怎么就攤上這事〉憾迹” “怎么了律姨?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長臼疫。 經(jīng)常有香客問我择份,道長,這世上最難降的妖魔是什么烫堤? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任荣赶,我火速辦了婚禮,結(jié)果婚禮上鸽斟,老公的妹妹穿的比我還像新娘拔创。我一直安慰自己,他們只是感情好富蓄,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布剩燥。 她就那樣靜靜地躺著,像睡著了一般立倍。 火紅的嫁衣襯著肌膚如雪灭红。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天口注,我揣著相機(jī)與錄音变擒,去河邊找鬼。 笑死疆导,一個胖子當(dāng)著我的面吹牛赁项,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播澈段,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼悠菜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了败富?” 一聲冷哼從身側(cè)響起悔醋,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兽叮,沒想到半個月后芬骄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猾愿,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年账阻,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒂秘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡淘太,死狀恐怖姻僧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒲牧,我是刑警寧澤撇贺,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站冰抢,受9級特大地震影響松嘶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挎扰,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一翠订、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鼓鲁,春花似錦蕴轨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至燥狰,卻和暖如春棘脐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背龙致。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工蛀缝, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人目代。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓屈梁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親榛了。 傳聞我的和親對象是個殘疾皇子在讶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

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