![](/img/trans.png)
[英]Git diff all local changes, regardless which commit or staged/unstaged
[英]Git commit some staged changes ignoring unstaged
我在暫存區中添加了文件更改,然后進行了其他更改,並希望取消跟蹤它們,直到未提交第一個更改為止(請參見下面的代碼)。
如果我有一個文件,可以通過簡單的git commit
來完成。 但是,假設我上演了幾個不同的文件,而其中一些沒有上演。 當我指向文件列表git commit <files>
,Git會提交這些文件的當前內容,即未跟蹤的更改,而忽略已暫存的更改。 但是我想提交暫存的更改,而忽略某些特定文件列表的未跟蹤狀態。 怎么做?
(use "git push" to publish your local commits)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: f1
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: f1
我認為這可能是您最好的選擇:
git commit --interactive f1 f2
那應該讓您從文件列表中選擇要提交的塊,但是您必須逐一檢查每個塊,然后選擇是否將其包括在提交中。 使用emacs的magit插件之類的工具將使此操作變得更加容易。
我想提交暫存的更改,而忽略某些特定文件列表的未跟蹤狀態
git commit
不可能。 如果提交索引,則提交索引。
我想辦法給你。 您可以取消跟蹤尚未提交的部分。 既然您是在問您的問題,我認為這是不可能的(更改太多)?
第二種變化是:復制(重要:不要克隆)您的本地存儲庫。 在副本中 ,從索引中刪除不需要的部分。 提交並推送(如果您還沒有遙控器,則git add remote origin original_repos
)。 在原始存儲庫中,執行git stash
清理您的工作目錄,進行更改,然后執行git stash pop
。
(您可以嘗試在不進行git pull
情況下進行git pull
,但我想git
會告訴您,這會立即破壞您的本地更改。)幸運的是,您現在就在做生意-也許您必須進行沖突分辨率,但是應該很簡單。
當然,在執行所有這些操作之前,請先進行備份。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.