刚刚在Windows上安装了git.我将GIT_DIR变量设置为c:\ git \并验证此环境变量是由cygwin维护的(即echo $ GIT_DIR应该是什么).我去了我想创建git存储库的文件夹,让我们说c:\ www,然后运行:
git init
git add .
Run Code Online (Sandbox Code Playgroud)
然后我得到错误:
fatal: This operation must be run in a work tree
Run Code Online (Sandbox Code Playgroud)
我不确定出了什么问题,但是c:\ git目录有一个配置文件,上面写着:
[core]
repositoryformatversion = 0
filemode = false
bare = true
symlinks = false
ignorecase = true
Run Code Online (Sandbox Code Playgroud)
我很确定这不应该是裸露的,这是我们的问题.
Cas*_*bel 49
错误的直接原因是,是的,无法使用git-add裸存储库.根据定义,裸存储库没有工作树.git-add从工作树中获取文件并将它们添加到索引中,以准备提交.
不过,您可能需要在设置中加入一些思考.GIT_DIR是用于所有git命令的存储库目录.您是否真的尝试为您跟踪的所有内容创建单个存储库,可能是您系统中的所有内容?git存储库本质上跟踪单个目录的内容.您需要设置GIT_WORK_TREE一个包含您想要跟踪的所有内容的路径,然后您需要.gitignore阻止您不想跟踪的所有内容.
也许你正在尝试创建一个只跟踪的存储库c:\www?然后你应该把它放入c:\www(不要设置GIT_DIR).这是git的正常用法,其存储库位于"module"顶级目录的.git目录中.
除非你有充分的理由,否则我建议坚持使用git喜欢的方式.如果您有几件事要跟踪,您可能需要几个存储库!
Jac*_*man 16
万一发生在我身上的事情发生在其他人身上,我需要这样说:当我收到此错误时,我在我的项目中的.git目录中.我搜索并搜索了答案,但没有任何效果.我所要做的就是回到正确的目录.对我来说,这是一个面孔的时刻.如果那里的其他人和我一样愚蠢,我希望你发现这个答案很有帮助.
Fes*_*loe 10
只是克隆在另一个文件夹相同的项目和复制的git的/文件夹到您的项目.
例
创建临时文件夹:
mkdir temp
Run Code Online (Sandbox Code Playgroud)
切换到临时文件夹
cd temp/
Run Code Online (Sandbox Code Playgroud)
克隆temp文件夹中的相同项目:
git clone [-b branchName] git@path_to_your_git_repository
Run Code Online (Sandbox Code Playgroud)
将.git文件夹复制到您的项目中:
cp -R .git/ path/to/your/project/
切换到您的项目并运行 git status
删除的临时文件夹,如果你完成.
希望这会对某人有所帮助
显式设置GIT_DIR环境变量会强制git将给定目录用作git存储库.在正常使用期间永远不需要它.
在您的示例中,因为已经指定了a GIT_DIR并且未命名.git(前导点很重要)并且您没有提供--work-tree选项或设置GIT_WORK_TREE环境变量,所以当您说时,您需要一个裸存储库git init.
因为裸存储库没有工作树,所以对于裸存储库而言,大量命令没有意义.git add只是一个.
是否有特殊原因需要为git存储库使用非标准位置,而不是在.git工作树根下的子文件夹中?虽然可以安排它,但往往更多的工作,更容易出现用户错误.
这应该解决它:
git config --unset core.bare
Run Code Online (Sandbox Code Playgroud)
小智 6
创建一个简单的GIT存储库
一个小咆哮:git无法自己创建一个普通的裸存储库.愚蠢的git确实.
确切地说,无法克隆空存储库.所以一个空的存储库是一个无用的存储库.实际上,您通常会创建一个空的存储库并立即填充它:
git init
git add .
Run Code Online (Sandbox Code Playgroud)
但是,创建裸存储库时无法使用git add:
git --bare init
git add .
Run Code Online (Sandbox Code Playgroud)
给出错误"致命:此操作必须在工作树中运行".
你也看不出来:
Initialized empty Git repository in /home/user/myrepos/.git/
fatal: http://repository.example.org/projects/myrepos.git/info/refs not found: did you run git update-server-info on the server?
git --bare init
git update-server-info # this creates the info/refs file
chown -R <user>:<group> . # make sure others can update the repository
Run Code Online (Sandbox Code Playgroud)
解决方案是在其他地方创建另一个存储库,在该存储库中添加一个文件,并将其推送到裸存储库.
mkdir temp; cd temp
git init
touch .gitignore
git add .gitignore
git commit -m "Initial commit"
git push (url or path of bare repository) master
cd ..; rm -rf temp
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助你