さまざまなファイルに対していくつかのコミットを行いましたが、これまでのところ、特定のコミットのみをリモートリポジトリにプッシュしたいと考えています。
それは可能ですか?
さまざまなファイルに対していくつかのコミットを行いましたが、これまでのところ、特定のコミットのみをリモートリポジトリにプッシュしたいと考えています。
それは可能ですか?
回答:
プッシュしてアップコミット与え、あなたが書くことができます。
git push <remotename> <commit SHA>:<remotebranchname>
提供されたものは<remotebranchname>
すでにリモートに存在します。(そうでない場合は、を使用git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
して自動作成できます。)
以前のコミットをプッシュせずにコミットをプッシュしたい場合は、まずを使用git rebase -i
してコミットの順序を変更する必要があります。
git push <remotename> <commit SHA>:<remotebranchname>
動作します。トリックはgit rebase -i
、最初のコミットとして必要なコミットを移動するためにそれを組み合わせ、そのcommit-shaを指定することです
git push <remotename> <commit SHA>:refs/heads/<new remote branch name>
。この後、答えが説明するようにプッシュします。
git push origin HEAD~1:master
。
-f
フラグを使用します。
他の答えは、並べ替えの説明に欠けています。
git push <remotename> <commit SHA>:<remotebranchname>
単一のコミットをプッシュしますが、そのコミットはローカルのプッシュされていないコミットの最も古いものである必要があり、top、first、またはtipのコミットと混同しないようにしてください。コミットは最も古いコミット、つまり最新のコミットから最も遠いコミットを必要とします。最も古いコミットではない場合、最も古いローカルのプッシュされていないSHAから指定されたSHAへのすべてのコミットがプッシュされます。コミットを並べ替えるには:
git rebase -i HEAD~xxx
コミットの順序を変更した後、リモートリポジトリに安全にプッシュできます。
要約すると、私は
git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master
1つのコミットをリモートマスターブランチにプッシュします。
参照:
以下も参照してください。
を使用することをお勧めしgit rebase -i
ます。プッシュするコミットを、作成したコミットの一番上に移動します。次に、を使用git log
してリベースされたコミットのSHAを取得し、チェックアウトしてプッシュします。リベースにより、他のすべてのコミットがプッシュした子になることが保証されるため、将来のプッシュも正常に機能します。
git log
ステップを再?
チェリーピックは、特定のコミットをプッシュしている間、他のすべての方法と比較して最も効果的に機能します。
その方法は次のとおりです。
新しいブランチを作成-
git branch <new-branch>
新しいブランチを元のブランチで更新します-
git fetch
git rebase
これらのアクションにより、オリジンとまったく同じものが確実に得られます。
sha id
プッシュしたいものをチェリーピック-
git cherry-pick <sha id of the commit>
あなたはsha id
走ることによって得ることができます
git log
それをあなたの起源に押してください-
git push
実行gitk
して、すべてが希望どおりに見えることを確認します。
git rebase -i
上記のソリューションで提案されているように、使用は理想的なソリューションになります。チェリーピックは、コミットを複製する場合にのみ使用する必要があります。
そのコミットに「git revert」してからプッシュする必要があると思います。またはcherry-pick
、新しいブランチにコミットして、それをリモートリポジトリのブランチにプッシュすることもできます。何かのようなもの:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
cherry-pick
必要なコミットだけを実行できます。
また、別のディレクトリで: