iOS - Git 撤消操作(分布式版本控制系統)

來源:互聯網
上載者:User

標籤:dsc   class   mod   git   stage   沒有   change   hat   file   

1、覆蓋提交
  • 有時候我們提交完了才發現漏掉了幾個檔案沒有添加,或者提交資訊寫錯了。此時,可以運行帶有 --amend 選項的提交命令嘗試重新提交。

    $ git commit --amend或# git commit --amend -m [提交內容說明]$ git commit --amend -m "Amend commit dsc"
    • 這個命令會將暫存區中的檔案提交。如果自上次提交以來你還未做任何修改(例如,在上次提交後馬上執行了此命令),那麼快照會保持不變,而你所修改的只是提交資訊。

    • 文字編輯器啟動後,可以看到之前的提交資訊。編輯後儲存會覆蓋原來的提交資訊。

  • 例如,你提交後發現忘記了暫存某些需要的修改,可以像下面這樣操作。

    $ git commit -m 'initial commit'$ git add forgotten_file$ git commit --amend    
    • 最終你只會有一個提交 - 第二次提交將代替第一次提交的結果。
2、取消暫存的檔案
  • 接下來的兩個小節示範如何操作暫存地區與工作目錄中已修改的檔案。這些命令在修改檔案狀態的同時,也會提示如何撤消操作。

  • 例如,你已經修改了兩個檔案並且想要將它們作為兩次獨立的修改提交,但是卻意外地輸入了 git add * 暫存了它們兩個。如何只取消暫存兩個中的一個呢?git status 命令提示了你。

    $ git add *$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD <file>..." to unstage)    renamed:    README.md -> README    modified:   CONTRIBUTING.md
  • 在 “Changes to be committed” 文字正下方,提示使用 git reset HEAD <file>... 來取消暫存。所以,我們可以這樣來取消暫存 CONTRIBUTING.md 檔案。

    # git reset HEAD [檔案名稱]$ git reset HEAD CONTRIBUTING.md
    Unstaged changes after reset:M   CONTRIBUTING.md$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD <file>..." to unstage)    renamed:    README.md -> READMEChanges 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:   CONTRIBUTING.md
  • 雖然在調用時加上 --hard 選項可以令 git reset 成為一個危險的命令(可能導致工作目錄中所有當前進度丟失!),但本例中工作目錄內的檔案並不會被修改。不加選項地調用 git reset 並不危險 — 它只會修改暫存地區。

3、撤消對檔案的修改
  • 如果你並不想保留對 CONTRIBUTING.md 檔案的修改怎麼辦?你該如何方便地撤消修改 - 將它還原成上次提交時的樣子(或者剛複製完的樣子,或者剛把它放入工作目錄時的樣子)?幸運的是,git status 也告訴了你應該如何做。在最後一個例子中,未暫存地區是這樣。

    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:   CONTRIBUTING.md    
  • 它非常清楚地告訴了你如何撤消之前所做的修改。

    # git checkout -- [檔案名稱]$ git checkout -- CONTRIBUTING.md
    $ git statusOn branch masterChanges to be committed:  (use "git reset HEAD <file>..." to unstage)    renamed:    README.md -> README
  • git checkout -- [file] 是一個危險的命令。對那個檔案做的任何修改都會消失 - 你只是拷貝了另一個檔案來覆蓋它。除非你確實清楚不想要那個檔案了,否則不要使用這個命令。

iOS - Git 撤消操作(分布式版本控制系統)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.