在任务上下文中理解git命令

在任务上下文中理解git命令,git,git-pull,git-fetch,Git,Git Pull,Git Fetch,我需要帮助理解git拉/取合并等。。。 我知道这个网站上有很多文章和答案,所以我会把它放在我遇到的问题的背景下 所以,我有这个: Remote branch "myBranch" file A file B Local Branch "myBranch" file A file B 此时,这两个分支是相同的 2.)我继续在远程分支上手动创建一个附加文件。模仿,好像是另一个开发者做的 因此,情况发生了变化 Remote branch "myBranch"

我需要帮助理解git拉/取合并等。。。 我知道这个网站上有很多文章和答案,所以我会把它放在我遇到的问题的背景下

  • 所以,我有这个:

    Remote branch "myBranch"
    file A
    file B
    
    Local Branch "myBranch"
           file A
           file B 
    
  • 此时,这两个分支是相同的

    2.)我继续在远程分支上手动创建一个附加文件。模仿,好像是另一个开发者做的 因此,情况发生了变化

        Remote branch "myBranch"
        file A
        file B
        file C *
    
       Local Branch "myBranch"
               file A
               file B 
    
    现在,我知道gitfetch命令将“告诉我”有更改,但不会修改我的本地分支。 当我运行git fetch时,我得到以下输出

        $ git fetch
        remote: Counting objects: 4, done.
        remote: Compressing objects: 100% (3/3), done.
        remote: Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
        Unpacking objects: 100% (4/4), done.
        From https://bvdevgithubvm.broadviewnet.com/internal-dev/bvn-process-history-service
           0c075bc..6098e63  prototype  -> origin/prototype
    
    但是!!我只知道有区别。 我怎么知道发生了什么变化。在将远程分支带到本地分支(到本地计算机)之前,我可以查看远程分支上的更改吗
    我想,我正在寻找的是,如果你知道SVN世界,就相当于在做SVN更新之前,能够看到SVN日志,看看谁提交了什么

    这是我问题的第一部分。现在进入第二部分,这可能被视为一个独立的问题

    3.)因此,我从上面调用git pull并将远程修改带到本地分支 现在的情况是

    Remote branch "myBranch"
               file A
               file B
               file C
    
            Local Branch "myBranch"
               file A
               file B
               file C
    
    在这一点上,分支是相同的

    因此,我继续从我的本地分支删除文件C。 然后我提交更改,但不推送它们。(然而)

    在这一点上,图片是这样的:

        Remote branch "myBranch"
               file A
               file B
               file C
    
            Local Branch "myBranch"
               file A
               file B
    
    现在,这就是我感到困惑的地方。如果我做git fetch或git pull, 输出为

    $ git pull
        Already up to date.
    
    我本想知道远程分支上有什么东西使它与众不同。但是我不能吗?
    我如何处理这个问题?
    现在,我了解到这种行为可能有一个原因,原因在于git filosophy,而不是SVN(例如)。
    但是,我如何处理这种差异呢?我怎么知道遥控器上的情况可能发生了变化

    我想你被困在svn世界里了。。。你需要摆脱它,因为你对事物的看法会被打破

    首先,不要考虑文件的外观。。。考虑一下这些修订是什么(因为git实际上就是这样做的)。。。这就是为什么如果你环顾四周,你会发现很多问题都与不同分支中设置修订的方式有关,而不是关于其中包含哪些文件的问题(当然,有些问题确实涉及这些内容……但大多数都与修订以及如何处理修订相关)

    因此,第一个问题:

    git diff --name-status remote/branchx # see what files changed
    git diff remote/branchx # see the diff between both branches
    git log HEAD remote/branchx # show the revisions that separate both branches
    

    现在,关于你的第二个问题。。。。你当地的分公司搬走了,当然。。。但是远程没有,因此如果您尝试获取,本地repo数据库上的远程引用将不会移动(本地repo的远程指针已经设置在那里,并且您正在跟踪的远程分支的尖端已经是分支历史的一部分)。。。这就是git告诉你的。

    我想你被困在svn世界里了。。。你需要摆脱它,因为你对事物的看法会被打破

    首先,不要考虑文件的外观。。。考虑一下这些修订是什么(因为git实际上就是这样做的)。。。这就是为什么如果你环顾四周,你会发现很多问题都与不同分支中设置修订的方式有关,而不是关于其中包含哪些文件的问题(当然,有些问题确实涉及这些内容……但大多数都与修订以及如何处理修订相关)

    因此,第一个问题:

    git diff --name-status remote/branchx # see what files changed
    git diff remote/branchx # see the diff between both branches
    git log HEAD remote/branchx # show the revisions that separate both branches
    
    现在,关于你的第二个问题。。。。你当地的分公司搬走了,当然。。。但是远程没有,因此如果您尝试获取,本地repo数据库上的远程引用将不会移动(本地repo的远程指针已经设置在那里,并且您正在跟踪的远程分支的尖端已经是分支历史的一部分)。。。这就是git告诉你的

    我怎么知道发生了什么变化。在将远程分支带到本地分支(本地计算机)之前,我可以查看远程分支上的更改吗

    当然。在远程分支和本地分支之间执行
    git diff
    ,如中所述

    因此,我继续从我的本地分支删除文件C。然后我提交更改,但不推送它们。(然而)!!。。。我本想知道远程分支上有什么东西使它与众不同。但是我不能?我该怎么处理

    如果查看远程分支的日志,您将看到提交列表。如果您查看本地分支的日志,您将看到一个类似的提交列表,除了本地分支还有一个提交列表,即删除
    文件C
    的提交列表。这比服务器上的任何更改都要新;git告诉您,您的本地分支与远程分支是最新的,因为本地分支拥有远程分支中的每个提交,然后是一些提交。最新还意味着您可以毫无问题地将更改推送到远程分支;当您这样做时,远程服务器将获得删除
    文件C
    的新提交,并且repo将再次匹配

    如果您想查看本地分支与远程分支的区别,可以再次使用上面提到的
    git diff

    考虑一下如果其他人更改了远程分支会发生什么情况。他们所做的更改可能与您所做的任何操作都不冲突——例如,他们只是添加了一个
    文件D
    。在这种情况下,您的更改不会与远程分支冲突,因此您仍然可以毫无问题地推进更改。或者,他们可能会做一些与您的版本冲突的事情;也许他们更改了
    文件C
    。在这种情况下,git无法知道他们对
    文件C
    的更改或您的更改是正确的,因此您需要手动解决该冲突,然后才能将更改推送到远程

    我怎么知道发生了什么变化。在将远程分支带到本地分支(本地计算机)之前,我可以查看远程分支上的更改吗

    当然。做一个<代码