如何在git中更新目录

时间:2015-06-12 11:11:53

标签: git git-commit

我有一个bitbucket存储库,具有以下结构:

 Directory-A->
   directory a
   directory b
   file a
   file b
   file c

现在我想将文件“b”和文件“c”移动到“目录a”

当我在本地计算机上执行此操作并通过git add提交时。 我在目录a中获取文件b和文件c,但它们仍然存在于其外部。

5 个答案:

答案 0 :(得分:4)

  

当我在本地计算机上执行此操作并通过git add提交时。我在目录a中获取文件b和文件c,但它们仍然存在于其外部。

这是因为你在git add .而不是directory a中的git add -A .进行了Directory-A

首先,当您从根文件夹执行Directory-Agit add -A . + git add -u)时,您需要位于git add .(根目录):

Directory-A->  <====== there: git add -A .
   directory a
     file b
     file c
   directory b
   file a

git add -A .中的“Directory-A”会检测Directory-A中这些文件的删除情况以及directory a中添加的文件。

请参阅“Difference between “git add -A” and “git add .”:

答案 1 :(得分:4)

这是一个更好的选择。 请尝试以下方法:

git mv "file b" "file c" "directory a"

其次是:

git commit -am "hey I moved filed"

注意:我仅使用-am标志进行演示。这不是一个好习惯。您应该只提交包含相关更改的文件,这样可以使您的存储库可维护。

答案 2 :(得分:0)

我通常这样做,我相信它更容易,并且适用于整个项目:

  1. 将文件 b c 物理移动到目录 a (使用文件浏览器或命令行)。

    < / LI>
  2. 在项目中运行此Git命令:

    git add -u

    (它会自动从Git索引中删除所有已删除的文件:因为您在物理上移动了文件,Git会认为它们已从旧位置删除并在新位置删除了

  3. 现在将所有已更改/创建的文件添加到新提交:

    git add .

  4. 照常提交更改:

    git commit -m "Moved files b and c into directory a"

  5. 以下是有关git add -u命令的更多信息(-u--update的简写):

      

    ...删除并修改索引条目以匹配工作树,但不添加任何新文件...整个工作树中的所有跟踪文件都会更新...

    来源:http://www.git-scm.com/docs/git-add(寻找 - 更新部分)

答案 3 :(得分:0)

快速修复。运行:

git add -A :/
git status

然后确保仅要添加/删除/修改的文件已暂存。这非常重要。如果您意外地进行了无关的更改,请运行git reset。如果您确定要继续,请运行git commit

如果没有-Agit add只会暂存文件添加和修改。它不会删除整个文件,移动将变为副本。 git add -A删除不再存在的文件。

:/是一个快捷方式,表示存储库的根目录,而不是当前目录。如果当前目录是存储库的根目录,则可以省略它。

请注意,运行git add -A - 尤其是在存储库的根目录中 - 通常被认为是危险的。不要养成盲目承诺你所做的每一项改变的习惯:只有你知道自己想要改变的阶段。但是,当您移动大量文件时,这是一个非常方便的实用程序。

答案 4 :(得分:0)

这应该有用。

git mv“file a”“目录a”/

git mv“file b”“目录a”/

git commit -m“文件a和b被移动到目录a”

快乐编码。