はじめに
こんにちは,来海くるみ(@walnut-pro)です.
仕事でソースコード管理に使うGitのコマンドをまとめました.
ブランチの確認 - git branch
全てのブランチを確認するときには,こちら
git branch
# develop
# feature/modify-component
# * master
現在のブランチだけを確認したいときには,こちら
git rev-parse --abbrev-ref HEAD
ブランチが多くて最後まで表示されないときには,Enterかqキーを押す
Enterを押すと,「:」より次の行が表示され,qキーを押すとブランチの表示が終了する
git branch
# develop
# feature/modify-component
# feature/modify-A
# feature/modify-B
# feature/modify-C
# feature/modify-D
# feature/modify-E
# feature/modify-F
# feature/modify-G
# feature/modify-H
# :
ブランチの作成&移動 - git checkout
ブランチを移動するときには,こちら
git checkout feature/modify-component
新規ブランチを作成&移動するときには,こちら
git checkout -b feature/modify-J
ブランチを作成するだけのときには,こちら
git branch feature/modify-J
ブランチを最新の状態にする - git pull
既にリモートリポジトリに存在するブランチをもとに,ローカルのブランチを最新の状態にするときには,こちら
git pull origin feature/modify-J
リポジトリに上げる - git add/commit/push
ブランチ(feature/modify-J)に移動した後に,作業内容をリポジトリに上げるには,こちら
originがGithub側のリモートリポジトリのブランチを指している
git add .
git commit -m "Jコンポーネントの修正"
git push origin feature/modify-J
addとcommitを一緒にやってしまいたいときには,こちら
git commit -am "Jコンポーネントの修正"
コンフリクトが起きたときの対応
リモートリポジトリのブランチの最新の状態と競合している箇所があるため,まずはpullをする
git pull origin feature/modify-J
続いてステータスの確認
git status
On branch feature/modify-J
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: test_conflict.js
no changes added to commit (use "git add" and/or "git commit -a")
コンフリクトを起こしているファイルの中身(test_conflict.js)を見る
HEAD から feature/modify-Jの間が実際にコンフリクトしている部分となる
<<<<<<< HEAD
// 今チェックアウトしているブランチ(feature/modify-J)での変更内容
・・・
=======
// 元のブランチでの変更内容
・・・
>>>>>>> feature/modify-J
コンフリクトしているソースコードを修正する
<<<<<<< HEADから=======の間か,=======から>>>>>>> feature/modify-Jの間のどちらかを残す
上記の手順でコンフリクトが解消できない場合
リモートリポジトリのブランチの最新の状態に合わせてリセットする(ローカルでの変更分が消えてしまうので,注意)
git reset --hard origin/feature/modify-J
変更を残したまま,別のブランチに移動する - git stash
変更を残したまま,作業ブランチを移動したいとき,そのまま移動するとこのようなエラーが出る
# Please move or remove them before you can switch branches.
# Aborting
変更内容を一時退避させたい場合には,こちら
git stash save "modify-Jの変更"
git checkout feature/modify-A
stashできたか確認するときには,こちら
git stash list
# stash@{0}: On feature/modify-J: "modify-Jの変更"
作業ブランチに戻ってstashを復元したいときには,こちら
git stash pop stash@{0}
stashを削除したいときには,こちら
git stash drop stash@{0}
stashせずに変更内容を消去して,ブランチの移動を行いたいときには,こちら
git checkout .
git checkout feature/modify-A
リモートリポジトリの特定のコミットまで状態を戻す -git revert
既存のコミットを取り消したいときには,こちら
<commit>の部分にコミットidを指定します.
git revert <commit>
revertコマンドを使うとcommitまで行われるが,コミットしたくない場合には,こちら
git revert <commit> --no-commit
gitのブランチを操作する - git merge/rebase
こちらに詳しく図解されています.
終わりに
他にも記事を書いていますので,よかったらご覧ください!