互動式新增提供友好的介面去操作 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 ...