もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
普段tortoise gitを使っていて、gitコマンドはあまり意識せずに使えてしまってるが、 たまに細かいことをしようと思うときや、別のgitクライアントソフトを使ってる人からgitに関する質問をされると、 全然話が通じなくなってしまうので、ちょっとコマンドも覚えときたい。
git push origin ブランチ名
リモートに、指定のブランチをpushする。
git push origin ブランチ名 -f
リモートに、指定のブランチを強制的にpushする。
rebaseしたあとに、元のブランチと派生元が変わったときに、 そのままだとpush時にエラーがでるので、どうしてもpushしたいときは、強制的にpushする必要がある。
たとえば、ブランチ1をプルリクエストしたあとに、ブランチ2のプルリクがでて、先に2のほうがdevelopにマージされた。 その後、ブランチ1も引き続きプルリクしてるが、マージの前に先にブランチ2の変更を取り込みたい、というときに、 ブランチ1を最新のdevelopにrebaseする。 rebaseしたローカルのブランチは、リモートにpushする際にエラーになる(ブランチの派生元が変わってるから)ので、強制的にpushする。
そうすれば、ブランチ1のプルリクエストはそのまま使うことができる。
git reset <コミットハッシュ> --hard
今のブランチを、指定の(過去の)時点のコミットに巻き戻したいときに使う。
- ブランチが指定コミットに巻き戻る
- ステージングエリアが巻き戻る
- ワーキングディレクトリが巻き戻る
→要するに、全部巻き戻る。
手元のワーキングディレクトリにも、変更は残らず、全部指摘のコミット時点に戻ってる。 ※リモートのブランチには、この時点ではまだ残ってるので、「消えてもた!」と焦らなくてもOK。
git reset <コミットハッシュ> --soft
今のブランチを、指定の(過去の)時点のコミットに巻き戻したいときに使う。
ただし、hardとは戻り具合が違う。
- ブランチが指定コミットに巻き戻らない
- ステージングエリアが巻き戻らない
- ワーキングディレクトリが巻き戻る
tortoise gitを使ってると、
- 元のコミットから、指定のコミットまでの変更点が、手元のワーキングディレクトリに残る。
- 赤マルのファイルが残る
という感じ。
tortoise gitを使ってる上では、「ステージングエリア」はあまり意識しない(ファイルをAddするときぐらいな)感じなので、ほぼほぼ「--hardとの違いは、手元ワーキングディレクトリに変更差分がのこるかどうか」な感じ。
git branch -m <現ブランチ名> <新ブランチ名>
今のブランチ名を変更したいときに使う。