使用来自 GitHub 存储库的更改更新本地存储库

Posted

技术标签:

【中文标题】使用来自 GitHub 存储库的更改更新本地存储库【英文标题】:Updating a local repository with changes from a GitHub repository 【发布时间】:2010-11-29 09:59:39 【问题描述】:

我从 GitHub 本地检查了一个项目,并且该远程存储库已经对其进行了更改。使用最新更改更新我的本地副本的正确命令是什么?

【问题讨论】:

值得注意的是,github 已经为使用 git 和 github 提供了一组非常有用且有用的指南。当我第一次转向 git 时,我发现它们非常宝贵。 help.github.com 【参考方案1】:

大概:

是:git pull origin master

现在:git pull origin main

【讨论】:

它抱怨:“你要求从远程'origin'拉,但没有指定一个分支。因为这不是你当前分支的默认配置远程,你必须在命令行。”所以我尝试了“$ git pull origin master”,效果很好。 git pull origin master 我删除了一些文件,但它没有再次带来它们,知道吗? 我们在运行它之前做一个 git commit 吗?每次我运行这个命令时,我都会得到 18347213846 个我什至没有碰过的修改文件!!! 我刚刚学到了一个艰难的方法,即拉一个新的远程存储库分支不会在本地创建该名称的分支,而是将该远程分支拉入碰巧签出的任何本地分支。我不确定如何撤消这个放弃和重新克隆存储库的方法。无论如何,本地分支似乎独立于远程分支,并且在拉取之前应始终确保您位于预期的本地分支中。【参考方案2】:

这应该适用于每个默认回购:

git pull origin master

如果您的默认分支与master 不同,则需要指定分支名称:

git pull origin my_default_branch_name

【讨论】:

并非如此。致命:找不到远程参考主机 @Eijkhout probablt 在您的 repo 案例中没有 master 分支,并且其他一些分支设置为默认值【参考方案3】:
git fetch [remotename]

但是,您需要将所有更改合并到本地分支中。如果你在一个正在跟踪 Github 上的远程分支的分支上,那么

git pull

会先进行一次抓取,然后合并到被跟踪的分支中

【讨论】:

如果您使用git fetch 方法,您还需要使用git fetch -t 获取标签。如果您对更改感到满意 (git log HEAD..FETCH_HEAD),则可以将它们与 git merge FETCH_HEAD 合并。【参考方案4】:

这个问题非常笼统,我会做一些假设来简化它。我们假设您想要更新您的 master 分支。

如果您没有在本地进行任何更改,您可以使用git pull 取消任何新提交并将它们添加到您的master

git pull origin master

如果您进行了更改,并且希望避免添加新的合并提交,请使用git pull --rebase

git pull --rebase origin master

git pull --rebase 即使您没有进行更改也可以工作,这可能是您最好的电话。

【讨论】:

变基,变基的危险:atlassian.com/git/tutorials/rewriting-history/git-rebase。 《了解变基的危险》的第 2 和第 3 段真的让我怀念 SVN 的命令集。【参考方案5】:

使用已经设置好的原始主机,您只需使用以下命令 -

git pull "https://github.com/yourUserName/yourRepo.git"

【讨论】:

【参考方案6】:

要从默认分支中拉取,新的存储库应使用以下命令:

git pull origin main

Github 在 2020 年将默认分支的命名约定从 master 更改为 main。https://github.com/github/renaming

【讨论】:

不管 GitHub 的策略如何变化,main 可能都不是 GitHub 默认分支。用户可以指定默认分支名称。如果您的目标是从 GitHub 默认分支中提取,则无需指定分支...主、主或其他。 “git pull”将作用于默认远程和默认分支。【参考方案7】:

检查分支并从 master 拉取更改的完整工作流程

拉取所有远程分支

git pull --all

现在列出所有分支

git 分支 -a

下载你的分支

git checkout -b <feature branch name copied from list of branches above>

显示当前分支。必须在 <feature branch> 前面显示 *

git 分支

结帐从主分支到当前分支的更改

git pull origin master

或将任何其他 <feature branch> 签出到当前分支

git pull origin<feature-branch>

【讨论】:

【参考方案8】:

Git Clone 之后,如果想获取远程分支使用

git fetch --all

然后结帐到你想要的分店

git checkout the-branch-you-need

【讨论】:

以上是关于使用来自 GitHub 存储库的更改更新本地存储库的主要内容,如果未能解决你的问题,请参考以下文章

github存储库的本地缓存?

更新 github 存储库以匹配本地 [重复]

Git没有编辑远程存储库的访问权限

没有本地存储库的 github

更改 Github 存储库的后果

来自私人 github 存储库的 Pip install wheel