2

我最近在 git 中执行了以下操作:

  1. git checkout a
  2. git pull(这下载了一些添加到另一个分支的新代码b
  3. git merge master
  4. git checkout master
  5. 此时我希望master包含在 2) 中下载的更改,但它们不存在。我又跑了git pull一次,拿走了改变的东西。

是否git pull仅将更改获取并合并到当前分支(我已签出)?如果是,是否有 git 命令将下载的更改合并到每个/特定的分支中?

4

3 回答 3

2

git pull 是否仅将更改提取并合并到当前分支(我已签出)?

是的。

如果是,是否有 git 命令将下载的更改合并到每个/特定的分支中?

不,没有。

您可以做的一件事(或多或少实用,取决于您的特定设置)是为稳定的别名制作自制别名,但功能分支仍需要在需要时单独更新。

dev假设和master分支稳定的示例

git config --global alias.upd8 '!git stash && git checkout master && git pull && git checkout dev && git pull'

那么当您需要更新稳定的本地分支时,只需

git upd8

(由于命令与 链接&&,bash 只会在没有返回错误代码的情况下继续,所以它不会更进一步,例如当前情况不是“可存储的”或者如果其中一个合并有问题。)

于 2019-10-22T14:40:39.213 回答
1

Does git pull fetch and merge the changes only into the current branch (which I'm checked out into)?

- 是的。可以将 --all 选项与git pull命令一起使用,但这只会更新有关所有分支的信息。它不会在所有分支上提取代码。

If yes, is there a git command to merge the downloaded changed into every/specific branches?

-- 不可以。要将代码拉入特定分支,您需要显式检出该分支,然后使用git pull命令。

于 2019-10-22T21:49:33.240 回答
1

纯的git

Git 的文档对此非常清楚。

将来自远程存储库的更改合并到当前分支中。在其默认模式下,git pull 是 git fetch 后跟 git merge FETCH_HEAD 的简写。

更准确地说, git pull 使用给定的参数运行 git fetch 并调用 git merge 以将检索到的分支头合并到当前分支中。使用 --rebase,它运行 git rebase 而不是 git merge。

您可以使用 --all 获取所有遥控器。

- 全部

获取所有遥控器。

请注意,它是“获取”,而不是“拉”、“合并”或“集成”。


集线器hub-sync

您可以尝试使用 GitHub 的hub。它的hub-sync命令同步本地分支。

从上游获取 git 对象并更新本地分支。概要

集线器同步 [--color]

  • 如果本地分支过时,则快进;
  • 如果本地分支包含未推送的工作,请发出警告;
  • 如果分支似乎已合并并且其上游分支已被删除,请将其删除。

如果本地分支没有任何上游配置,但在远程有同名分支,则将其视为其上游分支。

于 2019-10-23T06:25:49.743 回答