你能帮我吗?我对git pull有一些问题。当我尝试执行git pull时,我每次都看到新的提交:
Merge branch 'prod' of https://github.com/frontend into prod
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
在这里输入图像描述输入图片描述
我通过GitHub PR合并了dev分支到prod .这个问题只在我的计算机上,git pull在其他计算机上正常工作(没有与相同分支冲突)。提交合并更改会导致额外的提交。
为什么会发生这种情况?如何确保没有冲突的更改池和不出现额外的提交?
我已经尝试更新所有分支到相同的状态。但是,一旦团队中的某个人将他们的更改推入分支,或者合并PR,那么我就不能拉出更改,我就会产生冲突,尽管分支没有更改。为了避免这个问题,我必须每次都删除本地分支,然后从原点重新拉。
例如,我先删除本地分支git branch -D example-branch
,然后删除git fetch
,然后从origin/example-branch
中拉出分支。我已经同步了一个本地example-branch
分支。我从exapmle-branch
创建一个新的分支example-new
,进行更改并提交。我创建一个PR从exapmle-new
到exapmle-branch
并合并它。我去本地分支exapmle-branch
,做一个git pull
,得到一个冲突的消息。我打开一个带有冲突的提交,它只是我提交的内容。没有冲突,提交只是重复的,需要将其推回。这种情况每次都会发生。如果我在另一台计算机上重复这个过程,那么这个问题就不存在了。
@quetzalcoatl, @AD7six,非常感谢您的详细解答!这是工作!=)
它帮助我:
git config pull.ff true
git config --global pull.ff true
在重新阅读您的评论几次后,我认为您希望--rebase
在拉期间默认发生,而目前它运行的是--merge
。
见ad76的评论。他提到git config
。这是一个配置git客户端选项的命令。
使用git config
,您可以设置许多get命令的默认行为,包括推和拉。在决定了git pull
是合并还是重基之后,请检查文档,并使用git config
将此模式设置为默认模式。
参见:如何改变全局git设置,在pull过程中进行git合并
或者更多的方法:如何使git pull默认使用rebase对我所有的存储库?
注意他们在那里问什么。当然,git文档中也有详细的描述。
它应该是类似于:
git config pull.rebase true
git config --global pull.rebase true
配置选项分层存储在每个工作副本(本地克隆的repo)和用户配置文件gitconfig文件中。由于您似乎习惯于看到一种特定的行为,因此您可能希望将该模式设置为该机器上用户配置文件的全局默认模式。否则,您将不得不为每个新的克隆repo重新设置它。
By the way:
如果您运行git config pull.rebase
或git config --global pull.rebase
而没有如果要设置一个新值,它将读出当前设置并打印出来。您可能希望在您的机器和其他机器上运行此命令,以查看设置有何不同。