【Git】Fast-forward

  • このエントリーをはてなブックマークに追加

「git pull」をしたときに、「Fast-forward」表示が出た。
「git pull」はマージの一種である。
pull = fetch + merge
データを持ってくるのがfetch、データを送るのがpushである。
fetchはリモートリポから情報取得だけを行う。
このリモートリポジから取得した情報をローカルリポに反映させるのはmergeである。

Fast-forwardが次のような理解でいいと思う。

「Fast-forward」はマージが”早送り”で行われたことを示す。
リモートリポのmainブランチの先端がコミット地点A1→A2になる。
次に、
ローカルリポのmainブランチの先端=リモートリポのmainブランチコミット地点A1
から「git pull」すると、
ローカルリポのmainブランチの先端=リモートリポのmainブランチコミット地点A2になる。
このとき「Fast-forward」表示が出る。

履歴が一直線に進むため、”Fast-forward”と呼ばれている。




〇〇〇@B-7-PC MINGW64 ~/git-practice (main)
$ git pull origin main
From github.com:△△△/git-practice
 * branch            main       -> FETCH_HEAD
Updating 8b30521..2316fc2
Fast-forward
 README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

$ git log
commit 2316fc21dc0dfafe813770788a3599d19a9cb28f (HEAD -> main, origin/main, origin/HEAD)
Author: △△△ <136049925+△△△@users.noreply.github.com>
Date:   Thu Jun 29 11:18:02 2023 +0900

    Update README.md

    change from github

git pullしたときにFast-forwardが出る場合は、git logでは「Fast-forward」とは出ないんだな。
Fast-forwardではないケースは「Automatic merge」or 「Coflict」になる。
各コミットが異なる箇所を変更している場合、自動でMergeしてくれる(Automatic merge)
Automatic mergeは「merge branch」で表示される。
各コミットが同じ箇所を変更している場合、Merge conflictを起こす(自分で対処する必要がある)

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*