相关疑难解决方法(0)

'git pull'和'git fetch'有什么区别?

主持人注意:鉴于此问题已经发布了67个答案(其中一些已删除),请考虑在发布另一个问题之前是否提供任何新内容.

git pull和之间有什么区别git fetch

git version-control git-pull git-fetch

1万
推荐指数
41
解决办法
269万
查看次数

将本地存储库分支重置为远程存储库HEAD

如何将本地分支重置为远程存储库中的分支?

我做了:

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

但当我跑一个git status,

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
      modified:   java/com/mycompany/TestContacts.java
      modified:   java/com/mycompany/TestParser.java
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么我有这些'修改'?我没有碰过这些文件?如果我这样做,我想删除它们.

git undo

3488
推荐指数
22
解决办法
283万
查看次数

git:你的分支由X提交领先

这实际上是怎么产生的?

我现在正在自己的一个回购工作,所以这是我的工作流程:

  1. 更改文件
  2. 承诺
  3. 重复1-2直到满意为止
  4. 推送掌握

然后,当我这样做时,git status它告诉我我的分支是由X提交提前(可能与我提交的提交数量相同).是因为当您推送代码时它实际上并不更新本地缓存的文件(在.git文件夹中)?git pull似乎'修复'这个奇怪的消息,但我仍然好奇它为什么会发生,也许我使用git错了?


包括在消息中打印的分支

我当地的分公司领先于大师

你在哪里推/拉当前分支

我正在推送GitHub并拉到我当时正在处理的任何一台计算机上,我的本地副本总是完全是最新的,因为我是唯一一个正在处理它的人.

它实际上并没有检查远程仓库

这就是我的想法,我想我会确保我对它的理解是正确的.

你传递一些额外的论据吗?

不是我能看到的,也许我的结尾有一些有趣的配置?

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

git git-commit

355
推荐指数
10
解决办法
31万
查看次数

很难理解git-fetch

我很难理解git-fetch的细微差别.我知道做一个fetch,将远程refs提取到本地跟踪分支.

我有几个问题:

  1. 是否有可能本地跟踪分支不存在?如果是,那么它会自动创建吗?

  2. 如果我执行fetch并指定非跟踪分支作为目标,会发生什么?

  3. git-fetch的手册页指定:

    git-fetch <options> <repository> <refspec>
    
    Run Code Online (Sandbox Code Playgroud)

我如何使用refspec从远程主站获取内容到其远程跟踪分支?我相信如果我现在的HEAD在主人身上并且我跑了,这可能是可能的

git fetch origin master

但是,我可以使用<+?src:dest>refspec来实现同样的目的吗?我认为这将有助于我更好地理解这些概念.

还有一个问题:

我的.git/config文件有以下行用于获取(仅显示相关行):

fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

有人可以解释这条线的确切含义吗?

git git-fetch

52
推荐指数
3
解决办法
3万
查看次数

当我需要*pull*origin master时,为什么它会说"你的分支在857提交之前领先于原点/主人"

首先,我知道一些措辞相似的问题,例如:

其中没有一个(AFAICT)的答案与我的问题版本相符.

我的情况是:

$ git status
# On branch stable
nothing to commit (working directory clean)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 857 commits.
Run Code Online (Sandbox Code Playgroud)

在现有的问题中,接受和赞成的答案大多同意它意味着字面上的意思......我领先,我需要我的新提交送到origin/master.

我知道实际情况恰恰相反,我的本地master分支是在远程origin/master控制器后面,实际上我需要git pull origin master在本地做一些工作之前.(或者可能只是git fetch origin?)

我的问题是......是否有一些理由说明这些信息的措辞Your branch is ahead of 'origin/master' by 857 commits.是否真的有意义?

因为我现在理解它的方式与消息所说的相反('我的分支' 原点/主人之后).

或者它的确意味着:"远程主分支的HEAD领先于您的本地原点/主跟踪分支"?

更新 FWIW我在一个由六个其他开发人员组成的团队中工作.我们每天都会多次拉,提,推等等没有问题.我这里没有错误...我只是想了解为什么Git用这种方式说出它的信息 - 措辞本身是否被错误选择,或者是否有一些Git的基本概念导致他们这样说出来而且我不理解.


这里有更多信息 …

git

23
推荐指数
2
解决办法
2万
查看次数

标签 统计

git ×5

git-fetch ×2

git-commit ×1

git-pull ×1

undo ×1

version-control ×1