業務で一番何使うかなって考えたら、やっぱりGitだと思う。
来年も絶対使ってるから、今のうちによく使うコマンドとオプションをまとめておく。
(大体transitive.info - Git 使い方 見出し一覧を見れば分かるけども…。)
ちなみに順不同。さっと目を通せる程度のことしか書かない。
また何か間違ったことを書いてたり、このコマンドの方が便利やでとかいう指摘がありましたらコメントいただけると泣いて喜びます。
git remote
リモートリポジトリの一覧を表示
$ git remote -v
リモートリポジトリにrepo_nameという名前をつけて、pullとかで使えるようにする
$ git remote add repo_name git@***url***
repo_nameで指定されるリモートリポジトリのurlを変更する
$ git remote set-url repo_name git@***other-url***
git rm
git管理下からファイルを削除する(git rmとrmの違いについては別途記事を書くことにしよう)
$ git rm file_name
git管理下からファイルを削除するが、ファイル自体は残しておく
$ git rm --cached file_name
git add
カレントディレクトリの変更(新規作成ファイル含む)をインデックスに記録する
$ git add .
ある特定のファイルの変更部分のうちステージングにあげたいものを対話的に選択する(参考:横着で神経質な私とあなたに贈るgit add -p - Qiita [キータ])
git add -p file_name
git branch
ローカルにあるブランチ一覧と今自分が選択しているブランチを確認する
$ git branch
ブランチの新規作成(選択しているブランチは切り替わらない。また既に存在しているブランチを新規作成しようとした時はエラー)
$ git branch branch_name
ブランチ名の変更
$ git branch -m <old_branch_name> new_branch_name
ブランチを削除する(HEADに変更がmergeされていれば使える。ちなみにこのコマンドを実行してもリモートのブランチは削除されないので、リモートブランチもいらなくなったならgit push --delete
しないといけない)
$ git branch -d branch_name
ブランチの強制削除
$ git branch -D branch_name
git fetch
ローカルブランチにmergeせずに、リモートの変更をローカルのgitに教えてあげる
$ git fetch remote_repo
git merge
あるブランチの変更を現在のブランチに適応する
$ git merge a_branch
リモートにあるブランチの変更を現在のブランチに適応する(実行前にfetchしておく)
$ git merge remote_repo/a_branch
あるブランチの変更を現在のブランチに適応するときに、あるブランチのコミットを一個にまとめて適応する(このオプションに助けられることが結構あるんだけど、なんでこのオプションが重要なのかをうまく説明することがまだできない)
$ git merge --squash a_branch
git pull
(正直なところ手間が増えてもfetchしてmergeした方が安全。参考: git push の反対は git pull ではない - Qiita [キータ]) リモートの変更全てをfetchした上でローカルブランチに変更をmerge(ローカルのgitは基本的にfetchとかしない限りリモートの変更を知らないので、pruneオプションとかfetchは重要)
$ git pull --prune
git push
ローカルの変更をリモートに強制push
$ git push -f repo_name branch_name
リモートブランチの削除(ver 1.7以降)
$ git push --delete repo_name branch_name
リモートにあるタグの削除(ver 1.7以降)
$ git push --delete repo_name tag_name
リモートリポジトリにタグを付与する(あらかじめローカルでタグが貼られている前提)
$ git push --tags repo_name
git checkout
ブランチを切り替える(この時指定したブランチ名がローカルにはまだ存在せずリモートには存在する場合、リモートリポジトリの変更を反映した状態でブランチ切り替えが行われる)
$ git checkout branch_name
ブランチを新規作成して切り替える(リモートリポジトリに既にあるブランチであっても、ローカルでは新しいブランチとして作成される)
$ git checkout -b branch_name
git commit
コミットメッセージを付けてコミットする
$ git commit -m 'commit message'
別エディタを開いてコミットする(どんな差分をコミットしようとしているのか確認できる点が大きい。コミットする前にここで差分の編集もできる。私も以下のツイートを見て以来、-m使わずに-v使ってる。)
$ git commit -v
git commit -m使うな,-v使えと昔せこんさんに言われた記憶がある.それ以降-v付けるようにしてる
— Hiroshige UMINO ☕ (@yaotti) 2012, 12月 11
git reset
インデックスされた変更を取り下げる
$ git reset
現在のローカルの変更を全部指定のコミットまで元に戻す(ただしgit管理下におかれていないファイルには何もしない)
$ git reset --hard commit_log
git rebase
コミットログを後から自分に都合のいいように変更する(って言ってるけど、実際にコミットしたものを後から操作するの、別ブランチをマージとかしてたらクソ面倒だし、そもそも初めっからコミットログをいじらなくても良いように開発しろやっていつも自分に対して思ってる。)
$ git rebase -i
git diff
インデックスとHEADの差分を見る
$ git diff
コミット同士の差分を見る(before_commitとafter_commitのところはブランチ名でも良い)
$ git diff before_commit after_commit
他にもいろいろありますが…
例えばgit aliasとかgit configとか。でもこれらって一度設定してしまうと、そんなしょっちゅう使うようなコマンドではない気がする(少なくとも私は)。コマンドとオプションももっと他に便利に使えるものがあると思うけど、本当に今よく使うものはこの位だと思う。まだ理解が追いついてないコマンドとかもあるし。
- 作者: 濱野純(Junio C Hamano)
- 出版社/メーカー: 秀和システム
- 発売日: 2009/09/19
- メディア: 単行本
- 購入: 31人 クリック: 736回
- この商品を含むブログ (156件) を見る
今年の私が参考にしたgit関連リンク
- gitでコミットの順序を入れ替える - TIM Labs
- clmemo@aka: Git でリモート・リポジトリーのタグを削除する
- git - 英語コミットコメントに使えるオシャレフレーズ集 - Qiita [キータ]
- Glide
- GitHubに空ディレクトリはアップできない……? / かりんと~く 【 夢猫工房 】
- GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する - Qiita [キータ] *1
- GitHubへpull requestする際のベストプラクティス - hnwの日記
- linux - git clone: fatal: Unable to find remote helper for 'https' - Stack Overflow *2
- 【さくら スタンダード プラン】RE: fatal: Unable to find remote helper for 'http' を解決【git】 - ぐぐったら出てきた。 *3
- bash_completionで「-bash: __git_ps1: command not found」となった時の対処法 - くりにっき
- MacのターミナルでGitのブランチ名を表示する - アインシュタインの電話番号
- git-new-workdir が便利 - #生存戦略 、それは - subtech
- 最低限おさえておきたいEGitの使い方について - メイクミラクル 〜大逆転〜 *4
- Removing untracked files from your Git working copy - Stack Overflow
- gitでコンフリクトの解決結果を再利用する - TIM Labs
- 横着で神経質な私とあなたに贈るgit add -p - Qiita [キータ]
- Jenkins + Gitで任意のブランチをビルドする方法 - Devlog
- merge - Git pull certain branch from github - Stack Overflow
- transitive.info - git pull 使い方
- Github Pages について整理しておきます - そんなこと覚えてない
- gitのoriginのurlを変更する。 - 僕の今さら日記
- gitのHEADがブランチから外れてしまう現象とその直し方 - 西尾泰和のはてなダイアリー
- git push の反対は git pull ではない - Qiita [キータ]
- transitive.info - Git 使い方 見出し一覧