统一更新:使用本地文件的更新更新私有存储库(重构、重命名、更新)并从原始存储库获取定期更新

2024-03-27

我刚刚开始学习 Windows 上的 GitHub CLI 工具。认为我是新手 我有一个如下所示的用例:

在深入探讨之前,让我先总结一下:

我的用例是:克隆一个开源项目(它更新 定期),即创建它的本地副本并进行修改(包括 重命名文件和文件夹),将更改推送到我的私人存储库 但同时我需要来自开源的定期更新 项目以重命名的格式反映。我是否必须重命名文件& 项目每次发布更新时的文件夹并将其推送到我的 私人回购?

假设项目 A 是一个定期更新其文件的开源项目。项目 B 是我在 GitHub 上的私人存储库。将我的项目 C(本地存储库)链接到 Origin(项目 B)和上游(项目 A)的所有初始步骤都已通过 .git 文件夹内的 cli 和配置文件完成。

在我的电脑上,我的本地副本Project C已经使用命令获取

git克隆“https:..../project-B.git”

现在我的目的如下:

1.对我计算机上的本地副本项目 C 中的代码本身进行大量自定义,并将这些更改推送到我的私人副本:项目 B。这包括但不限于重命名项目文件夹和文件。

2.从项目 A 获取定期更新,并在私人仓库项目 B 中更新同样的内容。

简而言之,我的私人回购项目 B 应该包含我的更改以及上游端发生的常规更改:项目 A

实现这一目标的最佳方法是什么?我知道将本地副本推送到 Private Repo B 的步骤如下:

Step 1 : git status -->to check for the changes in local copy.
Step 2 : git add --all
Step 3 : git commit -m 'message reflecting the nature of change'
Step 4 : git push -u origin master
where origin is my Private repo B and master is the branch that contains all the files. 

我还知道可以使用以下方法拉取上游文件:

git pull upstream master --> to pull in the latest changes from project A onto project B.

因此我的问题是:

1.我到底应该何时使用 git pull 或 git rebase 与 find renames :在推送提交的更改之前或之后。我有限的理解是 git rebase 是在 origin 中查找重命名的文件(在我的用例中)并进行更改?

Or

2.我需要一种完全不同的方法吗?

Or

3. 针对上述问题的方法稍有改动?

EDIT:

我已经使用命令 git push -u origin master 成功推送了本地更改(项目 C-> 项目 B(git 上的私有存储库))。

只是,我需要知道如何从存储库项目 A(定期更新的开源)中提取更改并更新已重命名的当前本地副本(文件夹、文件其他所有内容)以及添加的其他新代码行。最终,我需要从项目 C(本地副本)---> 项目 B(私有存储库)推送这些更新的更改,并使我的私有存储库具有最新提交的 UpToDate。

编辑:将公共存储库 docker-jitsi-meet 作为存储库,我需要定期更新,并在我的私人存储库中进行修改和重命名。 我做了以下事情:

1.我将公共 jitsi-meet 存储库克隆到我的本地计算机上。

2.git克隆--裸github.com/jitsi/docker-jitsi-meet.git。

3.cd 到我的本地副本并 git push github.com/user/project.git (私人仓库)。

4 删除裸副本并立即克隆存储库 git clone github.com/user/project.git

5.将公共上游存储库添加为远程仓库:git remote add upper github.com/jitsi/docker-jitsi-meet.git。

6 git fetch --all 显示了我需要引入的来自上游的许多更改。

  1. I use

git 合并上游/master 并显示以下跟踪:

$ git merge upstream/master
Auto-merging CHANGELOG.md
Auto-merging docker-compose.yml
CONFLICT (content): Merge conflict in docker-compose.yml
Auto-merging focus/rootfs/defaults/jicofo.conf
CONFLICT (content): Merge conflict in focus/rootfs/defaults/jicofo.conf
CONFLICT (modify/delete): jibri/Dockerfile deleted in HEAD and modified in upstream/master.  Version upstream/master of jibri/Dockerfile left in tree.
CONFLICT (modify/delete): prosody/rootfs/etc/cont-init.d/10-config deleted in HEAD and modified in upstream/master.  Version upstream/master of prosody/rootfs/etc/cont-init.d/10-config left in tree.
Auto-merging web/rootfs/defaults/system-config.js
CONFLICT (content): Merge conflict in web/rootfs/defaults/system-config.js
Auto-merging xmpp/rootfs/defaults/conf.d/jitsi-meet.cfg.lua
CONFLICT (content): Merge conflict in xmpp/rootfs/defaults/conf.d/jitsi-meet.cfg.lua
Automatic merge failed; fix conflicts and then commit the result.
  1. I did

git $ git mergeupstream/master -X --strategy-option =“find-renames = 20”

并得到以下内容:

error: Merging is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

最简单的方法通常是在本地克隆中添加两个遥控器,然后不断合并来自辅助遥控器的更改。遥控器就像一个bookmark对于另一个存储库;当你克隆时,origin远程会自动为您创建,它指向您克隆的源。

以下命令只需执行一次:

git clone https://github.com/user/project.git localclone
cd localclone
git remote add upstream https://github.com/upstream/project.git

然后稍后“同步”你的分叉:

git fetch --all
git merge upstream/master
git push origin HEAD

这将合并自上次获取+合并以来“上游”远程/存储库的“主”分支中发生的所有更改。

请注意,如果上游的提交更改了与您的分支中相同的行,则会出现需要解决的合并冲突。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

统一更新:使用本地文件的更新更新私有存储库(重构、重命名、更新)并从原始存储库获取定期更新 的相关文章

  • GIT:查找包括子模块的文件列表(例如使用 git ls-files)

    我一直在试图弄清楚如何获取 git 存储库中所有文件的列表 包括子模块中包含的文件 现在 git ls files将提供顶级子模块目录 但不提供子模块中包含的文件 经过进一步调查 我发现使用git submodule 你可以递归地找到所有的
  • 如何在 GitHub 中创建嵌套存储库?

    我可以通过创建一个存储库https github com https github com say repo 并有 https github com username repo git 如何创建另一个存储库 例如sub repo 置于rep
  • 为了使“我的更改”正常工作,Github 的正确 VCS 用户名设置是什么?

    我有一个适合个人的 TeamCity 持续构建流程设置GitHub项目 https github com benpowell HelloTxt NET效果很好 但是 在 TeamCity 中 我想在 我的更改 下查看提交列表 http te
  • 无法更改 GitHub Pages 中的源分支

    我为 GitHub Pages 创建了一个简单的网站 该网站的源位于 master 分支中 生成的网站 我希望看到发布的 位于 gh pages 分支下 我希望能够在设置中更改网站的来源 但是设置是灰色的 我无法更改它 请参见下面的屏幕截图
  • 如何在 GitHub Action 中推送到受保护的主分支?

    这是我的 github 操作工作流程 name Release on push branches main jobs release name Release runs on ubuntu latest steps name Checkou
  • 说它已提交,但在 GitHub 中它没有显示

    我刚刚在 Ubuntu 机器上安装了 Rails 我设置了 git 并创建了一个 ssh 密钥来链接到我的帐户 我创建了一个要提交的存储库 并创建了一个示例项目来测试 名为first app 当我提交时 它说一切都已提交 但我去了 gith
  • 在命令行中从 github 下载特定文件,而不是克隆整个存储库

    如何使用命令行从 github 下载 2 个文件 内容如下 git fetch git github com username Project git file1 git fetch git github com username Proj
  • 如何为 github 中两个分支之间的单个文件生成差异

    我需要为单个文件生成一个 diff 以显示两个版本之间的差异 这实际上是 github 中的标签 然后我想通过电子邮件将此差异发送给某人 因此差异的 github URL 将是理想的选择 github 比较视图将允许我对所有更改的文件执行此
  • git 分叉是如何工作的?

    所以我登录了 github 并 fork 了一个项目 每次原始存储库更新时 我的分叉存储库都会更新吗 或者我应该每次都从原始存储库进行分叉 这样我就不会错过对原始存储库所做的任何新更改 分叉是存储库的副本 分叉存储库允许您自由地尝试更改 而
  • 如何避免开发人员将凭证推送到 bitbucket?

    我们有一个应用程序 它使用 JSON 文件来定义数据库和其他 API 的连接字符串和凭据 理想情况下 这些凭证作为变量添加到 bitbucket 存储库中 并在 Jenkins 的构建期间进行替换 开发商在当地与他们合作时更换了他们 我们需
  • 如何使用“gem install”命令从私有 GitHub 存储库安装 gem

    如何在本地安装托管在 GitHub 上的私人存储库中的 gem 特别是 我们通过gem install命令而不是在 Bundler 中使用 因为它是一个命令行工具 我尝试这样做 gem install githubname repo s h
  • 如何删除 Github Desktop 上的本地分支?

    上周我将 Windows Github 升级到Github 桌面 https desktop github com 这肯定比他们上次为 Github Windows 所做的更新要快得多 它还有一个不错的提交视觉时间表 也许我很愚蠢 但是删除
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • Git:压缩 master 上提交的最简单方法[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 git 将最后 X 次提交压缩在一起 https stackoverflow com questions 5189560 how can i squash my last x commits
  • 如何禁用 GitHub 中的拉取请求?

    我试图了解如何禁用 github 中的 拉取请求 问题一 我们正在尝试使用变基工作流程 这意味着如果不是快速推进 那么使用拉取请求可能会有害 一种解决方案 为我想要禁用拉取请求的分支设置分支权限 或者将我添加为任何进入 master 的内容
  • GitHub Pages (github.io) doxygen 生成的页面未找到 (404)

    我不明白为什么找不到 doxygen 生成的页面 404 它在Github存储库中的路径是https github com AubinMahe AubinMahe github io blob master doxygen html dd
  • 使用 Github Actions 进行部署

    我在用Github作为我的源代码控制 并使用Github 操作作为我的 CI CD 解决方案 我在某处有一个专用的 Windows Server 它接受发表我的仓库的版本 我有一个 Github Action 它可以构建 测试 发布和部署
  • Github 操作错误地认为变量是秘密,因此不设置输出

    我的工作流程文件中的一个步骤将返回我的 aws 账户中 EC2 实例的一些 ID 然后我将这些 ID 设置为 github 输出 以便在我的工作流程文件中的其他作业中使用 我在许多工作流程中都这样做了 步骤将返回如下内容 i 0d945b0
  • 是否可以从 Github 网站或 API 获取分支合并列表?

    在我们的工作流程中 不会 直接 提交到主分支 主分支仅接收来自 Pull 请求的合并 我们可以将每次合并视为添加到主分支的新功能 因此 我想获得一个合并到 master 中的列表 作为一种可视化随着时间的推移添加到产品中的功能块的方式 gi

随机推荐