在 GIT 中获取远程上游

Posted

技术标签:

【中文标题】在 GIT 中获取远程上游【英文标题】:Fetching remote upstream in GIT 【发布时间】:2021-01-13 18:36:34 【问题描述】:

我是 GitHub 的新手,我对上游和本地更改有点困惑。这是我的情况。任何建议都非常感谢。

我创建了一个 git 存储库,现在我已经设置了上游和来源。

如果我在下面输入命令

git remote -v 

This gives me 2 repositories 
origin (points to my forked path)
upstream (points to my parent project path)

现在,这里是混乱。如果我去 GitHub 看看分支。它显示masterdevelop 分支。如果我检查这两个的链接,它是相同的。那么如何区分哪个是开发分支,哪个是主分支。

现在,这是我的事。如果我检查我当地的分支机构。我只看到一个主分支。我不能直接在主分支上工作。我必须在开发分支上工作并将更改推送到父的开发分支。

我尝试了这些步骤

git checkout -b develop (From the local master branch)
git pull upstream/develop. 

现在这是否意味着,我已将所有更改从上游的开发分支拉到本地的开发分支?这令人困惑:(

现在,当我在本地开发分支中时,我使用以下命令从中创建了一个功能分支

git checkout -b "feature1"

现在我处理更改并通过键入以下命令推送更改以供同行评审

git add .
git commit -m "feature added"
git push -u origin feature1

此时,我已经在 GITHUB 推送了 PR。我去 github 并提出 PR 以从我的分支合并到上游开发分支。更改已合并。

现在我使用以下命令从我的功能分支返回本地开发分支

git checkout develop

如何将我刚刚合并到上游开发的最新更改拉到本地的开发分支。因为如果我尝试任何东西,我仍然无法获得我在上游开发中更新的最新更改。

【问题讨论】:

【参考方案1】:

git checkout -b <some branch> 在当前 HEAD 之上创建本地新分支。

如果分支已经存在,则不要创建它,只需切换到它,它将已经连接到上游分支。

git clone <my repo>
# assumming you will be on master branch after clone just switch to develop
git checkout develop
# just pull recent changes anytime something new could appear on origin
git pull

如果您已经创建了本地 develop,您可以随时将其删除,然后再次切换到不存在的开发环境,该开发环境将首先尝试从原点拉取它:

# let's say we are on local develop then go to another branch
git checkout master
# delete local develop
git branch -D develop
# switch to develop should checkout develop which will be tracking origin develop
git checkout develop
# and again if sth new appears on origin just pull it
git pull

【讨论】:

【参考方案2】:

要切换到本地机器上的develop 分支,请执行:

git checkout develop

一旦您进入develop 分支,请使用以下命令进行确认:

git branch

上述命令应突出显示develop 分支。 合并 PR 后,只需执行:

git pull origin develop

这会将合并的远程更改(来自develop)拉到您的本地(develop)分支。

【讨论】:

以上是关于在 GIT 中获取远程上游的主要内容,如果未能解决你的问题,请参考以下文章

git将上游设置为存储库中的远程文件夹

git如何将上游(upstream)新建分支(origin没有)导入到origin中?

git 远程分支与本地分支

Git从本地存储库中删除上游

如何在 git 中获取所有本地和远程标签?

Git添加远程库和从远程库中获取(新手傻瓜式教学)