初期設定
インストールされた Git の確認
git version
ユーザ名の設定 (Github で登録したユーザ名)
git config --global user.name "hogehoge"
メールアドレスの設定 (Github で登録したメールアドレス)
git config --global user.email test@example.com
Git でコミットやタグのメッセージを編集するときにデフォルトで使用されるエディタを設定
git config --global core.editor "atom --wait"
git config --global core.editor "code --wait"
設定内容の確認
git config --list
ローカルリポジトリに反映させるまで
まずは Git で管理していきたいディレクトリに移動します。
その後、そのディレクトリを丸ごとローカルリポジトリに追加するために git init と打ちます。
git init
これで最初の準備の一つであるローカルリポジトリが作成できました。
さて、このあとは書いたコード等のファイルをローカルリポジトリに追加していきます。
普段、コードを書いたりファイルを作成する場所のことをGitではワークツリーといいます。
このワークツリーの状況をローカルリポジトリに反映させる前に、
一度「このファイルは反映させる準備OK」と明らかにするためステージにファイルを追加していきます。
このときのコマンドが git add です。
git add ファイル名
作業中のフォルダ内のファイルをすべて追加したければ git add . と打ちます。
git add .
これでローカルリポジトリに反映させる準備が整いました。
その他に反映させたいファイルが出来上がったら、追加で更にファイルを git add でステージに追加します。
そしていよいよ準備が整ったら、git commit でローカルリポジトリに反映させることになります。
さらにオプションで -m "こめんと" という形でコメント付きのコミットを実行できます。
変更内容が自分からみても、他の人から見ても分かるようになるので必ずつけるようにしましょう。
git commit -m "コメントを入力"
これでローカルリポジトリへ変更を反映できました。
ちなみにワークツリー内の変更を一旦、コミット前に確認することもできます。
git status
変更差分をみたいとき
git diff コマンドを使います。
git diff
or
git diff ファイル名
git diff --staged
これまでの変更履歴をみたいとき
git log
git log --oneline
git log -p test.txt
ファイルの削除を記録
git rm test.txt
git rm -r testdir
git rm --chached test.txt
ちなみにこのとき削除したファイルを add はできないので、既にステージングが完了している状態になっています。
ファイルの移動を記録
git mv testOld.txt testNew.txt
Github 内の既存プロジェクトを作業するとき
あなたが開発チームに参入したときなど、既にGithubに上がっているコードから作業をする時があるかもしれません。
そんなときは、まずはリモートリポジトリ(今回はGithub上)にあるファイル達を一度ローカルリポジトリとワークツリーにコピーしてきてあげます。
git clone リポジトリ名
リポジトリ名は、Githubでコピーしたいリポジトリを開いたらClone用のURLをコピーできる場所から入手します。
上記は私のGithub内に作ったテスト用のリモートリポジトリですが、これをローカルリポジトリおよびワークツリーにコピーするときはこんな感じです。
git clone https://github.com/tmasuyama1114/testgit.git
リモートリポジトリ(Github)でコードを管理
リモートリポジトリ(Github)を新規追加
git remote add origin リポジトリURL で追加できます
git remote add origin https://github.com/tmasuyama1114/testgit.git
なお、cloneしたリポジトリで作業しているときは既にorigin(ショートカット)が存在してしまっているので以下のコマンドで一度削除してあげます。
git remote rm origin
ここでいうoriginは、登録するリモートリポジトリURLの短縮名というイメージです。
リモート
git push リモート名 ブランチ名 でプッシュします
git push origin master
ちなみに最初に以下のようにオプションをつけておくと、次回以降pushするときに「origin master」とつけなくて済みます。
git push -u origin master
Gitで管理させないファイルを登録
パスワードが書いてあるファイルだったり、ただのキャッシュファイルだったりするようなものはGitでバージョン管理する必要がありませんね。
そういったファイルは .gitignore に書きます。
以下は、ignoreFile.txt というファイルをバージョン管理したくないときの .gitignore ファイルです。
# 以下のファイルはGit管理対象外
ignoreFile.txt
変更を戻す時
ファイルへの変更を取り消す
git checkout --test.txt
ディレクトリ全体の変更を取り消す
git checkout --testdir
全変更を取り消す
git checkout --
ステージした変更を取り消す (git add したものを取り下げる)
ステージしたファイルを取り消す
git reset HEAD test.txt
ステージしたディレクトリを取り消す
git reset HEAD testdir
ステージした全変更を取り消す
git reset HEAD
コミットのやり直し
pushする前ならばコミットをやり直せる(修正できる)
直前のコミットのやり直し(今のステージの内容で)
git commit --amend
リモートリポジトリとのやり取り
リモートリポジトリの設定
リモートを表示
git remote
git remote -v
リモートリポジトリを複数登録
git remote add リモート名 リモートURL
例えば origin の他に other というリモートリポジトリを登録した場合は
以下のようなコマンドでpushなどの操作を行うことになります。
git push other https://xxxxxxxxxx
リモートから取得(フェッチ)
フェッチはリモートから情報をコピーした後、すぐにマージしない時に使うコマンドです。
git fetch origin(リモート名)
フェッチの場合、ワークツリー(master)には保存されずブランチとして保存されるので
内容を表示したいときは git branch -a でフェッチしたものを確認し、
git checkout remotes/origin/master でブランチを切り替えます。
フェッチした内容を origin/master ブランチに merge したいときは
先に git checkout master でmasterブランチに戻り、以下のコマンドを入力します。
git merge origin/master
リモートから取得(プル)
プルはリモートから情報をコピーした後、すぐにマージする時に使います。
git pull origin master
そのため、上記のコマンドと下記のコマンドは同じ意味を持ちます。
git fetch origin master
git merge origin/master
リモートの詳細情報を表示
git remote show origin
リモートを変更する(リネーム)
git remote rename 古いリモート名 新リモート名
リモートを削除する
git remote rm リモート名
ブランチの操作
ブランチを追加
git branch ブランチ名
ブランチの一覧を表示
git branch
すべてのブランチを表示
git branch -a
既存のブランチを切り替える
git checkout 既存ブランチ名
ブランチを新規作成して切り替える
git checkout -b 新ブランチ名
変更をマージ
git merge ブランチ名
ブランチ名の変更(作業中のブランチで入力)
作業中のブランチで以下を実行します。
git branch -m 新しいブランチ名
ブランチの削除
git branch -d ブランチ名
上記を実行したとき、対象のブランチがもし master にマージされていないブランチである場合には削除できません。
それでも強制的にブランチを削除したいときは、
git branch -D ブランチ名
コンフリクトの扱い
同じファイルで、同じ行に対して異なる変更を行うとコンフリクトが発生します。
その際にはコンフリクトを解消してあげる必要があります。
解消方法
コンフリクトしたファイルには、コンフリクトが発生した箇所がわかるようになっているので
最終的な(正しい)形にファイルを修正してあげればOKです。
コンフリクトが起きているファイルの確認方法
git status
で確認すると、該当のファイルが表示されます。
そしてワークツリー内のファイルを確認するとコンフリクトについての記載があるので、あるべき姿になるように修正の上
git add と git commit をしてあげればコンフリクトを解消できます。
コンフリクトの防止するための注意点
- 複数人でファイルを同時に編集しないこと
- pull を行う際は、pull をしようとしているブランチに checkout してから pull を行うこと
- pull・merge をする前に commit or stash を行い、編集中のファイルを無くす