この記事について
本記事は社内で実施したGit講習のスライドを元に作成された記事です。
Gitを使ってはいるものの、どういう構造になっているかとか仕組みについてはあまりわかっていないという方たちを対象にしています。
前回
イントロダクション
Gitを使ってチームでファイルを共有することは便利ですが、作業ミスでチームに迷惑をかけてしまうこともあるかもしれません。
そんな時でもさっとミスをリカバリーできる便利な機能を学んでいきましょう。
リバート
revertは、特定のコミットの変更を元に戻すためのコマンドです。これは過去のコミットの変更を取り消す新しいコミットを作成します。
実践
リバートを実践してみます。
まずはファイルを変更してコミットします。
echo 'ABC' >> hello.txt
git add hello.txt
git commit -m "add ABC"
コミットができました。
次にリバートをするために必要なコミットIDを確認したいのでログを参照してみましょう。
git log –oneline
このコマンドを実行すると下記のようにログが表示されます。「ab5937f」の部分がコミットIDです。
128fe0b (HEAD -> main) add ABC
ab5937f add ABC
・
・
(省略)
コミットIDがわかったのでリバートを実行してみます
git revert 128fe0b
これでリバートができました。
ファイルを見ると先ほどのコミットが取り消しされているはずです。
リセット
resetは、特定のコミットに強制的に移動するためのコマンドです。これにより、一連のコミットを一度に元に戻すことができます。
実践
リセットを実践してみます。
まずはログを確認します。
git log --oneline
下記のログが表示されました。
e39bfde (HEAD -> main) Revert "add ABC"
(省略)
95954ba ファイルの内容を変更したよ
ac4c113 初めてのコミット
今回は95954baの時点まで戻してみようと思いますので下記のコマンドを実行します。
git reset --hard 95954ba
これでリセットができました。
ファイルを見ると一気にファイルの状態が戻っているはずです。
チェリーピック
cherry-pickは、他のブランチから特定のコミットを選び、現在のブランチに適用するためのコマンドです。これにより、全ての変更ではなく、特定のコミットだけを選んで取り込むことができます。
実践
チェリーピックも実践してみます。
まずは新しくブランチを作成し、そこでファイルに2つの変更を行い、それぞれコミットをしてみます。
git checkout -b branchD
echo 'changeA' >> hello.txt
git add hello.txt
git commit -m "add changeA"
echo 'changeB' >> hello.txt
git add hello.txt
git commit -m "add changeB"
これでbranchDに2つのコミットが行われました。
ログを見てましょう。
git log --oneline
7ac268a (HEAD -> branchD) add changeB
7047eb2 add changeA
(省略)
2つのコミットが確認できましたね。
では、mainブランチに戻って7047eb2のコミットだけをmainに取り込んでみます。
git checkout main
git cherry-pick 7047eb2
これで7047eb2のコミットの内容だけがmainブランチに反映されました。
次回
第8話「レビューの力:プルリクエストの利点」へと続きます
https://qiita.com/sho_fcafe/items/aa750549e67061539f5a