2つのプロジェクトがあります。1つは「公式」プロジェクトで、もう1つは簡単な変更です(いくつかのファイルが追加されています)。新しいブランチを作成し、新しいファイルをそれらに配置しました。ただし、開発中、両方のブランチに共通するいくつかのファイルが変更されます。
これらのファイルのみをコミットするにはどうすればよいですか?
2つのプロジェクトがあります。1つは「公式」プロジェクトで、もう1つは簡単な変更です(いくつかのファイルが追加されています)。新しいブランチを作成し、新しいファイルをそれらに配置しました。ただし、開発中、両方のブランチに共通するいくつかのファイルが変更されます。
これらのファイルのみをコミットするにはどうすればよいですか?
回答:
変更を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 commit [some files]
を意味する--only
)を使用する必要があります。最初の例(git add [some files]
後にgit commit
)は、ステージングされた他の変更もコミットします。
コミットしたいファイルのリストを取得する
$ 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 commit file1 file2 file5 -m "commit message"
この一部は「不完全」のようです
人々のグループは、彼らが引用符などを使うべきかどうかを知るつもりはありません。
場所のパスも示す特定のファイルを1つ追加します
git add JobManager/Controllers/APIs/ProfileApiController.cs
コミット (コミットはローカルのみであり、他のシステムには影響しません)
git commit -m "your message"
リモートリポジトリにプッシュ
git push (this is after the commit and this attempts to Merge INTO the remote location you have instructed it to merge into)
他の答えはあなたが時々やりたいと思う隠し場所などを示しています
次のように、複数のファイルに変更を加えたとします。
しかし、File1とFile3の変更のみをコミットしたいとします。
これを行うには2つの方法があります。
1.以下の2つのファイルのみを使用してステージングします。
git add file1 file2
次に、コミット
git commit -m "your message"
次に押します
git push
2.直接コミット
git commit file1 file3 -m "my message"
次に押します
git push
実際、最初の方法は、ファイルを定期的に変更してステージングする場合に便利です ->大規模プロジェクト、通常はライブプロジェクト。
しかし、ファイルを変更してステージングしない場合は、直接コミットできます->小規模プロジェクト
--only
。次に、参照と同じコマンドをgit commit --only file1 --only file3 -m "my message"
使用するか、ショートカットをgit commit -o file1 -o file3 -m "my message"
リファレンスとして使用し
コードの変更が少ない場合、これは単純なアプローチです。
1. git stash
2. git stash apply
3. remove the files/code you don't want to commit
4. commit the remaining files/code you do want
次に、別のコミットまたは別のブランチで削除したコード(コミットしなかったビット)が必要な場合は、このブランチで次のようにします。
5. git stash apply
6. git stash
ステップ5では、stashをすでに適用しており、ステップ4で必要なコードをコミットしたので、新しく適用されたstashでの差分と追跡解除は、ステップ4でコミットする前にステップ3で削除したコードです。
そのようなステップ6は、おそらく実際に変更を失いたくないので、コミットしなかったコードの隠し場所です。したがって、正しいブランチでgit stash applyを実行してコミットすることにより、ステップ6の新しいスタッシュをこのブランチまたは他のブランチにコミットできます。
明らかに、これは1つのフローで手順を実行することを前提としています。これらの手順の他の時点で隠しておく場合は、上記の各手順の隠し場所の参照に注意する必要があります(基本的な隠し場所だけでなく、最新の隠し場所を適用します)。