342

私は2つのプロジェクトを持っています。1 つは「公式」プロジェクトで、2 番目は軽微な変更 (いくつかのファイルを追加) です。新しいブランチを作成し、それらに新しいファイルを配置しました。ただし、開発中に、両方のブランチに共通するいくつかのファイルが変更されます。

これらのファイルのみをコミットするにはどうすればよいですか?

4

8 に答える 8

343

変更を 1 つのブランチにコミットしてから、それらの変更を他のブランチに表示したいとします。git では、ブランチを変更するときに HEAD の上に変更を加えるべきではありません。

次の方法で、変更されたファイルのみをコミットします。

git commit [some files]

または、クリーンなステージング エリアがあることが確実な場合は、次のことができます。

git add [some files]       # add [some files] to staging area
git add [some more files]  # add [some more files] to staging area
git commit                 # commit [some files] and [some more files]

そのコミットを両方のブランチで利用できるようにしたい場合は、

git stash                     # remove all changes from HEAD and save them somewhere else
git checkout <other-project>  # change branches
git cherry-pick <commit-id>   # pick a commit from ANY branch and apply it to the current
git checkout <first-project>  # change to the other branch
git stash pop                 # restore all changes again
于 2011-08-30T06:28:09.233 に答える
189

コミットしたいファイルのリストを取得する

$ git status

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:   file1
modified:   file2
modified:   file3
modified:   file4

ファイルをステージングに追加する

$ git add file1 file2

何をコミットしているのかを確認する

$ git status

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   file1
    modified:   file2

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:   file3
    modified:   file4

コミット メッセージでファイルをコミットする

$ git commit -m "Fixed files 1 and 2"

誤って間違ったファイルをコミットした場合

$ git reset --soft HEAD~1

ファイルのステージングを解除して最初からやり直す場合

$ git reset

Unstaged changes after reset:
M file1
M file2
M file3
M file4
于 2015-05-05T03:45:50.457 に答える
11

ファイルをすでにステージングしている場合は、ステージングを解除します。

git reset HEAD [file-name-A.ext] [file-name-B.ext]

その後、それらを少しずつ追加して戻します。

于 2014-06-30T10:40:18.443 に答える
1

コマンドラインも使用できると思います:

git add -p

これにより、コミットされていないすべてのファイルを 1 つずつ確認し、それらをコミットするかどうかを選択できます。

次に、変更ごとに表示されるオプションがいくつかあります。「はい、このファイルを追加します」には「y」を使用し、「いいえ、後でこれをコミットします」には「n」を使用します。

Stage this hunk [y,n,q,a,d,K,g,/,e,?]?

他のオプション ( q,a,d,K,g,/,e,? ) については、それらが何をするのかわかりませんが、「?」詳細を調べる必要がある場合は、 が役立ちます。

これの素晴らしい点は、作業をプッシュし、後で新しいブランチを作成できることです。コミットされていないすべての作業は、その新しいブランチに続きます。多くの異なるものをコーディングしており、プッシュする前に実際に github で作業を再編成したい場合に非常に便利です。

これが役に立てば幸いです。以前に言われたことはありません(言及されていた場合、私の悪いことです)

于 2021-01-25T08:48:24.797 に答える