Gitが、おもしろいほどわかる基本の使い方33 改訂新版〈バージョン管理、GUI、Sourcetree、Bitbucket〉
目次
- 目次
- はじめに
- gitコマンド
- git clone
- git init
- git status
- git commit
- git log
- git diff
- git branch
- git remote
- git checkout
- git reset
- git revert
- git clean
- git stash
- git merge
- git rebase
- git push
- git submodule
- gitでのソフト開発メモ
- gitでタブ補完を使うようにする
- git初期設定
- 参考資料
- MyEnigma Supporters
はじめに
個人的なGitの使い方メモです。
その他のGit関連のツールに関しては、下記を参照ください。
JetBrains IDEによるGitの使い方は、
下記を参照ください。
gitコマンド
各種gitコマンドをひとつずつ説明します。
git clone
リモートリポジトリを、ローカルに持ってきます。
git clone --recursive URL
URL先のリポジトリをクローンする。(サブモジュールも含めて)
git clone --depth 1 URL
最新のコードのみを落としてくる。
(コードを見たいだけの時用)
git init
ローカルにgitリポジトリを初期化するのに使います。
git init --bare --share
共有用リモートリポジトリを作成する。
git status
今のリポジトリの状況を調べる
git commit
git commit -a
修正したファイルを自動認識してコミットする
git commit --amend "new message"
一つ前のコミットメッセージを修正して、コミット
(一つ前と、今のコミットが一つのコミットになる)
JetBrainsのIDEの場合は、
Gitの画面で、Amend commitをチェックするだけです。
しかし、コミットメッセージだけの変更は不可能なようです。
git commit -v
コミットする時に、変更ファイルだけでなく、diffの結果も表示する。
git commit -m "bug fix"
コミット時のコメントを指定してコミット
git log
過去のコミットログを確認 (qで終了)
git log -- pretty=short
コミットログの最初の一行目だけを表示
git log file_name
特定のファイルのログのみを表示
git log -p
ログの差分も一緒に確認
git log --graph
ブランチの状態を可視化するコマンド
git diff
変更差分を確認する
git diff <ブランチ名> <ブランチ名>
2つのブランチを比較
git branch
git branch <ブランチ名>
新しいブランチを作る
git branch -a
ブランチの一覧を表示(*は現在のブランチ) -aでリモートリポジトリも含む
git branch -m <古いブランチ名> <新しいブランチ名>
ブランチ名の変更
git branch -d feature
featureブランチを削除する
git branch <ブランチ名> origin/<ブランチ名>
リモートのブランチをローカルに持ってくる
git remote
git remote add hoge https://hogehoge.git
originという名前でURLのリポジトリを登録
git remote -v
現在のリモートリポジトリのリストを表示
git checkout
git checkout <ブランチ名>
ブランチの変更
git checkout -b <新しいブランチ名>
hogeという新しいブランチをつくり、ブランチを変更
git checkout -
一つ前のブランチに移動
git checkout -b <ブランチ名> origin/<ブランチ名>
リモートのブランチをローカルに持ってきて、ブランチの変更
git checkout HEAD <ファイル名>
あるファイルを直前のコミットに戻す。
ちなみに、リポジトリ全体を戻す場合は下記です。
$ git reset --hard HEAD
参考:
git reset
あるコミット時点までコードを戻すコマンドです。
git reset HEAD
addしたものを取り消す
git reset --hard
hash値 リポジトリをhash値の状態まで戻すor進める.
hardだと、変更は無くなった状態になり、
softだと、変更はchangelist に戻った状態になります。
hash値はgit log や git reflogで見れる。
特に、直前のコミットまでリポジトリを戻したい場合は、
$ git reset --hard HEAD
です。
git revert
git revert HEAD
直前のコミットをなかったことにするコミットを作る(履歴が残る)
git clean
git clean -df
すべてのgitで管理されていないファイルとディレクトリを削除する。
(gitignore対象のファイルは残る)
git clean -xdf
すべてのgitで管理されていないファイルとディレクトリを削除する。
git stash
gitでは基本的に、変更を残したまま新しいブランチに移動することはできません。
変更を削除するか、コミットする必要があります。
しかし、どうしてもコミットしたくない場合は、
stashを使って、一時的に変更を退避することができます。
git merge
基本的にブランチを手元でmergeする時に使います。
git merge <ブランチ名>
<ブランチ名>のブランチを、
現在のブランチにマージする。
git merge --no-ff hoge
今いるブランチとhogeブランチをメッセージ付きでマージする
git merge --squash
あるブランチを今のブランチにマージするが、
マージする際に、あるブランチのコミットをまとめて、
一つのコミットとして、マージしてくれる。
PRを作る時や、Masterにマージするときに、
コミット履歴をきれいにする時に使う。
git rebase
rebaseはmergeと同じように、
別のブランチを、別のブランチに統合できますが、
あるブランチのコミットを、別のブランチに新しくコミットすることで、
コミットのログを直線的にして、読みやすくマージできます。
リベースはfeatureブランチで作業をしていて、masterブランチが更新されたときにとても便利です。
ブランチの変更をすべて取得できるので、将来的にマージの競合を防ぐことができます
git rebase -i HEAD~2
HEADから2コミット分の履歴が表示され、
その中のpickをfixupと変更すると、
そのコミットを無かったことにできる。
git push
git push -u origin master
masterブランチの内容をoriginリポジトリに送信する。
-uを付けることにより、
masterブランチの元がoriginブランチであることが設定され、
pullした時に自動的にoriginから引っ張ってくるようになる
git submodule
gitのリポジトリの中で、別のgitリポジトリを管理する方法です。
git submodule add URL
URLのgitリポジトリを、submoduleとして登録
git submodule update --init --recursive
すでにクローンしたリポジトリで、
submoduleのリポジトリもクローンしたい場合は、
下記のコマンドでアップデートできます。
gitでのソフト開発メモ
トピックブランチ
gitを使ったソフト開発では、一つの機能毎にブランチを作成し、
完成したらmasterにマージするようにする
これにより、誰でもいつでも安全にmasterブランチを引っ張ってこれる。
masterはいつでも他人に見せられるようになっているようにする
gitでタブ補完を使うようにする
下記の方法を実行するとgitのコマンドがbash上でタブ補完されるようになります
1.下記のコマンドでgit-completion.bachというファイルを探す sudo find / -name git-completion.bash
自分のmacの場合はここにありました。 /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
- このファイルをホームにドットファイルとしてコピーする macの場合 cp /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ~/.git-completion.bash
3 bashの設定ファイルにsource ~/.git-completion.bashを追加する macの場合 /.bash_profileに追加
4 git confまで入力して、tabキーでconfigが補完されればOK
git初期設定
名前とEmailの設定
$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "hoge@gmail.com"
コマンドをカラーで読みやすくするための設定
$ git config --global color.ui auto
コミットログのエディタをvimにする
$ git config --global core.editor 'vim -c "set fenc=utf-8"'
参考資料
Gitが、おもしろいほどわかる基本の使い方33 改訂新版〈バージョン管理、GUI、Sourcetree、Bitbucket〉
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。