2016-05-12 11 views
4

gitを使用するHEAD状態を解除して新しいコミットを作成したいと思います。私は、タグを作成し、 'detached commit'とタグをリモートrepoにプッシュしたいと思います。これは可能ですか?デタッチされたHEAD状態で行われたコミットをプッシュすることができます

ローカルリポジトリに分離コミットを作成してタグを作成すると、タグをチェックアウトしてその状態に戻ることができます。私は遠隔レポと共有したいので、他の用途ではレポをクローンしてタグをチェックアウトして同じ状態にすることができます。

私がこれをやりたいのは、ビルドプロセスがビルド番号をファイルに取り込む必要があるからですが、開発が進行中のブランチにコミットしたくないからです。私はコミットを別にするだけでなく、ビルドに含まれるタグとファイルを誰でもチェックアウトできるように、コミットをキャプチャしてタグ付けしたいと思っています。コミットを別のブランチ、つまり "ビルド"にプッシュすることをお勧めしますか?

+0

ちょうどそれのために新しいブランチをチェックアウトすると間違って何? –

+0

'git push --tags' –

+0

@JiriKremser:これも機能しますが、それ以上の意図がある可能性があるすべての*タグをプッシュします。 – torek

答えて

6

はい、this-this "this"はメインの質問を意味しています。 "タグ付きではなくブランチが含まれていないコミットをプッシュできますか?" - 完璧です。 git pushは、他のGit(例えば、ssh:// ...やhttps:// ...など)を呼び出すことで動作し、必要に応じてコミットを行い、他のGitに "特定のコミットを指す参照名を設定してください"と尋ねる。

タグがあるので、他のGitに同じタグを設定してください。リモートと仮定すると(それが通常のように)origin命名されています

git push origin <tag> 

必要な場合は、refs/tags/tagを完全な名前を綴ることができます。タグ名がブランチ名と簡単に区別できる場合(たとえば、タグがで、ブランチがvで始まらない場合など)、必要ではありません(しかし、一般的には賢明かもしれません)。

タグをまだ持っていない場合でも、他のGitにという名前のを提供する必要があります。ここでトリッキーなビットは、プッシュ時に、あなたは彼らがすでにブランチnewbranchやタグnewtagを持っているかどうかわかりませんということです

git push origin HEAD:refs/tags/newtag 

git push origin HEAD:refs/heads/newbranch 

か:のようなことを行うには、あなたが何かをするだろう。タグを自分で設定しておき、それらからすべてフェッチしている場合は、おそらく良いアイデアがあります。保証はありません。そのタグはまだありません。彼らはを行う場合という

注意はその名前を持っている、とあなたは丁寧に、彼らは他のコミットいくつかのポイントに自分の名前を変更するすることを要求し、それらを拒否することができます。これは、プッシュからのエラーrejectedが表示されたときです。あなたはそれらをコマンドすることができます(git push --forceまたは+のプレフィックス構文をrefspecで使用します)。しかし、通常は適切な方法ではありません。また、彼らは依然として拒否することができます(その部分は他のGitを制御します)。

ここ
0

git tag mytag git push origin mytag:mytag mytagという:mytagというレフリー/タグ/ mytagという同等です:レフリー/タグ/ mytagという

関連する問題