Py学习  »  Git

Git没有添加一些文件

wolfv • 3 年前 • 1133 次点击  

我正在使用git来控制Linux家用电脑上的用户配置文件的版本。

Git拒绝将这两个文件添加到用户配置存储库:

~/.emacs.d/.cache/bookmarks
~/.emacs.d/.cache/recentf

目录emacs。d/包含一个。git存储库。 外部的所有文件。emacs。d/在没有问题的情况下添加。

有没有办法跟踪这两个文件,就好像它们不在另一个git存储库中一样? Git子模块似乎有点过头了。

我正在Fedora 35工作站上运行git 2.33.1版。

以下是一些可能相关的其他事项:

gitc别名在my中定义。bashrc文件:

alias gitc='/usr/bin/git --git-dir=$HOME/config_repo --work-tree=$HOME'

Git add执行并以静默方式返回,但未添加任何内容:

$ gitc add .emacs.d/.cache/bookmarks .emacs.d/.cache/recentf
$ gitc status
On branch clean_install_orphan
nothing to commit (use -u to show untracked files)

这个emacs。d/。缓存/文件未列在跟踪的提交文件中:

$ gitc ls-files .emacs.d/.cache/bookmarks .emacs.d/.cache/recentf

不返回任何内容。

编辑完之后。emacs。d/。cache/recentf文件,未在以下文件中列出:

$ gitc status

因为它从未被添加。

“添加力”选项会得到类似的结果:

$ gitc add -f .emacs.d/.cache/bookmarks .emacs.d/.cache/recentf

文件存在且路径正确:

$ cd ~
$ ls -l .emacs.d/.cache/recentf
-rw-------. 1 wolfv wolfv 2999 Jan 11 00:41 .emacs.d/.cache/recentf
$ ls -l .emacs.d/.cache/bookmarks
-rw-r--r--. 1 wolfv wolfv 1663 Jan  2 10:39 .emacs.d/.cache/bookmarks

没有。吉特。Gitu在家中忽略全局文件。

存储库的排除文件为空:

$ more config_repo/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

初始化存储库时使用了--bare选项:

$ git init --bare $HOME/config_repo

这应该不会造成问题。

.缓存不是符号链接:

$ ls -la .emacs.d/
..
drwxr-xr-x. 1 wolfv wolfv    452 Jan 11 00:41 .cache
..
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131932
 
1133 次点击  
文章 [ 1 ]  |  最新文章 3 年前
torek
Reply   •   1 楼
torek    3 年前

你提到:

目录 .emacs.d/ 包含一个 .git 存储库。

这就是问题所在。Git将拒绝在Git存储库中存储Git存储库。这有很多好的理由。理论上,你可以通过重命名 吉特先生 例如。, .got 然后再加上,但不要这样做。

如果你试图 git add 从一个Git存储库到另一个Git存储库,“外部”存储库最终将包含 提及 (不是)内部存储库的副本。在内部,这个引用采用Git称为 gitlink .gitlink是Git的关键部分 子模块 ,但不是所有的子模块:为了让子模块“正常工作”,Git存储了第二个关键部分 .gitmodules 这个 git添加 命令将创建或更新gitlink,但不会创建正确的 .Git模块 文件

你可以:

  • 停止使用 分离 内部的Git存储库 .emacs.d
  • 只需将其视为两个存储库(处理或不处理) emacs先生。D 并备份和/或复制这两个Git存储库。

治疗 emacs先生。D git submodule add 至少一次来创建 .Git模块 向上级(或 超级项目 )数据库所在的存储库 --git-dir=$HOME/config_repo .在这种情况下 gitc submodule add ,这可能有效,但我不知道与 --git-dir 参数与子模块(它们本身使用 --git目录 内部)通常在Git构建时进行测试。为了避免将其作为子模块使用,只需继续您已经在做的事情,并且 不要 gitc add .emacs.d .