2016-08-18 15 views
0

ステージング領域にファイルの変更を追加した後、いくつかの変更を行い、最初の変更がコミットされない限り(以下のコードを参照)、untrackedになります。Gitはステージングされていない変更をunstagedを無視してコミットします

ファイルが1つの場合は、単純なgit commitで行うことができます。しかし、いくつかの異なるファイルがステージングされていて、そのうちのいくつかがステージングされていないとします。私がファイルgit commit <files>のリストを指すとき、Gitはこれらのファイルの現在の内容、すなわち追跡されていない変更をコミットし、ステージングされたものを無視します。 しかし、私は、ファイルのいくつかの特定のリストのためにuntrackedを無視して段階的な変更をコミットしたい。どうやってするか?

(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 

答えて

0

私はこれが最善の策かもしれないと思う:

git commit --interactive f1 f2 

ファイルのリストからコミットするハンクかを選択させてください、しかし、あなたが個別に各塊を通過する必要がありますし、あなたのコミットにそれを含めるかどうかを選択します。 emacsのmagitプラグインのようなものを使用すると、これははるかに簡単になります。

0

私がコミットしたいがgit commit持つファイル

ない可能性のいくつかの具体的なリストについては、人跡未踏無視して、変更を上演しました。索引をコミットすると、索引をコミットします。

私はあなたのために方法を見ます。あなたがコミットしたくない部分をアントラッキングしても、まだ。あなたはあなたの質問をしているので、これはできないと思います(変更が多すぎます)?

2番目のバリエーションは、ローカルリポジトリをコピー(重要:クローン作成しないでください)です。 のコピーで、不要なインデックスの部分を削除します。コミットしてプッシュします(リモコンをまだ持っていない場合はgit add remote origin original_repos)。元のリポジトリでgit stashを実行して作業ディレクトリをクリーニングし、変更を取り込み、次にgit stash popを取得します。

(は隠しなしで実行することができますが、gitはあなたのローカル変更を直ちに奪うだろうとあなたに伝えてくれると思います)。少し運があれば、紛争解決を行うことができますが、それは簡単です。

もちろん、すべてを行う前にバックアップを作成してください。

関連する問題