Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git日志输出中的远程意味着什么?_Git_Github_Cygwin - Fatal编程技术网

git日志输出中的远程意味着什么?

git日志输出中的远程意味着什么?,git,github,cygwin,Git,Github,Cygwin,又是一个黎明,又是一天,人们试图学习Git这一令人震惊的反直觉、充斥着行话的混乱。在本地开发服务器上运行命令git log时,我得到以下输出: $ git log commit 07cfffea573a70a59b2be7a6ff8d7dee3e831e (HEAD -> master, live/master) Author: My Name <example@hotmail.com> Date: Mon Jul 6 17:02:16 2020 +0000 ma

又是一个黎明,又是一天,人们试图学习Git这一令人震惊的反直觉、充斥着行话的混乱。在本地开发服务器上运行命令
git log
时,我得到以下输出:

$ git log
commit 07cfffea573a70a59b2be7a6ff8d7dee3e831e (HEAD -> master, live/master)
Author: My Name <example@hotmail.com>
Date:   Mon Jul 6 17:02:16 2020 +0000

    manual changes to functions.php permissions

commit 3f507d8211be744b1c5a997c81d13b77d968be (central/master)
Author: My Name <example@hotmail.com>
Date:   Thu Mar 12 00:14:22 2020 +0000

    Contact Form 7 update

commit 41c64ed4fbde1924557e7886901ab8078d088a
Author: My Name <example@hotmail.com>
Date:   Wed Mar 11 19:11:53 2020 +0000

    Added PHP error log for Contact Form 7
$git日志
提交07cfffea573a70a59b2be7a6ff8d7dee3e831e(主管->主管,现场/主管)
作者:我的名字
日期:星期一至七月六日17:02:16 2020+0000
手动更改functions.php权限
提交3f507d8211be744b1c5a997c81d13b77d968be(中央/主)
作者:我的名字
日期:2020年3月12日星期四00:14:22+0000
联络表格7更新
提交41c64ed4fbde1924557e7886901ab8078d088a
作者:我的名字
日期:3月11日星期三19:11:53 2020+0000
添加了联系人表单7的PHP错误日志
简单地说,那些遥控器到底意味着什么?我所发现的任何问题似乎都没有回答这个问题,只要看一下
mangit日志
,就知道它不是为git初学者编写的

对我来说,输出似乎表明这些遥控器当前被卡在它们出现的相应提交上,但我知道这不可能,因为我已经将最新的提交从
live
直接推送到
central
(并在Github上确认已进行了更改)然而,
central
仍然显示在旧提交的旁边

这里的遥控器到底意味着什么

简单地说,那些遥控器到底意味着什么

git log
输出中提交旁边的注释始终对应于您的local“refs”(即分支或标记)。这里,
live/master
central/master
是远程跟踪分支;您可以使用
git-branch--remote
(简称
-r
)列出这些代码

远程跟踪分支是本地引用,当您:

  • 将更改推送到相应远程设备上的相应分支,即,
    git push central master
    应将当前签出分支上的新更改推送到
    central
    远程设备上的
    master
    分支,并更新
    refs/remotes/central/master
    以指向当前分支的头部
  • 取一个遥控器。i、 e.
    git fetch central master
    将获取
    central
    远程上的
    master
    分支,并更新
    refs/remotes/central/master
    。类似地,
    git fetch central
    将获取
    central
    远程服务器上的所有分支。由于
    git pull
    在引擎盖下执行
    git fetch
    操作,因此在拉动时也会更新远程跟踪分支

  • 关于Git手册页:对于初学者来说,有些确实不容易阅读。我建议您从以下资源开始:

    官方文件中的一些页面:

    • 阅读本手册有助于您更好地理解手册的其余部分

      • TL;博士:对你的评论问题的回答是:

        这是否意味着即使两个远程设备的内容相同(由于将一个远程设备的更改推送到另一个远程设备),我也必须从两个远程设备获取/拉取以保持本地存储库的最新状态

        是“是的,您必须对每个远程设备运行
        git fetch
        ”。您可能需要定义一组远程设备和/或运行
        git remote update
        ,该操作将对所有远程设备运行
        git fetch
        。或者,
        git fetch--all
        也会从所有远程设备更新。(group stuff为您提供了更大的控制;您可以使用
        git remote update group
        来更新特定的远程组。)

        长的 要理解这些东西,你需要意识到:

        • Git存储库将提交(和其他Git对象)存储在一个数据库(通常是大数据库)中,将一些名称集(如分支名称、标记名称和远程跟踪名称)存储在第二个(通常小得多)数据库中

        • 提交通过其哈希ID进行唯一编号,但具有相同提交的所有Git(即所有Git存储库)始终对这两个Git中100%相同的所有提交使用相同的哈希ID

        • 分支名称(而不是任何其他名称)有一个特殊属性:根据定义,它们始终包含属于该分支的最后一次提交的原始哈希ID

        • 为了实现上述所有功能,当您“打开”一个分支并进行新的提交时,Git会自动用新创建的提交的哈希ID替换分支名称中存储的哈希ID(它的散列ID以前从未出现在您自己的Git存储库中,也不会出现在任何其他Git存储库中,但将来每个获得提交的Git都会同意它是该提交的散列ID)

        • 一般来说,会有一些例外情况,但我们暂时将这些情况放在一边,我们只会向存储库添加新的提交。这使我们更容易考虑各种情况,因此这是一种有益的简化

        然后,我们在此基础上添加以下内容:

        • 每个Git存储库通常独立于任何其他Git存储库

        • 不过,偶尔您会将一个Git连接到另一个Git。当您连接到另一个Git时,一个Git会向另一个Git显示其部分或全部名称。这些是
          获取
          推送
          操作。一个Git会向另一个Git提供两个Git之一还没有的提交集:

          • 对于
            git fetch
            ,另一个git列出了它的名称和散列ID,而你的git得到了它还没有提交但想要/需要的提交

          • 对于
            git push
            ,您的git列出了散列ID,另一个git会根据需要获取这些ID。然后您的git礼貌地请求(常规推送)或命令(强制推送)另一个git设置一些
            ... <-F <-G <-H   <-- master
            
                        H   [abandoned]
                       /
            ... <-F <-G   <-- master
            
            git fetch alice