我尝试使用git
管理我的.emacs.d/
而我未能添加一些文件:
这是.gitignore文件:
*~
auto-save-list
为什么git add -A
无法添加这些文件?有关使用git管理.emacs.d
的任何实用建议吗?
修改
~/.emacs.d $ git config -l
user.email=nickleeh@hotmail.com
user.name=Nick Lee
core.autocrlf=input
core.editor=sublime -wl1
push.default=simple
color.ui=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
user.email=nickleeh@hotmail.com
~/.emacs.d $
修改2
当我尝试添加未跟踪文件时,我收到了致命错误:
~/.emacs.d $ git add el-get/ace-jump-mode/*
fatal: Pathspec 'el-get/ace-jump-mode/README.md' is in submodule 'el-get/ace-jump-mode'
事实证明ace-jump-mode
是一个子模块。我怎么能得到这个?
这是否意味着使用git来管理emacs配置文件不是一个好主意?
答案 0 :(得分:2)
根据http://git-scm.com/docs/git-add,
如果没有< pathspec>在使用
-A
选项时,将更新整个工作树中的所有文件(旧版本的Git用于限制对当前目录及其子目录的更新)。
我认为这是你的问题,虽然我确实看到一个文件位于已添加的子目录中。
答案 1 :(得分:1)
您显然已经在过去创建了至少两个不同的存储库。
一个存储库位于~/.emacs.d
,因此git init
不创建一个新的存储库,但只重新初始化它:
来自git help init
:
Running git init in an existing repository is safe. It will not
overwrite things that are already there. The primary reason for
rerunning git init is to pick up newly added templates (or to move the
repository to another place if --separate-git-dir is given).
另一个存储库位于~/.emacs.d/el-get
。此存储库是"未跟踪内容的原因"消息以及不将这些文件添加到外部存储库的原因。
您有三种可能性:
答案 2 :(得分:0)
显然Git现在requires the path argument用于git add -A
命令...
请注意,在谈论git add时,启动git 2.0(2014年第1季度或第2季度)。 (工作树中的当前路径),你必须使用'。'在其他git add命令中。
这意味着:
“git add -A。”相当于“git add。; git add -u。”
(注意额外的'。'用于git add -A和git add -u)
因为git add -A或git add -u将在整个工作树上运行(仅启动git 2.0),而不只是在当前路径上运行。
答案 3 :(得分:0)
你应该使用
git add -u
添加已受版本控制的所有已修改文件。否则,要添加尚未受控制的文件:
git add -A .
答案 4 :(得分:-1)
您似乎已经修改了一些子模块,但尚未提交这些更改。
第一个解决方案是输入每个子模块并自行更改。然后,您可以在父存储库中git add -A
,它将删除这些消息。
你的第二个选择是使用它:
git submodule foreach --recursive git add -A .
将为您提交子模块中的所有内容(但在这种情况下您无法控制)。
此链接中的更多信息: git add -A is not adding all modified files in directories