Git:如何构建存储库以便我可以在不收到 "already up to date" 消息的情况下变基
Git: How to structure repositories so I can rebase without getting "already up to date" messages
几年前,我从事开源 github 项目 - 我克隆了该项目,当我有东西要提交时,我提出了拉取请求。当我想从主项目中获取最新的东西时,我做了一个 merge/rebase - 至少我记得是这样。
现在我有了自己的网络服务器,我想在上面重新创建完全相同的工作流程,但它似乎不起作用 - 这就是我的意思:
- 开发人员 A 和 B 正在进行一些更改。
- 开发人员 B 提交他的更改,创建拉取请求。
- 维护者接受拉取请求。
- 开发人员 A 继续工作
- Dev A 完成他的更改,提交
- Dev A 变基以从 master 获取 B 的更改
- 开发人员 A 创建拉取请求。
第 6 步 - 变基 - 对我不起作用。我不断收到 "already up to date" 条消息,但我不明白为什么。
我希望获得有关如何设置存储库、如何拉取更改以及如何变基的分步指南。 None 的在线指南或其他 Whosebug 问题已经能够解释我做错了什么。
我使用以下 git 命令进行上述设置,如果您发现错误,请指出:
- 我使用
git init nighly
创建存储库 - 这成为集成存储库
- 我将现有代码复制到集成代表中,执行
git add --all
并提交
- 我克隆到 repo dev-a 和 dev-b
- 拉取更改时,我转到集成仓库并执行“
git pull dev-a master
”
- 之后我进入 repo dev-b 并执行
git remote update
和 git rebase master
- 但它说 "Current branch master is up to date.".
如果您在本地存储库上工作,您可以 git pull
或 git rebase
对远程存储库进行变基/拉取/合并您的远程存储库更改到您的工作树中。
但是,您不能使用 git rebase
命令将更改推送到远程。为了将本地存储库中的更改推送到远程存储库,您必须使用命令 git push {remote}
或 git push {ssh / https url}
但是,如果您登录到另一台机器并在本地使用这些其他 'remote' 存储库之一,您应该能够使用 git rebase
或 git pull
命令就像您在第一台机器上一样。
考虑在发出 rebase 命令之前更新您的遥控器。 git 报告 'already up to date' 因为它不知道遥控器上的更新更改。使用以下命令:
git remote update
在尝试使用 git rebase
之前
作为替代方案,您可以 git pull --rebase
而不是 git rebase
,这应该可以处理缺少的更新遥控器的步骤。
我相信我成功了。
我这样设置存储库:
git init integration
(集成存储库)
cp -r existing-source-dir/* integration/
(删除了 existing-source-dir 中旧的 .git 目录,因此 git 不会混淆)
cd integration
git add --all
git commit
cd..
git clone nightly dev-a
git clone nightly dev-b
每当开发流中的更改准备就绪时,我都会执行以下操作:
cd dev-a
git commit
(当然,我确保添加了所有相关更改,并首先丢弃其他所有内容)
git remote update && git rebase origin master
cd ../integration
git pull dev-a master
这似乎有效。
如果我在变基时没有指定 "origin" 远程,变基将失败并显示 "Current branch master is up to date"。
几年前,我从事开源 github 项目 - 我克隆了该项目,当我有东西要提交时,我提出了拉取请求。当我想从主项目中获取最新的东西时,我做了一个 merge/rebase - 至少我记得是这样。
现在我有了自己的网络服务器,我想在上面重新创建完全相同的工作流程,但它似乎不起作用 - 这就是我的意思:
- 开发人员 A 和 B 正在进行一些更改。
- 开发人员 B 提交他的更改,创建拉取请求。
- 维护者接受拉取请求。
- 开发人员 A 继续工作
- Dev A 完成他的更改,提交
- Dev A 变基以从 master 获取 B 的更改
- 开发人员 A 创建拉取请求。
第 6 步 - 变基 - 对我不起作用。我不断收到 "already up to date" 条消息,但我不明白为什么。
我希望获得有关如何设置存储库、如何拉取更改以及如何变基的分步指南。 None 的在线指南或其他 Whosebug 问题已经能够解释我做错了什么。
我使用以下 git 命令进行上述设置,如果您发现错误,请指出:
- 我使用
git init nighly
创建存储库 - 这成为集成存储库 - 我将现有代码复制到集成代表中,执行
git add --all
并提交 - 我克隆到 repo dev-a 和 dev-b
- 拉取更改时,我转到集成仓库并执行“
git pull dev-a master
” - 之后我进入 repo dev-b 并执行
git remote update
和git rebase master
- 但它说 "Current branch master is up to date.".
如果您在本地存储库上工作,您可以 git pull
或 git rebase
对远程存储库进行变基/拉取/合并您的远程存储库更改到您的工作树中。
但是,您不能使用 git rebase
命令将更改推送到远程。为了将本地存储库中的更改推送到远程存储库,您必须使用命令 git push {remote}
或 git push {ssh / https url}
但是,如果您登录到另一台机器并在本地使用这些其他 'remote' 存储库之一,您应该能够使用 git rebase
或 git pull
命令就像您在第一台机器上一样。
考虑在发出 rebase 命令之前更新您的遥控器。 git 报告 'already up to date' 因为它不知道遥控器上的更新更改。使用以下命令:
git remote update
在尝试使用 git rebase
作为替代方案,您可以 git pull --rebase
而不是 git rebase
,这应该可以处理缺少的更新遥控器的步骤。
我相信我成功了。
我这样设置存储库:
git init integration
(集成存储库)cp -r existing-source-dir/* integration/
(删除了 existing-source-dir 中旧的 .git 目录,因此 git 不会混淆)cd integration
git add --all
git commit
cd..
git clone nightly dev-a
git clone nightly dev-b
每当开发流中的更改准备就绪时,我都会执行以下操作:
cd dev-a
git commit
(当然,我确保添加了所有相关更改,并首先丢弃其他所有内容)git remote update && git rebase origin master
cd ../integration
git pull dev-a master
这似乎有效。
如果我在变基时没有指定 "origin" 远程,变基将失败并显示 "Current branch master is up to date"。