想定ケース
Gitについて、
- 書きかけ・未完成のコードを他人へ共有したいけど、コミット履歴を汚すのはチーム的・個人的に良くないと思っている
- 別のPCへコードを移したいけど、コミット履歴を汚したくない
方向けの記事です。コミット履歴を気にしていない方には関係かな。
簡単に
簡単に述べると、
- (送信側が)捨てブランチに
commit
&push
する
ことで共有ができます。GitHubなどで他人から見てもらうだけの場合は、用済みになったらブランチごと削除でいいですね。
もし、他ローカルへ移す場合はここからさらに、
- (受信側が)対象ブランチにて、未完成コードを
push
した捨てブランチをpull
- (受信者が)そのまま最新のコミット履歴を削除して、一個前のコミットの状態へ戻る
こうすることで、コミット履歴を汚さずに他PCでも、その時点での開発ができます。こちらの場合も用済みになった捨てブランチを受信者のローカルとリモートからブランチごと削除。
コマンド
捨てブランチにcommit
&push
捨てブランチの名前をtemp
とします
git checkout -b temp
git add *
git commit -m "temp"
git push origin temp
これでGitHubなどで、temp
ブランチにアクセスするとコードが見れます。
対象ブランチにて、未完成コードをpush
した捨てブランチをpull
もしmain
ブランチで作業していたコードを共有していたとして、
git checkout main
git pull origin temp
main
ブランチでtemp
ブランチをpullすることによって、(コンフリクトがない限りは)mainブランチに中途半端コードを取り込めます。
そのまま最新のコミット履歴を削除して、一個前のコミットの状態へ戻る
git reset --mixed HEAD^
取り込んだコードを残したまま(--mixed
)、一個前のコミット(HEAD^
)までリセット(reset
)するという意味ですね。これで中途半端コミットが開発中のブランチから消えます。
用済み捨てブランチを削除
ローカルから削除する場合は
git branch -D temp
ブランチ名間違えると大変なことになるので注意してください
リモートから削除する場合は
git push origin -d temp
ブランチ名間違えるともっと大変なことになるので注意してください
おわりに
いいね頂けると泣きながら喜びます><