[英]Why does “git pull origin master” command removes the most recent merge commit?
[英]Why git pull origin master creates a merge commit
我的遠程同事總是在沒有實際原因的情況下創建虛擬合並提交 - 它們包含非常相同的代碼,自他上次拉起以來已經推送到存儲庫。 我想防止這種情況發生,但無法真正弄清楚他是如何做到的 - 他說他唯一做的就是git pull origin master
並且出於某種原因它將遠程代碼作為他自己的。 任何想法怎么會發生? 我想我會去tmate
給他端來檢查自己。
git pull
的默認行為是合並。
將遠程存儲庫中的更改合並到當前分支中。 在默認模式下, git pull 是 git fetch 后跟 git merge FETCH_HEAD 的簡寫。
https://git-scm.com/docs/git-pull
要更改它,您可以添加--rebase
( git pull --rebase
),或者簡單地將 git 配置為始終變基,如果這是您想要的默認行為。
將以下內容添加到您的.gitconfig
。
[pull]
rebase = true
或者從命令行配置它:
git config --global pull.rebase true
本地分支有一個或多個未推送並合並到遠程存儲庫中的分支的提交,同時遠程存儲庫中的分支有一個或多個未獲取並合並到遠程存儲庫中的提交當地分支機構。 2個分支是分叉的。
為了防止創建合並提交,將--rebase
或-r
添加到git pull
,例如git pull origin -r master
。 這樣,遠程存儲庫中的分支將首先被獲取,然后本地分支上的新提交被重新基於獲取的頭部。 本地分支將始終與遠程存儲庫中的分支保持同步或領先於該分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.