3. Git に慣れてきたら...。 - ncxx-sl-lab/git-tutorial GitHub Wiki

ここからのコマンドは、最低限のGitコマンドを操作出来てからトライしてみましょう。

変更履歴がみたい

   git log --stat

詳細に細かく履歴を見たい時は下記のようにしてください。

   git log --decorate --graph --name-status --oneline

コンフリクトの解消

git pullgit merge でコンフリクトが発生し、自分の手で解決したい。
そんな時はgit status すると、コンフリクトしたファイルが赤く表示されます。

$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 3 different commit(s) each, respectively.
#
# Changes to be committed:
#
#       modified:   templates/guide.html
#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      templates/index.html
#

この場合 templates/index.html がコンフリクトしているようです。

コンフリクトしたとされるファイルをエディタで開いてください。"<<<<<<<" と ">>>>>>>" に囲まれた部分がコンフリクトしています。

<<<<<<< HEAD
    <div class="container">
=======
    <div>[% IF foobar %]
>>>>>>> 3100b66ffb26bb8b876cb47d68d2b91b4ec17f7f

"=======" を挟んで "HEAD" とある側が自分の変更、反対側が相手の変更です。
意図を読むか相談するかして、二つの変更を手動でマージします。分からなくなった場合は、いつでも git reset --hard して開発者を呼んでください。

この例だとこれが正しそうです。

    <div class="container">[% IF foobar %]

このようにしてコンフリクトマーカーをすべて消し去ったら、そのファイルを git add し (こうすることでコンフリクトを解消したことをシステムに伝えます)、いつものようにコミット&プッシュします。
コンフリクトしているファイルが複数ある場合は、全部に対して手動マージしてからコミットしてください。

$ git add templates/index.html
$ git commit
$ git push

ブランチを間違えてコミットしてしまった

push している場合やよくわからない場合は、開発者に頼んでください。
まだ push されておらず自分の手で解決したい場合は、以下のようにしてください。

theme ブランチに行うべき変更を master ブランチにコミットしてしまった場合。その直後なら

(theme ブランチに戻る)

$ git checkout theme

(master の最新のコミット=誤った変更を theme ブランチに適用)

$ git cherry-pick master

(master の最新のコミットを巻き戻す)

$ git revert master

これで完了です。コンフリクトが発生するなどして分からなくなったら、git reset --hard して開発者を呼んでください。

あの言葉が入ったファイルを探す

git grep '<var>word</var>' で、リポジトリ内からその単語を含むファイルと行を表示できます。
ふつうに検索すると、アプリのコードも検索されてしまうので最後にディレクトリ名を加えて以下のようにするのがいいです。

$ git grep 'TODO' templates

templates/ch.html:[% # TODO : 外部化したい %]
templates/campaign.html:            [% #TODO このテーマを使うボタンが動かない %]

あのときのファイルの内容に戻したい

前回のコミットに戻したい。

    git reset --hard HEAD^

任意のコミットに戻りたい時は HEAD^ の代わりにコミットのハッシュ値を指定する。
そうすれば任意のコミットまで戻れる。
コミットのハッシュ値は git log 調べればわかる。
ハッシュ値は全て指定しなくても頭の7桁ぐらいで一意になります。

⚠️ **GitHub.com Fallback** ⚠️