0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【学習】git add .した後に親ブランチにいることに気づいて背筋凍った

Posted at

はじめに

よくあるブランチ切り忘れの記事は、単純に「Git ブランチ切り忘れ」というタイトルだけですが、わかりやすいように 「git add .した後にきりわすれた」 を加えてみました。

簡単に経緯

# 運用状、「test」を親ブランチにしています
% git branch
  main
* test

# 他の人もリモートにプッシュを行っているので、 リモートの情報を取得し、リモートのtestをローカルにマージ
% git fetch origin
% git merge origin/test

⚠️ここまでで、何を勘違いしたのか?このままファイルの変更修正を行ってしまいました。

# よーし、実装したいものは一通りできたから、add, commit, pushするか!
% git add .

# あっ、今更だけどブランチも確認しよう
% git branch
  main
* test

# オワタ

実際に行った解決までの手順

# 今のtestブランチの状態(ステージした変更も含む)を持ったまま、新ブランチを作成しそこに移動
# ステージした変更(git add .したもの)はそのまま引き継がれます!
% git checkout -b feature/test1
% git commit -m "新しい機能の追加"
% git push origin feature/test1

git addの仕組みがいまいちわからない

❓なぜaddしたものもブランチを切り替えるときに「ついてくる」のか?

調べてみると以下のようなことがわかってきました!

  • git add .は「どのブランチにいるか」に関係あるが、addされた変更はブランチをまたいで持っていける
  • git add自体は今いるブランチに対して行う操作だが、git addした内容(=ステージ)は、まだどのブランチにも保存されていない
  • git addされた「ステージの中身」は、Git全体の一時的な「共通スペース」に入っている
  • 最終的にgit commitしたブランチにその変更が「属する」ことになる

参考

  • addとcommitの仕組みが猫のイラストでわかりやすい

  • もっと丁寧に処理を行っている

  • こちらもstashしている

おわりに

stashしたほうがいいのでしょうか?
今回はこれでうまくいきましたが、何かご存じの方いたらご教示いただきたいです。
つたない説明にはなりましたが、本記事が誰かの参考になればさいわ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?