git互動式新增

2021-08-08 21:19:08 字數 3837 閱讀 6862

互動式新增提供友好的介面去操作 git 索引(index),同時亦提供了視覺化索引的能力。只需簡單鍵入git add -i,即可使用此功能。git 會列出所有修改過的檔案及它們的狀態。

$>git add -i

staged unstaged path

1: unchanged +4/-0 assets/stylesheets/style.css

2: unchanged +23/-11 layout/book_index_template.html

3: unchanged +7/-7 layout/chapter_template.html

4: unchanged +3/-3 script/pdf.rb

5: unchanged +121/-0 text/14_interactive_rebasing/0_ interactive_rebasing.markdown

*** commands ***

1: status 2: update 3: revert 4: add untracked

5: patch 6: diff 7: quit 8: help

what now>

在這個例子中,我們可以看到有 5 個修改過的檔案還沒有被加入到索引中(unstaged),甚至可以看到每個檔案增加和減少的行數。緊接著是乙個互動式的選單,列出了我們可以在此模式中使用的命令。

如果我們想要暫存(stage)這些檔案,我們可以鍵入 2 或者 u 進入更新(update)模式。然後我們可以通過鍵入檔案的範圍(本例中是1-4)來決定把哪些檔案加入到索引之中。

what now> 2

staged unstaged path

1: unchanged +4/-0 assets/stylesheets/style.css

2: unchanged +23/-11 layout/book_index_template.html

3: unchanged +7/-7 layout/chapter_template.html

4: unchanged +3/-3 script/pdf.rb

5: unchanged +121/-0 text/14_interactive_rebasing/0_ interactive_rebasing.markdown

update>> 1-4

staged unstaged path

* 1: unchanged +4/-0 assets/stylesheets/style.css

* 2: unchanged +23/-11 layout/book_index_template.html

* 3: unchanged +7/-7 layout/chapter_template.html

* 4: unchanged +3/-3 script/pdf.rb

5: unchanged +121/-0 text/14_interactive_rebasing/0_ interactive_rebasing.markdown

update>>

如果鍵入回車,我會回到主選單中,同時可以看到那些指定檔案的狀態已經發生了改變:

what now> status

staged unstaged path

1: +4/-0 nothing assets/stylesheets/style.css

2: +23/-11 nothing layout/book_index_template.html

3: +7/-7 nothing layout/chapter_template.html

4: +3/-3 nothing script/pdf.rb

5: unchanged +121/-0 text/14_interactive_rebasing/0_ interactive_rebasing.markdown

現在我們可以看到前 4 個檔案已經被暫存,但是最後乙個沒有。基本上,這是乙個更加緊湊的檢視狀態的方式,實質上的資訊與我們在命令列中執行git status是一致的:

$ git status

# on branch master

# changes to be committed:

# (use "git reset head ..." to unstage)

## modified: assets/stylesheets/style.css

# modified: layout/book_index_template.html

# modified: layout/chapter_template.html

# modified: script/pdf.rb

## changed but not updated:

# (use "git add ..." to update what will be committed)

## modified: text/14_interactive_rebasing/0_ interactive_rebasing.markdown

#

我們可以進行數個有用的操作,包括取消檔案的暫存(3: revert),加入未跟蹤的檔案(4: add untracked)和檢視差異(6: diff)。這些功能都很易懂。還有乙個很「酷」的功能,就是暫存補丁(staging patches)(5: patch)。

如果你鍵入 5 或者 p ,git 會乙個乙個補丁(一塊一塊)地顯示出差異,然後詢問是否對每一塊進行暫存操作。通過這個方法,你可以暫存檔案修改中的一部分。如果你編輯了乙個檔案,只想提交其中一部分而不包括其他未完成編輯的部分,或者把文件、空白字元從大量的修改中分開提交,你可以使用git add -i去相對輕鬆地完成任務。

這裡我暫存了 book_index_template.html 的部分修改,而不是全部修改:

staged     unstaged path

1: +4/-0 nothing assets/stylesheets/style.css

2: +20/-7 +3/-4 layout/book_index_template.html

3: +7/-7 nothing layout/chapter_template.html

4: +3/-3 nothing script/pdf.rb

5: unchanged +121/-0 text/14_interactive_rebasing/0_ interactive_rebasing.markdown

6: unchanged +85/-0 text/15_interactive_adding/0_ interactive_adding.markdown

當你通過git add -i完成對索引的改動後,你只需要退出(7: quit),然後git commit去提交暫存的修改。切記不要執行git commit -a,它會忽視你剛才辛辛苦苦做的修改而把所有東西都提交到倉庫中去。

Git 之 互動式 rebase

使用 git rebase i 可以進入互動式模式,可以對某一範圍內的提交 進行重新編輯 預設情況下,直接使用 git rebase i 命令的操作物件為自最後一次從 origin 倉庫拉取或者向 origin 推送之後的所有提交。假設我要把 master 上紅色區域的分支合併成乙個提交 首先找到起...

非互動式新增分割槽

非互動式新增分割槽 方法一 新增 deb sdb 下的分割槽,其實位置為1到1000m,第二個分割槽位置為1001至3000m,位置千萬不能指定錯誤 parted dev sdb mkpart primary 1 1000m parted dev sdb mkpart primary 1001 30...

互動式介面

互動式介面 啟動終端後,在終端裝置附加乙個互動式應用程式 runlevel 顯示當前執行的模式 root vm 163 113 centos runlevel n 3init 3 切換至命令列 init 0 停機 千萬不能把initdefault 設定為0 init 1 單使用者模式 init 2 ...