如何在git中从另一个目录添加文件?

4

我使用浏览器直接在GitHub上创建了一个仓库,然后使用git bash将该仓库克隆到我的计算机上,我能够使用bash对readme文件进行测试提交。

当运行git --work-tree=yourSrcFolder add .时,我一直收到致命错误:此操作必须在工作树中运行。

我在这里这里寻找线索,但经过4个小时的尝试,我准备放弃Git的使用。


你为什么要使用 --work-tree?如果你不在仓库中,可能需要添加 --git-dir... 但这是使用 Git 的一种不寻常的方式。 - John Szakmeister
你把代码库克隆到哪里了,又试图从哪里提交文件呢?它们需要在同一个目录下。例如,如果你将其克隆到 git-repo 中,则在尝试添加/提交文件之前,你需要先进入 git-repo 目录。 - drone.ah
只需将文件复制到克隆的存储库中,然后使用 git add 即可。--work-tree 看起来像是一种反向操作。 - Martin
@jszakmeister 我在根目录,我想(master)。 - OutOFTouch
@drone.ah 克隆到了 Windows 用户文件夹的默认位置。 - OutOFTouch
3个回答

24

我的解决方法是创建一个硬链接到位于另一个目录中的文件。

您可以使用 ln 命令(在 Windows 上使用 mklink)来实现此操作(假设您当前在存储库目录中):

# this will add a file with the same name to the current directory and the same inode
ln ../../filename . 

然后将其添加到Git索引中:

git add filename

如果需要,就提交它:

git commit -m "add file from another directory"

请查看inodeln


1

只需将要添加的任何文件移动到存储库目录中,然后将它们添加到git跟踪中。

例如:假设您想将名为test.txt的文件添加到git存储库中。

  1. 将其移动到存储库目录中
  2. 运行git add test.txt
  3. 使用git commit -m“将测试文件添加到存储库”提交文件
  4. 将修改推送到远程服务器git push

有没有什么方法可以避免每次都添加文件?比如一次性添加整个目录。 - OutOFTouch
git add * 将会添加目录中的所有内容。 - drone.ah
我应该将我的文件夹添加到.git文件夹下还是主文件夹下? - OutOFTouch
我明白了,谢谢。现在只要GitHub for windows能工作就好了。 :) - OutOFTouch
2
永远不要触碰.git文件夹。如果您需要添加一个仓库,只需将该仓库复制到仓库目录中并运行git add .git add -A即可。这将把仓库及其所有内容添加到Git跟踪中。 - Gabriele Petronella

0

(Windows版本) 只需在目录链接处添加 mklink /j/J

在您的git目录中:

mklink /j DirName "C:\location\SourceDir\"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接