我可以使用 Git 从服务器 1 拉取并从桌面 1 推送到 GitHub 吗?
Posted
技术标签:
【中文标题】我可以使用 Git 从服务器 1 拉取并从桌面 1 推送到 GitHub 吗?【英文标题】:Can I use Git to pull from server 1 and push to GitHub from desktop 1? 【发布时间】:2021-12-31 06:10:15 【问题描述】:我正在尝试从我的托管网站中提取文件并将文件推送到 GitHub 上的项目,以便我可以在那里处理它们。这是我希望在笔记本电脑上使用Git Bash 执行的操作:
git pull https://www.example.com push https://github.com/account-name/main-website
这是否可能,如果可以,我需要做什么?
我是一个关于 Git 和 GitHub 的新手,所以请多多包涵。我一直在研究,但找不到我需要的东西。我什至不知道这是否可能,但我认为它会。
【问题讨论】:
大概是在 Windows 上? 谢谢。它不必来自 Windows。最好从我托管在 Apache 服务器上的网络服务器到我在 GitHub 上的项目。我将站点复制到 GitHub,然后在 GitHub 上管理内容,然后将更新推送到服务器。我认为托管网站是生产服务器,所以我真的不想直接进行编辑,尽管我总是使用 FTP 退出任何更改。 【参考方案1】:Git 处理提交。 git pull
命令只是运行另外两个 Git 命令的简写:
git fetch
,得到提交;那么,只要成功,
(通常)另外两个 Git 命令之一,可帮助您将检索到的提交集成到当前分支中。
git push
命令发送 提交。
Git 并不完全有文件。它只有提交。 (commits 然后在其中包含文件,就好像它们每个都是包含每个文件的存档一样。)所以你根本不需要 git pull
来从服务器 1 上的存储库传输提交到 GitHub 上的不同存储库。你只需要git fetch
和git push
。
请注意,使用git fetch
时,您会得到他们的提交,但不会得到他们的分支(准确地说是分支名称)。每个 Git 存储库都有自己的 分支名称。您的存储库有您的 分支名称,而不是其他人的。 Git commits 每个都有一个唯一的编号——一个 hash ID 或 object ID——所以可以共享提交,因为你所做的任何提交都会有一个唯一的编号,不同于其他任何人所做的任何其他提交。但是共享分支名称并不完全可以,因为分支名称只包含 一个 提交哈希 ID,如果你自己做了一个新的提交,而他们自己也做了一个新的提交,一个名字在这里不够用。所以git fetch
取他们的分支 名称并将它们重命名为您的remote-tracking 名称:例如,他们的develop
变成您的origin/develop
。这假设您以名称 origin
获取他们的 Git——这是 git clone
设置的标准名称,以记住您在 git clone
时间使用的 URL。
如果您希望 GitHub 存储库根据从 Server-1 存储库的 develop
复制提交获得的 server1-remote/develop
创建或更新分支名称 develop
,您可以这样做这个:
git fetch server1-remote develop
git push github-remote server1-remote/develop:develop
git fetch
命令的意思是:
server1-remote
以获取 Server-1 存储库的 URL;
联系该 URL 上的 Git 软件,将 Git 连接到该存储库;
让他们列出所有分支名称和提交哈希 ID;和
从他们的develop
获取我需要更新的任何信息,记住它为server1-remote/develop
。
名称server1-remote
是我们给git fetch
的名称。我们将这种特定的获取限制为仅 develop
,但获取所有内容通常更有意义:这降低了调用 Git(通常相当大)与获取新提交的成本从他们那里(通常很小,如果他们通常没有很多新东西的话)。运行六个git fetch
-es 来更新六个分支/远程跟踪名称比运行一个同时更新所有六个的git fetch
更昂贵。
git push
步骤使用远程名称 github-remote
在(可能不同的)URL 调用 Git 软件。无论 Git 在该 URL 上回答 Internet 电话,然后您将任何来自您自己的 server1-remote/develop
的新提交交给它(由于刚刚完成的提取,它具有 server1 的 develop
上的所有提交) .然后你礼貌地问他们创建或更新他们自己的develop
以记住以最近此类提交结束的提交。这就是你所要做的,前提是:
如果您愿意,可以使用不同的远程名称:这些名称完全由您决定。默认的origin
名称很好,但只能用于这两个 URL 中的 一个,并且您需要两个名称。使用:
git remote add <name> <url>
(用您想要的名称和 URL 替换 <name>
和 <url>
部分)将新的遥控器添加到一些现有的 Git 存储库。使用 git remote set-url
更改与现有远程关联的 URL。同样,remote 只是 URL 的简称;通过拥有两个,您可以让您的 Git 联系其他两个 Git 并使用这些存储库。
请注意,如果您不希望两个远程存储库中的完全相同的提交(具有相同的哈希 ID、快照和提交元数据),则必须采用 提交 em> 您从服务器 1 获得并使用它们进行新的和不同的提交以发送到 GitHub。这是一个更复杂的过程。
【讨论】:
以上是关于我可以使用 Git 从服务器 1 拉取并从桌面 1 推送到 GitHub 吗?的主要内容,如果未能解决你的问题,请参考以下文章