git 常見使用技巧

>我們都知道現(xiàn)在任何一個(gè)項(xiàng)目如果沒有一個(gè)版本控制,那絕對(duì)是一個(gè)很大的損失。當(dāng)項(xiàng)目出現(xiàn)修改、刪除失誤時(shí),告別ctl+Z或者重寫的時(shí)代,現(xiàn)在一行命令就可以搞定。

下面的講解根據(jù)實(shí)際項(xiàng)目進(jìn)行操作流程講解,基本思路是:

## 一 項(xiàng)目創(chuàng)建、初始化、推送遠(yuǎn)程分支

1.新建一個(gè)項(xiàng)目文件夾gitDemo,里面有test1.txt文本文件

```

$ mkdir gitDemo

$ vi test1.txt

```

2.將文件夾gitDemo初始化

```

$ cd gitDemo

$ git init

```

3.切換分支master

```

$ git branch master

```

4.修改test1.txt,添加一句話:“好好學(xué)習(xí)”?

```

$ vi test1.txt

```

5.查看當(dāng)前狀態(tài)

```

$ git status

```

!["查看git狀態(tài)"](http://ol3l42bkk.bkt.clouddn.com/liutao/1487040994.png)

6.添加到暫存區(qū)

```

$ git add test1.txt? ? //第一種寫法

//git add .? ? ? ? 第二種寫法,意味著將所有文件全部提交

```

7.查看當(dāng)前狀態(tài)

```

$ git status

```

!["查看git狀態(tài)"](http://ol3l42bkk.bkt.clouddn.com/liutao/1487041003.png)

8.提交到版本庫中

```

$ commit -m "初始化"? ? //雙引號(hào)里是提交的描述文字

```

!["提交到版本庫"](http://ol3l42bkk.bkt.clouddn.com/liutao/1487041009.png)

9.推送到遠(yuǎn)程服務(wù)器master分支上

```

$ git fetch? ? //更新一下

$ git push origin master? //提交到遠(yuǎn)程分支 master

```

## 二 文件撤銷修改、刪除操作

### 修改

* 未提交 (在工作區(qū))

1.如果再次修改test1.txt,添加 “情人節(jié)快樂”到其中

```

$ vi test1.txt

```

2.撤銷修改

```

$ git checkout test1.txt? // git checkout 文件名

```

* 已提交到暫存區(qū)

1.修改后已a(bǔ)dd的

```

$ vi test1.txt

$ git add test1.txt

```

2.撤銷修改

```

$ git reset HEAD test1.txt

$ git checkout test1.txt

```

* 已提交到版本庫

1.修改后,進(jìn)行了add和commit

```

$ vi test1.txt

$ git add test1.txt

$ git commit -m "修改test1.txt,添加情人節(jié)快樂"

```

2.撤回

```

$ git log? ? //查看提交版本號(hào)

$ git reset --hard commit_id? //撤回到想要的版本號(hào)

```

1.

![](http://ol3l42bkk.bkt.clouddn.com/liutao/1487041017.png)

2.

![](http://ol3l42bkk.bkt.clouddn.com/liutao/1487041024.png)

3.撤回版本錯(cuò)誤,查看版本號(hào)

![](http://ol3l42bkk.bkt.clouddn.com/liutao/1487041618.png)

此時(shí)使用`git log`會(huì)發(fā)現(xiàn)找不到之前提交的情人節(jié)快樂的版本。使用`git reflog`即可

![](http://ol3l42bkk.bkt.clouddn.com/liutao/1487041626.png)

再選擇想要的版本號(hào),進(jìn)行`git reset --hard commit_id`

###誤刪

同修改

>git checkout其實(shí)是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除,都可以“一鍵還原”。

上傳本地文件到git上:

```

git remote add master http://...

```

###修改commit的注釋

1.最新一次提交

當(dāng)你不小心,寫錯(cuò)了提交的注視/信息,該如何處理呢。理論上,SCM是不應(yīng)該修改歷史的信息的,提交的注釋也是。

? 不過在git中,其commit提供了一個(gè)--amend參數(shù),可以修改最后一次提交的信息.但是如果你已經(jīng)push過了,那么其歷史最后一次,永遠(yuǎn)也不能修改了。

? 我使用git commit --amend已經(jīng)push過的

`# git commit --amend? `

然后在出來的編輯界面,直接編輯注釋的信息,保存退出

2.歷史提交

? ? git使用amend選項(xiàng)提供了最后一次commit的反悔。但是對(duì)于歷史提交呢,就必須使用rebase了。

? ? ? git rebase -i HEAD~3

? ? ? 表示要修改當(dāng)前版本的倒數(shù)第三次狀態(tài)。

? ? ? ? 這個(gè)命令出來之后,會(huì)出來三行東東:

? ? ? ? pick:*******

? ? ? ? pick:*******

? ? ? ? pick:*******

? ? ? ? 如果你要修改哪個(gè),就把那行的pick改成edit,然后保存退出。

? ? ? ? 這時(shí)通過git log你可以發(fā)現(xiàn),git的最后一次提交已經(jīng)變成你選的那個(gè)了,這時(shí)再使用:

? ? ? ? git commit --amend

? ? ? ? 來對(duì)commit進(jìn)行修改。

修改完了之后,要回來對(duì)不對(duì)?

? ? ? ? 使用git rebase --continue

? ? ? ? OK,一切都搞定了。

[詳細(xì)見這篇博客](http://blog.jobbole.com/78960/)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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