私は2つのプロジェクトを持っています。1 つは「公式」プロジェクトで、2 番目は軽微な変更 (いくつかのファイルを追加) です。新しいブランチを作成し、それらに新しいファイルを配置しました。ただし、開発中に、両方のブランチに共通するいくつかのファイルが変更されます。
これらのファイルのみをコミットするにはどうすればよいですか?
私は2つのプロジェクトを持っています。1 つは「公式」プロジェクトで、2 番目は軽微な変更 (いくつかのファイルを追加) です。新しいブランチを作成し、それらに新しいファイルを配置しました。ただし、開発中に、両方のブランチに共通するいくつかのファイルが変更されます。
これらのファイルのみをコミットするにはどうすればよいですか?
変更を 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
コミットしたいファイルのリストを取得する
$ 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
ファイルをすでにステージングしている場合は、ステージングを解除します。
git reset HEAD [file-name-A.ext] [file-name-B.ext]
その後、それらを少しずつ追加して戻します。
コマンドラインも使用できると思います:
git add -p
これにより、コミットされていないすべてのファイルを 1 つずつ確認し、それらをコミットするかどうかを選択できます。
次に、変更ごとに表示されるオプションがいくつかあります。「はい、このファイルを追加します」には「y」を使用し、「いいえ、後でこれをコミットします」には「n」を使用します。
Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
他のオプション ( q,a,d,K,g,/,e,? ) については、それらが何をするのかわかりませんが、「?」詳細を調べる必要がある場合は、 が役立ちます。
これの素晴らしい点は、作業をプッシュし、後で新しいブランチを作成できることです。コミットされていないすべての作業は、その新しいブランチに続きます。多くの異なるものをコーディングしており、プッシュする前に実際に github で作業を再編成したい場合に非常に便利です。
これが役に立てば幸いです。以前に言われたことはありません(言及されていた場合、私の悪いことです)