在repo子目录之间移动文件后使用Git add --all

时间:2015-02-28 22:59:58

标签: git

在我的一个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.

在记录移动的文件方面,这两者之间的工作树有什么区别,在这种情况下最好的选择是什么?

2 个答案:

答案 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. *,因此您可以执行以下操作之一:

  1. 从存储库的根目录运行git add --all
  2. 运行git add --all :/:/路径是一种特殊符号,表示"存储库的根目录"。