15

我们遵循这种使用 git 的模型:http: //nvie.com/posts/a-successful-git-branching-model/

我正在尝试学习在特定合并上使用 git fetch 和 git merge 而不仅仅是拉动。对于我的问题,我所做的是对分支进行更改并将这些更改推送到分支。我在 github 上看到了这些变化。然后我切换到 master 以获取这些更改。所以我

git checkout master
git fetch  // terminal shows nothing
git fetch origin  // terminal shows nothing

我是否正确使用命令进行获取?我在控制台上看不到任何东西。但是当我使用像 SourceTree 这样的工具并获取时,它会更新它们的树,我可以看到这些变化。

假设我可以进行下一步,并且看到进行了不同的更改,我是否只需执行git merge <hash of the last commit or commit I want to merge in>? 谢谢!

4

4 回答 4

21

git fetchorgit fetch origin都可以,但是如果没有什么可做的,则什么也不显示。

您可以使用git fetch -v更详细并显示更多信息

于 2013-07-02T08:04:53.147 回答
8

关于最后一部分,如“ Fun with FETCH_HEAD ”中所述,您可以这样做:

$ git fetch git://repo.or.cz/stranger.git for-junio
$ git log -p ..FETCH_HEAD
$ git merge FETCH_HEAD

因为“ pull”是“ fetch + merge”,所以我们明确地将操作分解为两个步骤。

" fetch" 将它在另一侧找到的分支上的信息留在 中FETCH_HEAD,您可以使用它来命名位于分支顶端的提交对象。
git log -p ..FETCH_HEAD”(注意双点)让您可以查看他的提交但不在您的分支中,以及它们以补丁形式的更改,以检查他所做的事情是明智的。
如果您满意,您可以使用FETCH_HEAD将提交合并到您的分支

(例如见这个答案

如“我如何从远程跟踪分支(如 ' git fetch' ) ”中详细说明,如果您定义了git mergegit pull上游分支,则不必使用 FETCH_HEAD :

git fetch origin
git merge origin/an-other-branch

git fetch origin an-other-branch将获取的小费存储在 中FETCH_HEAD,但不存储origin/an-other-branch(即通常的“远程跟踪分支”)。
所以,一个可以做到git fetch origin an-other-branch && git merge FETCH_HEAD的。

对于第一部分,确保您的分支有一个上游分支设置为您的远程上游仓库。

于 2013-07-02T06:34:09.697 回答
1

我发现这个是因为我遇到了类似的问题。我不知道为什么,但就我而言,我需要明确命名已更新的分支:

$ git fetch [origin] [branch]

让我解释一下——我将 git 用于小脚本。我开始回购master。脚本部署到生产环境后,我还想继续工作,我会做一个dev分支。但是大多数项目只有一个分支,或者我只是不dev合并一次。

今天,我更新了远程 master 并进行了一些小的更改,并希望使用这些更改更新我的本地系统。出于习惯,我只是这样做了$ git fetch。没啥事儿。然后我找到了你的帖子。首先,我添加了项目名称(来源)并添加了$ git fetch [origin]. 这将 dev 和 master 更新为他们在 1 月份共享合并的最后一次。那么,哦!我跑了$ git fetch [origin] master,现在已经下载了更改。

于 2019-07-02T00:36:30.380 回答
0

您可能正在使用 Git 存储库 HTTP URL,并且根据身份验证和网络的设置方式,您应该改用 Git URL。

如果您的 Git-remote 被调用origin

  • 首先检查假设是否正确,通过git remote get-url origin.
    如果是 HTTP,它将返回类似https://gitlab.yourdomain.net/repoGroupFoo/repoBar.
  • 通过 Web 进入存储库,单击“克隆”按钮,您将看到两个 URL;复制使用Git协议而不是HTTP 的 URL。
    或者简单地从 HTTP URL 组件开始构建它:比如从https://gitlab.yourdomain.net/repoGroupFoo/repoBar➡️ 到git@gitlab.yourdomain.net:repoGroupFoo:repoBar.git.
  • 通过更改协议git remote set-url origin git@gitlab.yourdomain.net:repoGroupFoo:repoBar.git

再试git fetch一次。

于 2022-02-03T01:37:21.060 回答