有兩個令人困惑的相似命令,git restore和git checkout-index. 我看到git restore將檔案簽出到作業樹中。我還看到git checkout-index將檔案簽出到作業樹中。根據這些答案,聽起來這兩個命令都做同樣的事情。兩者似乎都是為了闡明git checkout. 唯一的區別僅僅是形式和 API 穩定性,即這兩個命令的“瓷器”或“管道”性質嗎?
uj5u.com熱心網友回復:
可以說,git checkout-index由于歷史原因,它仍然存在,但這些命令具有不同的特征。
主要的是:
git restore具有允許從索引以外的其他內容(另一個提交或樹)恢復的選項,并且可以更新索引git checkout-index將專門從索引中獲取內容到您的磁盤,并且永遠不會更改索引
此外,git checkout-index有一組選項使其成為“獲取索引中檔案的內容以通過 linter 運行它”(通常在預提交掛鉤中)的良好候選者:
- 默認情況下,它不會覆寫現有檔案(除非您添加
-f選項,否則您不會從磁盤中洗掉更改) - 它具有
--prefix(例如:)--prefix=/tmp/或--temp選項,可以輕松創建某些檔案的臨時副本
git restore,另一方面,是為了替換git checkout -- <filenames>- 恢復檔案的版本而撰寫的:
當與--worktree選項(默認情況下啟用)一起使用時,它將覆寫并從磁盤中洗掉檔案
- 有一個選項可以避免“洗掉檔案”部分(
--overlay——這對你來說是 git 清晰 :)), - 目前沒有選項可以避免“覆寫檔案”部分(如果你運行
git restore --worktree,你可能還是想覆寫一些東西......)
(為了完整性:git checkout branch部分 - 更改活動分支 - 被覆寫git switch)
uj5u.com熱心網友回復:
該git restore命令用于取消暫存更改或以某種方式將當前分支/源同步到不同的分支/源。
該git checkout-index命令將從索引中列出的所有檔案復制到作業目錄(不覆寫現有檔案)。
主要區別在于,restore您可以使用命令指定要與當前分支同步的內容或worktree使用--worktree標志。--staged或使用標志同步暫存檔案。
在checkout-index命令中,所有檔案都是從索引中復制的。恢復就像從備份中復制,簽出就像從您自己的索引中添加檔案。
有關更多資訊,請查看這些命令的聯機幫助頁
git restore::此處
git checkout-index:此處
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515227.html
標籤:混帐
