remoteと差があるか確認する
- git remote show origin でチェック可能
- 実行結果の最終行「master pushes to master (xxx)」のxxxの部分が
local out of date |
localが旧い(fetch/pullすべき) |
fast-forwardable |
localが新しい(pushすべき) |
git remote show origin
## log
* remote origin
Fetch URL: https://foo@${url}/foo/testing.git
Push URL: https://foo@${url}/foo/testing.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
remote のリポジトリのデータを取得する (作業領域に影響なし)
- git fetch で実行可能
- fetchしてきたデータは.git/FETCH_HEADに保存される。なお、このデータはmerge後にも残る
git fetch
# log
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From https://xxx.com/foo/testing
96f668a..17c7a88 master -> origin/master
- 差分を表示
- --name-statusオプションをつけると名前と状態のみ svn status に似た表示
- difftool を使うと vim での左右の見開き
git diff FETCH_HEAD
git diff --name-status FETCH_HEAD
git difftool FETCH_HEAD
# fetch 直後の場合、FETCH_HEAD は origin/master でも同じ
git merge FETCH_HEAD
# Log:問題ない場合
Updating 0ab3cb6..96f668a
Fast-forward
index.html | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
# Log:confrictしてる場合
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
remote のリポジトリデータを取り込み、マージする
- git pull を使うと 上記のgit fetch / merge の流れを一度で行える
git pull
## log
Updating 3f4bbc6..0ab3cb6
Fast-forward
index2.html | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 index2.html