AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

(調べがちの)たまーに必要な Git コマンド

git の使い方って結構しらべませんか?僕は、開発してると数日に一回は調べてる気がします。
たまーに欲しくなるコマンドを列挙してみました。まだ間違いはあるかもしれないのですが、自分のメモ代わりに。

ブランチ

ブランチ名の変更

ローカル 可能 git branch -m current-name new-name
リモート 直接は不可(一度削除して、pushし直す) git push origin :current-name , git push -u origin new-name

ローカルは、reflogもケアしてくれる仕組みのようです。
リモートは変更不可ということなので、チームメンバーとの事前共有は必須ですね。

参考:

リモート ブランチ

リモート ブランチ一覧 git branch -a
リモート ブランチの削除情報を取得 git fetch -p

リモートブランチが削除された情報は、 git fetch -p しないと反映されないので、けっこう戸惑いました。

参考:

特定コミットが含まれるブランチ

ハッシュ値から検索(ローカルのみ) git branch --contains ハッシュ値
ハッシュ値から検索(リモートも含める) git branch -r --contains ハッシュ値

参考:

マージ

Non Fast Forward

マージtoolの利用 git mergetool

参考:

取り消し系 (1)

マージの取り消し(コミット前) git reset --hard HEAD
git resetの取り消し git reflog , git reset --hard HEAD@{num}

参考:

取り消し系 (2)

マージの取り消し(コミット後) git revert -m 1 mergeコミットのSHA1

参考:

タグ

tag を リモートへ/から

リモートへ、一つだけ反映 git push origin v0.9
リモートへ、全てのタグを反映 git push origin --tags
リモートのタグを削除 git push origin :v0.9 OR git push --delete origin v0.9

参考:

その他

Git の理解

触り始めてしばらくして?になったのは git pull / fetch の使い分けですね。一度、思わぬ状態を招いてからは、fetchを基本的に使ってから pull するかどうかを判断するようにしています。

このあたりを理解する時に必要だったのは Gitのリモートブランチと追跡ブランチは違うよ にある追跡ブランチの概念でした。

  • ローカルブランチ
  • 追跡ブランチ
  • リモートブランチ

それにくわえて、git status で表示される 情報の読み取りですね。ここをちゃんと読むようになって、自分が作業しているブランチの状態がはっきりとわかるようになりました。

参考:

感想

しかし、Git はすごい仕組みですね。作った人もメンテナーも賢いし、使いこなしてる人もかしこ過ぎです。
これからも、うまくフォローしていければと思った次第です。