質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

1587閲覧

$ git rebase -iで過去のコミットメッセージを修正した際の挙動

toromou

総合スコア30

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

2クリップ

投稿2019/09/02 07:29

過去のコミットメッセージを修正するために$ git rebase -iを実行したところ、
それ以降のコミットが全て新しいものになってしまいました。
これは仕様なのでしょうか。もし仕様なのであれば、実行前にあったタグを新しいコミットに付け直す方法はありますか。


実行前の$ git log --oneline --all

2efe9e2 (HEAD -> master, tag: v2.1) コメントA 436cafe (tag: v2.0) コメントB 0cc5aa3 コメントC c19f89f コメントD

$ git rebase -iを実行

reword 0cc5aa3 コメントC pick 436cafe コメントB pick 2efe9e2 コメントA

実行後の$ git log --oneline --all

09abf5e (HEAD -> master) コメントA 9ca54da コメントB d4cba4c 修正したコメントC 2efe9e2 (tag: v2.1) コメントA 436cafe (tag: v2.0) コメントB 0cc5aa3 コメントC c19f89f コメントD

初心者なので、お詳しい方どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは。

Git の仕様通りの動作です。
Git は一度作った commit を変更することは決してできないため、rebase などの書き換えと言われるコマンドは、書き換えた状態の commit を新しく生成します。
なので、タグ付けを済ませたような段階で rebase 等で履歴の改変を行うのはおおよそ推奨されません。
それらを理解した上で、rebase を実施し、tag の付け直しをしたいなら、

sh

1git tag -f vX.X

このコマンドでタグを強制的に作り直して解決できます。

投稿2019/09/02 09:08

tamoto

総合スコア4103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

git commit --amendしたときそれ以降のコミットが変わらないと思われるかもしれませんが、--amendも新しいコミットを作っています。
git rebaseは新しいコミットを作るコマンドです。

古いコミットと新しいコミットは対応関係がありません。
手動でタグを付け替えしましょう。

投稿2019/09/02 18:14

querykuma

総合スコア777

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問