[解決済み] タグを1つ前のコミットに移動する
質問
リポジトリにブランチが1つしかありません(
master
). 私のリポジトリへの貢献者は私一人です。
最近、私は
tag
を追加しました。最後の必要なコミットだと思ったものを行った後、しかし今になって、もうひとつ変更/コミットを行うべきだったと気づきました。
というわけで、私が持っているのは
commit 124
commit 125
commit 126 <-- tag v1.0
commit 127
を移動させたいのですが
v1.0
タグを次のコミットに移動させたい、つまり
127
を追加します。
どうすればいいのでしょうか?
どのように解決するのですか?
メンバー全員が同じ版の「今週の本」を使っていないブッククラブに行ったことがありますか?それは悪夢ですよね。タグを移動すると、本質的に同じ状況に陥ります。
リポジトリをプロジェクトの進捗を記録する本と考えるなら、タグを 章の見出し .
タグを共有した後に別のコミットに移動するのは、読書会の仲間に
みんな、知ってるかい?なぜなら、第8章の始まりは、126ページではなく、128ページであると、私が単独で宣言したからです。
よくないことです。タグの移動は歴史の書き換えであり、共有された歴史を書き換えてはいけないのです。協力者を怒らせる一番確実な方法です。それに、あなたは
<ブロッククオート私のレポの貢献者は私一人です [...]
今はそうかもしれませんが、あなた以外の人があなたの GitHub リポジトリにアクセスできる場合 (公開されている場合など)、そのうちの何人かはすでにフォークやクローンを作成しているかもしれません (ただし、このような場合は 方法 で調べることができます)、歴史を書き換えると彼らを怒らせる危険性があります。
そのタグを移動させたいと100%確信しているのであれば、Gitはそれを可能にします。ここでは
git tag --force v1.0 <ID-of-commit-127>
で、そのタグを強制的にプッシュする必要があります。
git push --force --tags
しかし、また <強い よく考えて が必要です。
追記(2018/09/26)
自分の答えを見直す必要を感じています...。
何年もの間、私が「すでに公開されているタグを移動しないように」と指示したことに対して、コメントで異議を唱える人がいました。もちろん、この助言は普遍的というよりは文脈的なものです。私は、公開済みタグを移動するための良いケースが存在することを疑っていません。しかし、一般論として、公開済みタグを移動する決定は、意図的に、細心の注意を払って行われるべきであると、私は確信しています。
最近の例で思い浮かぶものが 1 つあります。Go 1.11 では、実験的なサポートとして モジュールシステム の実験的なサポートが追加されました。このシステムでは、バージョン管理のために Git タグに大きく依存しています。公開されている (たとえば GitHub で) Go モジュールのタグを移動すると、悲惨な結果になります。
そうすることで、あなた(モジュールの作者)とユーザー(あなたのモジュールに依存している人)の間に確立された契約を破ることになります。なぜなら、Goのモジュールシステムが提供しようとする保証を否定することになるからです。
モジュールは正確な依存性要件を記録し、再現可能なビルドを作成します。
それは人々を怒らせる一つの確実な方法です。
この例は、少なくともいくつかのケースでは、公開タグを無闇に移動すべきではないことを納得させるのに十分かもしれません。私は自分の主張を休みます。
関連
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] リモートタグを削除する方法を教えてください。
-
[解決済み] ある特定のコミットのコミット作者を変更する方法は?
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Git リポジトリで現在のコミットを唯一の(初期)コミットにする?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Gitで「このリポジトリでは別のgitプロセスが実行されているようです...」と表示される問題
-
undefinedGitのプッシュコードには、! [rejected] master -> master (fetch first) 問題があります。
-
git occurs このリポジトリで別のgitプロセスが動作しているようです。例えば、.NETで開いたエディタなど。エラー
-
Git はファイル名の大文字と小文字を無視し、修正する
-
[解決済み] Git のタグとブランチはどう違うのですか?ここではどちらを使うべきですか?
-
git push issues
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
-
[解決済み] Git は、省略形のコミット ID が 2 つの異なるコミットを参照する場合に警告を発しますか?
-
[解決済み] 別のユーザーでコードをコミットするにはどうすればよいですか?
-
[解決済み] 非標準のポートでリモートリポジトリを使用する