我在Ubuntu Linux下使用Git来同步和部署我的项目.
我在我的本地Linux工作机器上有Repo,在我的服务器上有两个repos,一个裸仓库和一个部署应用程序.
它总是工作正常,但现在我为我的其他网站创建了另一个回购,现在我收到此错误:
root@vserver5:/var/www/ninethsky# git pull origin master
fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
Run Code Online (Sandbox Code Playgroud)
所以我必须设置一个GIT_WORKING_TREE ENV-Var,但究竟是什么,在哪里设置呢?
这是我的repo的.git/config:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = /home/git/ninethsky/.git
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
bare = true在我当地的工作机器上有另一个回购和回购.
然后我删除了所有的回购,但最初的回购,现在我得到:
root@vserver5:/var/www/ninethsky# git init
fatal: GIT_WORK_TREE (or --work-tree=<directory>) not allowed without specifying GIT_DIR (or --git-dir=<directory>)
root@vserver5:/var/www/ninethsky# git init --git-dir=/var/www/ninethsky
error: unknown option `git-dir=/var/www/ninethsky'
Run Code Online (Sandbox Code Playgroud)
我git init通过取消设置为空白的GIT_WORK_TREE 解决了这个问题.GIT_WORK_TREE和GIT_DIR未设置.git init再次工作,仍然有一个问题,git add . …
我有时间让git与我的用户定义的工作树合作,该工作树存在于包含我的.git目录的文件夹之外.
基本上设置是这样的:我有两个目录,一个名为"git-worktree",其中包含我想要跟踪的文件,另一个名为"git-dir",其中包含存储库的.git文件夹,即GIT_DIR.
我通过cd进入文件夹"git-dir"并运行:
git --git-dir=./.git --work-tree=/Users/braitsch/Test/git-worktree/ init
Run Code Online (Sandbox Code Playgroud)
这成功初始化了存储库,当我在"git-dir"文件夹中时,我可以添加工作树中的文件,运行git status并提交它们.凉.
当我尝试运行git stash时,这里出现了踢球,这让我误以为:
fatal: /usr/local/git/libexec/git-core/git-stash cannot be used without a working tree.
Run Code Online (Sandbox Code Playgroud)
现在这是BS,因为我知道(或者至少我认为)我将工作树设置为包含我想要跟踪的文件的"git-worktree"文件夹.
git config --local -l向我展示了以下内容:
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.worktree=/Users/braitsch/Test/git-worktree
core.ignorecase=true
Run Code Online (Sandbox Code Playgroud)
我甚至尝试手动将.git文件夹添加到本地配置文件,看看是否有帮助,但无济于事.
core.gitdir=/Users/braitsch/Test/git-dir/.git
Run Code Online (Sandbox Code Playgroud)
现在来这里是踢球者.如果我将工作树设置为git-dir的父目录,那么 Git stash将起作用.例如,如果我将工作树设置为说出我的主目录.
core.worktree=/Users/braitsch/
Run Code Online (Sandbox Code Playgroud)
所以我给你们的问题是我错过了什么设置告诉git允许我的工作树存在于文件系统的任何地方,而不仅仅是沿着git-dir的父路径返回到根目录?当然必须有一种方法可以将你的git-dir和你的工作树放在你想要的任何地方,然后告诉git他们有什么工作吗?非常感谢阅读.任何见解都将得到慷慨的赞赏.
我正在开发一个 asterisk 项目,想将代码放入 Git 中进行版本跟踪。
以下是代码所在的 3 个目录:
/etc/asterisk/custom/var/lib/asterisk/agi-bin/var/www/html/我不想在 Git 中将它们作为 3 个独立的存储库进行跟踪。我如何将所有内容放入一个存储库中?
我的谷歌没有想出任何相关的东西。