Git常見(jiàn)的幾種情況

1.取消已經(jīng)暫存的文件

????接下來(lái)的兩個(gè)小節(jié)將演示如何取消暫存區(qū)域中的文件,以及如何取消工作目錄中已修改的文件。不用擔(dān)心,查看文件狀態(tài)的時(shí)候就提示了該如何撤消,所以不需要死記硬背。來(lái)看下面的例子,有兩個(gè)修改過(guò)的文件,我們想要分開(kāi)提交,但不小心用 git add .全加到了暫存區(qū)域。該如何撤消暫存其中的一個(gè)文件呢?其實(shí),git status 的命令輸出已經(jīng)告訴了我們?cè)撛趺醋觯?/p>

$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt
        modified:   benchmarks.rb

就在 “Changes to be committed” 下面,括號(hào)中有提示,可以使用 git reset HEAD <file>...的方式取消暫存。好吧,我們來(lái)試試取消暫存 benchmarks.rb 文件:

$ git reset HEAD benchmarks.rb
Unstaged changes after reset:
M       benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

2.取消對(duì)文件的修改

????如果覺(jué)得剛才對(duì) benchmarks.rb 的修改完全沒(méi)有必要,該如何取消修改,回到之前的狀態(tài)(也就是修改之前的版本)呢?git status 同樣提示了具體的撤消方法,接著上面的例子,現(xiàn)在未暫存區(qū)域看起來(lái)像這樣:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

????在第二個(gè)括號(hào)中,我們看到了拋棄文件修改的命令(至少在 Git 1.6.1 以及更高版本中會(huì)這樣提示,如果你還在用老版本,我們強(qiáng)烈建議你升級(jí),以獲取最佳的用戶體驗(yàn)),讓我們?cè)囋嚳矗?/p>

$ git checkout -- benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

????可以看到,該文件已經(jīng)恢復(fù)到修改前的版本。你可能已經(jīng)意識(shí)到了,這條命令有些危險(xiǎn),所有對(duì)文件的修改都沒(méi)有了,因?yàn)槲覀儎倓偘阎鞍姹镜奈募?fù)制過(guò)來(lái)重寫(xiě)了此文件。所以在用這條命令前,請(qǐng)務(wù)必確定真的不再需要保留剛才的修改。如果只是想回退版本,同時(shí)保留剛才的修改以便將來(lái)繼續(xù)工作,可以用下章介紹的 stashing 和分支來(lái)處理,應(yīng)該會(huì)更好些。
????記住,任何已經(jīng)提交到 Git 的都可以被恢復(fù)。即便在已經(jīng)刪除的分支中的提交,或者用 --amend 重新改寫(xiě)的提交,都可以被恢復(fù)。所以,你可能失去的數(shù)據(jù),僅限于沒(méi)有提交過(guò)的,對(duì) Git 來(lái)說(shuō)它們就像從未存在過(guò)一樣。

3.強(qiáng)制覆蓋本地倉(cāng)庫(kù)

????在使用Git的過(guò)程中,有些時(shí)候我們只想要git服務(wù)器中的最新版本的項(xiàng)目,對(duì)于本地的項(xiàng)目中修改不做任何理會(huì),就需要用到Git pull的強(qiáng)制覆蓋,具體代碼如下:

$ git fetch --all
$ git reset --hard origin/master 
$ git pull
git fetch 只是下載遠(yuǎn)程的庫(kù)的內(nèi)容,不做任何的合并
git reset 把HEAD指向剛剛下載的最新的版本

4.解決文件沖突

方法① git pull --rebase

git pull --rebase

方法② git stash

  • 先將本地修改存儲(chǔ)起來(lái)
$ git stash

????這樣本地的所有修改就都被暫時(shí)存儲(chǔ)起來(lái) 。用git stash list可以看到保存的信息。其中stash@{0}就是剛才保存的標(biāo)記。

  • 暫存了本地修改之后,就可以pull了。
$ git pull
  • 還原暫存的內(nèi)容
$ git stash pop stash@{0}

系統(tǒng)提示如下類似的信息:

Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c

意思就是系統(tǒng)自動(dòng)合并修改的內(nèi)容,但是其中有沖突,需要解決其中的沖突。

  • 解決文件中沖突的的部分

打開(kāi)沖突的文件,會(huì)看到類似如下的內(nèi)容:
git沖突內(nèi)容

其中Updated upstream 和=====之間的內(nèi)容就是pull下來(lái)的內(nèi)容,====和stashed changes之間的內(nèi)容就是本地修改的內(nèi)容。碰到這種情況,git也不知道哪行內(nèi)容是需要的,所以要自行確定需要的內(nèi)容。

解決完成之后,就可以正常的提交了。

git add .
git commit -m "注釋"
git push -u origin master
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)。這樣一來(lái),任何一處協(xié)同...
    __silhouette閱讀 16,197評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)...
    sunnyghx閱讀 4,152評(píng)論 0 11
  • 書(shū)名:《大眾傳播效果研究的里程碑》 作者:洛厄里,德弗勒 讀后感:首先這本書(shū)是國(guó)外新聞與傳播專業(yè)的經(jīng)典教材,讀起來(lái)...
    小開(kāi)心的一家閱讀 6,117評(píng)論 0 1
  • 市場(chǎng)如戰(zhàn)場(chǎng),2016年燈飾行業(yè)的市場(chǎng)可謂是愈加激烈,持久不變的價(jià)格戰(zhàn)依然是廠商的一個(gè)主要戰(zhàn)斗利刃,這把雙刃劍不論是...
    燈師傅閱讀 265評(píng)論 0 0
  • 你是一顆生長(zhǎng)開(kāi)花的樹(shù)干 存活在這個(gè)世界的時(shí)間不過(guò)100年 春去秋來(lái) 酷暑嚴(yán)寒 長(zhǎng)出的樹(shù)丫卻這樣的葉茂枝繁 你是一顆...
    1d65677c562f閱讀 332評(píng)論 0 0

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