gpt4 book ai didi

git - 分支正在 git push 上 merge 到自己中

转载 作者:太空狗 更新时间:2023-10-29 14:08:13 24 4
gpt4 key购买 nike

我在 GitHub 上设置了一个 repo,有一个 Dev 分支,我使用以下方法将其克隆到我的本地机器:

git clone https://github....

然后我切换到我的 Dev 分支:

git checkout -b Dev

然后我 pull 以确保所有内容都是最新的

git pull origin Dev

我现在在我的 Dev 分支中,编写一些代码并使用以下命令添加文件:

git add filename

然后我提交使用:

git commit -m "message"

然后我使用:

git push origin Dev

这一切都很好。然后第二个用户出现并输入一些代码。同时,我正在处理一个单独的文件,但我们正在处理同一个分支。我像以前一样添加和提交。但是,当我尝试推送时,我收到以下信息:

To https://github.com/ex/ex.git ! [rejected]
Dev -> Dev (fetch first) error: failed to push some refs to 'https://github.com/ex/ex.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first merge the remote changes (e.g., hint: 'git pull') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我照它说的去做:

git pull origin Dev

然后我可以像以前一样推送,一切似乎都很好。然而,当我检查提交历史时回到 GitHub,我看到了这个:

 Merge branch 'Dev' of https://github.com/ex/ex into Dev

在我刚刚添加的提交中。为什么会发生这种 merge ?我怎样才能阻止这种情况发生?

最佳答案

需要 merge ,因为您和您的第二个用户出现分歧;你们每个人都在共同基础上做了一些事情。恢复同步需要结合这两种发展路径。

“merge 提交”没有任何危害;这真的不值得担心。但是,如果您想避免它,通常是为了保持更清晰的历史记录,您可以执行:

git pull --rebase ...

这会将您的新提交重新定位到从存储库中提取的任何内容。历史将呈现线性。

这是一个例子。具有两个分支的存储库:

$ git log --oneline --graph --all    
* 678ea83 c
| * 2c1e48f b
|/
* 5836f6f a

merge 结果:

$ git merge dev
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 b
$ git log --oneline --graph --all
* 6d50134 Merge branch 'dev'
|\
| * 2c1e48f b
* | 678ea83 c
|/
* 5836f6f a

或者, rebase 的结果:

$ git rebase dev
First, rewinding head to replay your work on top of it...
Applying: c
$ git log --oneline --graph --all
* 89a3771 c
* 2c1e48f b
* 5836f6f a

关于git - 分支正在 git push 上 merge 到自己中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18464149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com