簡體   English   中英

Git提交了一些分階段的更改而忽略了未分階段的更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM