为什么从特定的GitHub存储库合并到本地Git存储库会导致本地存储库中未提交的更改?

凯文

我有2个GitHub存储库,我们将它们称为GH1GH2,还有2个对应的本地存储库,我们将它们称为LR1LR2,它们将它们作为远程对象。为了清楚起见,这是本地仓库到远程仓库的映射:
LR1-> GH1
LR2-> GH2

使用GitHub Web UI手动将同一文件(称为A.jpg)上传(并提交)到两个GitHub存储库。当我尝试从遥控器合并回本地存储库时,会得到不同的结果。

我在命令行中使用git来解决此问题。

本地存储库(LR1)的行为与我期望的一样:git fetch从远程获取更改,但不合并。git merge合并A.jpg并快速转发本地存储库。git status显示“没有任何提交,工作目录很干净”

另一个(LR2)的行为与我预期的有所不同:git fetch从远程获取更改,但不合并。git merge合并A.jpg并快速转发本地存储库。git status显示A.jpg已修改,并且是未提交的更改。

git pull相对于2个本地存储库,其行为方式相同,但是为了解决此问题,我认为我会明确调用2个git fetchgit mergepull相同的命令()。

我假设我以不同的方式配置了2个本地git存储库,这就是造成此问题的原因。什么会导致这种行为?

凯文

感谢这篇文章的有用评论,我将分享我对该问题的理解以及如何解决此问题。

该问题与SMB挂载,文件权限和git配置有关。问题是,当我使用git从远程同步到本地存储库并且git需要在本地存储库中创建新文件时,git使用其权限的默认设置(644)和SMB创建了一个新文件。本地存储所在的mount尚未为文件模式配置任何设置,因此使用的是默认设置(755)。最终结果是git认为它正在创建一个具有644权限的文件,但是一旦创建,它就假定了755权限,因为这是新文件的装载力...因此git认为刚创建的文件已更改,将其视为未提交的本地更改文件。通过一些更改解决了该问题:

  • 更改了/ etc / fstab中的SMB挂载,以包括file_mode=0644与git想要的文件模式匹配的文件模式(
  • 完成此操作并卸载/重新安装后,本地存储区中的所有文件现在都显示为未提交的本地更改,因为权限(644)与本地存储区所感知的不同,并且我的git设置对此敏感。我通过检查git设置进行了验证

git config --get core.fileMode

  • 通过更改存储库的git配置解决了该问题。在本地存储库根目录的.git文件夹中,我编辑了配置文件,以便filemode = false
  • 完成此操作后,git status表明没有任何未提交的本地更改。

这个git文档很好地解释了这是怎么发生的,这与我所经历的非常接近(即,在将远程回购复制到SMB挂载之前,将其复制到本地磁盘上的本地回购中,然后最终将其移动到SMB挂载中)

现在,将新文件添加到GitHub存储库中,然后再下拉到本地存储库中,则不再显示为本地未提交的更改。而是将它们正确且透明地合并。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Netbeans 8.0.1-远程存储库包含未合并到本地分支中的提交

来自分类Dev

将本地git repo更改合并到已创建的github存储库

来自分类Dev

GitHub本地存储库

来自分类Dev

为什么我不能将此远程GitHub存储库添加为本地GIT存储库?

来自分类Dev

如何将从perforce克隆的本地存储库合并到现有的GitHub存储库中

来自分类Dev

Git-从本地存储库还原已提交的更改

来自分类Dev

Git将存储库中的文件合并到本地PC上的文件

来自分类Dev

Git将存储库中的文件合并到本地PC上的文件

来自分类Dev

使用tarball将更改合并到Git存储库中

来自分类Dev

当我将提交推送到远程存储库时,为什么Git会显示本地的“从远程拉出”?

来自分类Dev

仅备份git存储库中的“本地”提交/对象

来自分类Dev

Git本地存储库映射

来自分类Dev

存储库名称末尾的“ .git”在本地git存储库,远程存储库位置中重要吗?

来自分类Dev

自动提交和自动将本地存储库中的更改推送到git

来自分类Dev

将本地非github存储库与github存储库同步

来自分类Dev

直接从本地Linux Git远程更改Github存储库中的目录名称吗?

来自分类Dev

Zeppelin Notebook存储在本地Git存储库中

来自分类Dev

本地Monticello存储库

来自分类Dev

本地Monticello存储库

来自分类常见问题

无法从本地存储库推送到github存储库

来自分类Dev

无法从本地存储库推送到github存储库

来自分类Dev

Github&Git bash:如何通过Git bash将更改从在线存储库转移到本地存储库?

来自分类Dev

两个不同的本地存储库提交给一个Github存储库

来自分类Dev

在GIT中在本地上克隆特定存储库分支的最简单/最快方法是什么

来自分类Dev

将git子模块合并到主存储库中

来自分类Dev

Git命令-本地存储库与远程存储库

来自分类Dev

Git不会将本地存储库与远程存储库同步

来自分类Dev

Git如何用远程存储库覆盖本地存储库?

来自分类Dev

如何将本地git存储库导入github?

Related 相关文章

  1. 1

    Netbeans 8.0.1-远程存储库包含未合并到本地分支中的提交

  2. 2

    将本地git repo更改合并到已创建的github存储库

  3. 3

    GitHub本地存储库

  4. 4

    为什么我不能将此远程GitHub存储库添加为本地GIT存储库?

  5. 5

    如何将从perforce克隆的本地存储库合并到现有的GitHub存储库中

  6. 6

    Git-从本地存储库还原已提交的更改

  7. 7

    Git将存储库中的文件合并到本地PC上的文件

  8. 8

    Git将存储库中的文件合并到本地PC上的文件

  9. 9

    使用tarball将更改合并到Git存储库中

  10. 10

    当我将提交推送到远程存储库时,为什么Git会显示本地的“从远程拉出”?

  11. 11

    仅备份git存储库中的“本地”提交/对象

  12. 12

    Git本地存储库映射

  13. 13

    存储库名称末尾的“ .git”在本地git存储库,远程存储库位置中重要吗?

  14. 14

    自动提交和自动将本地存储库中的更改推送到git

  15. 15

    将本地非github存储库与github存储库同步

  16. 16

    直接从本地Linux Git远程更改Github存储库中的目录名称吗?

  17. 17

    Zeppelin Notebook存储在本地Git存储库中

  18. 18

    本地Monticello存储库

  19. 19

    本地Monticello存储库

  20. 20

    无法从本地存储库推送到github存储库

  21. 21

    无法从本地存储库推送到github存储库

  22. 22

    Github&Git bash:如何通过Git bash将更改从在线存储库转移到本地存储库?

  23. 23

    两个不同的本地存储库提交给一个Github存储库

  24. 24

    在GIT中在本地上克隆特定存储库分支的最简单/最快方法是什么

  25. 25

    将git子模块合并到主存储库中

  26. 26

    Git命令-本地存储库与远程存储库

  27. 27

    Git不会将本地存储库与远程存储库同步

  28. 28

    Git如何用远程存储库覆盖本地存储库?

  29. 29

    如何将本地git存储库导入github?

热门标签

归档