開発で使ったGitコマンドの備忘録
株式会社アドバンテッジリスクマネジメントDX開発部の中島です。
今回は、開発を通して学んだGitコマンドを自身への復習も兼ねて記事にしたいと思います。
背景
普段の開発でよく使うGitですが、「こんなコマンドあったんだ!」と驚くこと、ありますよね。
今回、開発リーダーに教えてもらった「知らなかったコマンド」をまとめてみました。
今までは知らなくても開発は進められていたのですが、教えてもらったコマンドを使うことで、開発効率が上がりました。そんなコマンドを復習も兼ねて記事にしました。
Gitコマンド
教えてもらったコマンドを以下にまとめました。本当はもっとたくさん教えてもらったんですが、すべて載せると大変なことになるので(笑)、今回は厳選しました。
内容 | コマンド |
---|---|
リモートリポジトリのURLを変更する | git remote set-url origin ${url} |
ブランチ名変更の影響をリモートへ反映させる | git branch -u origin/ブランチ ブランチ |
commitを一時退散させる | git cherry-pick 引っ越したいcommitのhash値 |
直前のコミットに今の更新を取り込みたい | git commit --amend --no-edit -n |
一時的に変更を待避させたい | git stash |
リモートリポジトリのURLを変更する
OSSの編集を行う際、GitHub上でリポジトリをforkしてローカルで作業を開始します。
通常、GitHub上でforkを行った後にリポジトリをcloneすると、リモートリポジトリのURLは自分のforkしたリポジトリになっています。そのため、追加のリモートURL変更操作は不要です。
一方で、オリジナルリポジトリを直接cloneして作業を始める場合は、リモートURLを自分のリポジトリに変更する必要があります。
このとき使うのが以下の git remote set-url コマンドです。このコマンドは、既存のリモートリポジトリのURLを変更し、git push や git pull の操作を指定したリポジトリに対して行えるようにします。
git remote set-url origin ${url}
本コマンドのドキュメントはこちらです。
ローカルブランチの名前を変更した後のリモートブランチとの紐付け
開発中にローカルでブランチ名を変更したときに、その変更をリモートへ反映させておきたいです。
開発中にローカルでブランチ名を変更した場合、その変更をリモートにも反映させないと、commit や push の際に以下の問題が発生します。
- 変更前のブランチと変更後のブランチが両方リモートに存在してしまう
- どちらが正しいブランチか分かりにくくなる
そのため、ローカルでブランチ名を変更したら、リモート側の設定も更新する必要があります。
そこで、以下の手順で紐付けを行いました。
1.ブランチ名の変更
ローカルのブランチAをブランチBへ名称を変更する。
git branch -m ブランチA ブランチB
2.リモートブランチ情報をローカルへ反映
リモートリポジトリ(origin)から最新の変更を取得し、リモートのブランチ情報がローカルに更新させる。
git fetch origin
3.ローカルブランチにリモートブランチを追跡させる
ブランチBを origin/ブランチBに追跡するように設定します。これで、git pushなどを実行すると、リモートリポジトリへ反映されます。
ちなみにですが、origin/はリモートリポジトリを指し示しています。
git branch -u origin/ブランチB ブランチB
git branch コマンドのオプションについて簡単にまとめました。
- -m <新しいブランチ名> : 現在のブランチの名前を変更
- -m <古いブランチ名> <新しいブランチ名> : 指定したブランチの名前を変更
- -u <リモート/ブランチ名> : 現在のブランチの追跡ブランチを設定
- -u <リモート/ブランチ名> <ブランチ名> : 指定したローカルブランチの追跡ブランチを設定
commitを引っ越しさせる
ブランチ内の開発で大きなミスをしてしまい、ブランチを作り直したいときがありますよね。間違った変更が多すぎたり、コミットの順番がぐちゃぐちゃになってしまい、履歴を整理するよりもブランチを作り直したほうが楽な場合もあります。
このとき、ある程度の commit 履歴を新しいブランチに引き継ぎたいときに便利なのが git cherry-pick です。
新しいブランチで以下のコマンドを実行すると、特定の commit 履歴を反映させることができます。
git cherry-pick 引っ越したいcommitのhash値
他にも、 git cherry-pick を使う理由として以下があります。
- 複数の修正を含むブランチから、一部のバグ修正だけを取り込みたい場合
- 特定のコミットを好きな順番で適用したい場合
直前のコミットに今の更新を取り込みたい
開発中に小さな修正が発生したとき、不要にコミットを増やさず、前回のコミットにまとめたいことはよくあります。
以下のコードを実行すると、直前のコミットに今の更新を取り込むことができます。
git commit --amend --no-edit -n
このコマンドのオプションについて簡単にまとめました。
- --amend : 直前のコミットを修正する
- --no-edit : コミットメッセージを変更しない
- -n : Gitのフック(pre-commit など)を無視してコミットを実行する
一時的に変更を待避させたい
開発中だけど、今すぐ別件対応しないといけないときはありますよね。作業中の変更をそのままにしておくと、別の作業を始めるのが難しいです。例えば、作業中の変更をそのままに別ブランチへは移動できません。
以下のコマンドを実行することで、変更を退避させとくことができます。
git stash
git stash関連のコマンドとしては他に以下があります。
退避した変更を適用する
git stash apply
退避した変更を完全に削除する
git stash drop
退避した変更を一覧で確認する
git stash list
まとめ
本記事では開発に役立つGitコマンドを紹介しました。これらを使いこなせるように、今後も学びながら精進していきたいと思います。
最後に
株式会社アドバンテッジリスクマネジメントでは、一緒に働く仲間を募集しています!
興味を持っていただけた方は、ぜひ以下のリンクから詳細をご覧ください
Discussion