MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

バージョン管理初心者のためのGit入門


Gitが、おもしろいほどわかる基本の使い方33 改訂新版〈バージョン管理、GUI、Sourcetree、Bitbucket〉

目次

はじめに

個人的なGitの使い方メモです。

 

その他のGit関連のツールに関しては、下記を参照ください。

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

JetBrains IDEによるGitの使い方は、

下記を参照ください。

myenigma.hatenablog.com

 

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

参考:

toshihirock.blogspot.com

 

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にマージするときに、

コミット履歴をきれいにする時に使う。

www.granfairs.com

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のリポジトリもクローンしたい場合は、

下記のコマンドでアップデートできます。

stackoverflow.com

 

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

  1. このファイルをホームにドットファイルとしてコピーする 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"'

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com


Gitが、おもしろいほどわかる基本の使い方33 改訂新版〈バージョン管理、GUI、Sourcetree、Bitbucket〉

coliss.com

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com