在我的一个Git回购中(我在Mac上使用Git 1.9.3)我已将一些文件从根目录移动到其中一个子目录。正如预期的那样,当我运行git status
(在目标子目录中)时,它会将移动的文件从根目录显示为deleted
,将新添加的文件显示为子目录中的未跟踪文件。我应该git add --all
来记录更改,但是我从Git收到以下消息:
$ git add --all
warning: The behavior of 'git add --all (or -A)' with no path argument from a subdirectory of the tree will change in Git 2.0 and should not be used anymore.
To add content for the whole tree, run:
git add --all :/
(or git add -A :/)
To restrict the command to the current directory, run:
git add --all .
(or git add -A .)
With the current Git version, the command is restricted to the current directory.
在记录移动的文件方面,这两者之间的工作树有什么区别,在这种情况下最好的选择是什么?
答案 0 :(得分:1)
移动或删除文件时,最好使用git的本机工具。
这将删除你的git存储库中的文件:
git rm [path]
这样您就可以将文件从oldpath
移动到newpath
,并让您同时保留这些文件的所有git历史记录
git mv [oldpath] [newpath]
在添加文件时,我通常使用以下内容:
git status
git add *
git commit -m "message"
git push
状态让我可以查看我要添加的文件。如果我想添加所有文件,我可以使用*
,否则我会输入他们各自的路径。
至于您收到的错误消息,可能是因为您将它们移动到git以前不知道的子目录(即您刚创建它)
答案 1 :(得分:0)
在git 2.0中,git add --all
的行为发生了变化。在git< 2.0,它只是添加了当前目录中的文件。从2.0开始,它添加了工作树中的每个文件。该消息只是通知您此更改。
由于您正在运行git 1. *,因此您可以执行以下操作之一:
git add --all
。git add --all :/
。 :/
路径是一种特殊符号,表示"存储库的根目录"。