Gitの作業の流れが一目で分かる図

Git、この後どうしたら良いんですか?

いったん、この図の流れに従ってやってみてください。(チームのみんなへ)

編集する

プログラムに編集を加えたら、全ファイルをgit管理下に入れて、コミットして、pushします。

git add .
git commit -a
git push origin master

pushに失敗した場合

無事にpushできれば、それで作業終了ですが、運悪く他の人の更新が先に入っている場合があります。その時はこのようなメッセージが出ます。

 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git://hoge.com/fuga.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

ここでメッセージに注目!

Merge the remote changes (e.g. ‘git pull’) before pushing again.

対処法

「プッシュする前にpullしろ」と言われています。この場合は大人しくpullします。

git pull origin master

コンフリクトした場合

基本的にはpullによって自動マージがかかり、改めてpushし直せば作業終了です。しかし、時には運悪くコンフリクトしてしまう場合もあります。
その時はこんなようなメッセージが出ます。

From git://hoge.com/fuga
 * branch            master     -> FETCH_HEAD
Removing .DS_Store
Auto-merging AndroidManifest.xml
CONFLICT (content): Merge conflict in AndroidManifest.xml
Removing res/layout/account.xml
Removing res/layout/login.xml
Auto-merging res/values/strings.xml
CONFLICT (content): Merge conflict in res/values/strings.xml
Auto-merging src/in/my365/ConfigActivity.java
Automatic merge failed; fix conflicts and then commit the result.

ここでメッセージに注目!

CONFLICT (content): Merge conflict in AndroidManifest.xml

対処法

自動マージできずにコンフリクトしたと出ていて、最後には丁寧に「コンフリクトを直してコミットしなおせ」と書かれています。

fix conflicts and then commit the result.

この場合は、コンフリクトしたファイルを1つずつ開いて、コンフリクトしている部分を修正していきます。修正が終わったら、再びaddしてcommitしてpushです。

git add .
git commit -a
git push origin master

まとめてみると

たまにGitで迷子になった人から「この後どうしたらいいんですか?」と聞かれるので書いてみましたが、まとめてみると意外に単純でした。(そもそもこんな図を見なくても、実はちゃんと出力されるメッセージを読めば、やるべきことは分かります。全ては英語に対する苦手意識を捨てることからです。)
それでは良いGit生活を!

コメント

  1. […] Gitの作業の流れが一目で分かる図 – 三度の飯とエレクトロン […]

タイトルとURLをコピーしました