特定のコミットをリモート リポジトリにプッシュする
この記事では、特定のコミットを Git のリモート リポジトリにプッシュするプロセスの概要を説明します。 いくつかのコミットを含む Git リポジトリがあり、1つのコミットのみをプッシュする必要があるとしたら、どうすればよいでしょうか?
特定のコミットをリモート リポジトリにプッシュする
単一のコミットをリモート リポジトリにプッシュするには、以下に示すコンテキストで Git プッシュ コマンドを使用します。
$ git push <remote> <commit id>:<remote branch>
いつものように、概念を説明するために例を使用します。
以下の例は、下の画像に示すように、4つのコミットを持つ Demo
リポジトリを示しています。
initial
コミットをリモート リポジトリにプッシュしたいとします。 どうすればいいでしょうか?
初めてリモート リポジトリにプッシュする場合は、次の手順に従います。
まず、以下に示すように、リモート リポジトリをローカル リポジトリに追加します。
$ git remote add origin https://github.com/Wachira11ke/Demo.git
initial
コミットをリモートにプッシュするには、以下を実行します。
$ git push origin 6b0f31a:refs/heads/master
初めてリモートにプッシュするので、refs/heads/master
引数を使用して、リモート リポジトリに master
ブランチを作成する必要があります。 このコマンドは、Initial
コミットのみをリモート リポジトリにプッシュします。
最初のコミット、つまり ライセンスの更新
のみをプッシュしたい場合はどうすればよいでしょうか?
git push origin c87321d:master
を実行しても、目的の効果は得られません。
これは、Git が指定されたコミットを含むすべてのコミットをプッシュするためです。 私たちはそれを望んでいませんよね?
最初のコミットが最後になるように、コミットを再配置する必要があります。 Update Licenses
コミットは、Initial commit
の直後に行う必要があります。
以下に示すように、対話モードで git rebase
コマンドを実行することでこれを行うことができます。
$ git rebase -i HEAD~3
このコマンドは、テキスト エディターを開きます。 以下に示すように、pick
コマンドを使用してコミットを並べ替えます。
これで、テキスト エディターを終了して、リベースを完了できます。 コミット履歴は次のようになります。
以下に示すように、コミットをリモート リポジトリにプッシュできるようになりました。
$ git push origin 20136f7:master
リモート リポジトリには 2つのコミットのみを含める必要があります。
初期コミット
コミットUpdate Licenses
コミット。
私たちのケースを確認しましょう。
そこにあります。
結論として、git push <remote> <commit id>:<remote branch>
を使用すると、特定のコミットをリモート リポジトリにプッシュできます。
ただし、このコマンドは、指定されたコミットを含むすべてのコミットをプッシュします。 これを改善するには、説明したように、git rebase
コマンドを使用してコミットを再配置する必要があります。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn