我有一个bitbucket存储库,具有以下结构:
Directory-A->
directory a
directory b
file a
file b
file c
现在我想将文件“b”和文件“c”移动到“目录a”
当我在本地计算机上执行此操作并通过git add提交时。 我在目录a中获取文件b和文件c,但它们仍然存在于其外部。
答案 0 :(得分:4)
当我在本地计算机上执行此操作并通过git add提交时。我在目录a中获取文件b和文件c,但它们仍然存在于其外部。
这是因为你在git add .
而不是directory a
中的git add -A .
进行了Directory-A
。
首先,当您从根文件夹执行Directory-A
(git 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
中添加的文件。
答案 1 :(得分:4)
这是一个更好的选择。 请尝试以下方法:
git mv "file b" "file c" "directory a"
其次是:
git commit -am "hey I moved filed"
注意:我仅使用-am
标志进行演示。这不是一个好习惯。您应该只提交包含相关更改的文件,这样可以使您的存储库可维护。
答案 2 :(得分:0)
我通常这样做,我相信它更容易,并且适用于整个项目:
将文件 b 和 c 物理移动到目录 a (使用文件浏览器或命令行)。
< / LI>在项目中运行此Git命令:
git add -u
(它会自动从Git索引中删除所有已删除的文件:因为您在物理上移动了文件,Git会认为它们已从旧位置删除并在新位置删除了
现在将所有已更改/创建的文件添加到新提交:
git add .
照常提交更改:
git commit -m "Moved files b and c into directory a"
以下是有关git add -u
命令的更多信息(-u
是--update
的简写):
...删除并修改索引条目以匹配工作树,但不添加任何新文件...整个工作树中的所有跟踪文件都会更新...
来源:http://www.git-scm.com/docs/git-add(寻找 - 更新部分)
答案 3 :(得分:0)
快速修复。运行:
git add -A :/
git status
然后确保仅要添加/删除/修改的文件已暂存。这非常重要。如果您意外地进行了无关的更改,请运行git reset
。如果您确定要继续,请运行git commit
。
如果没有-A
,git 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”
快乐编码。