我在ubuntu服务器上设置了git,我正在将本地repo推送到服务器并获取下面的错误.当我更改它的两个文件夹的权限时.我只是想了解为什么当我设置git init --bare它时不仅仅使用它创建的权限.也就是777要对这些文件夹的权限最好?是否有更合法的方法来解决这个问题?
第一个错误:
error: insufficient permission for adding an object to repository database ./objects
Run Code Online (Sandbox Code Playgroud)
第一个解决方案:
sudo chmod 777 objects/
Run Code Online (Sandbox Code Playgroud)
第二个错误:
fatal: Unable to create '/srv/git/example.com.git/refs/heads/master.lock': Permission denied
Run Code Online (Sandbox Code Playgroud)
第二个解决方案:
sudo chmod 777 refs/heads/
Run Code Online (Sandbox Code Playgroud) 这里出了点问题。请允许我提供背景。
今天,我尝试推送到我们公司的默认裸机msysgit Windows服务器,并在SO中到处都出现关于推送到非裸机的可怕错误消息。我以为该消息很奇怪,因为我的服务器本来应该是光秃秃的。昨天,一切正常。
然后我注意到core.bare,以某种方式将其设置为false!这是一个回购协议--bare,其中从未包含“ .git”文件夹。然后我去检查,那里是一个.git文件夹,这让我感到不知所措!我问唯一可以在那做某事的人,当然,他没有。
编辑:我只是注意到它只发生在master分支和服务器的.git似乎是在10月1日创建的,这可能是正确的,因为我不master经常这样做。
该文件夹有3gb,光秃秃的文件夹(在.gitghostly 旁边有所有git结构)有6gb。虽然我的本地.git有16 GB,所以我不确定那里发生了什么……甚至更多,我无法检查git log或git reflog。设置为true或false都会得到相同的错误fatal: bad default revision 'HEAD'。现在我认为已经是时候考虑如何恢复回购了。。。
但是在经历所有恢复教条之前,我想知道:
找不到类似的东西,我担心没有。
为什么我不能merge进入裸回购?裸回购没有HEAD或没有工作树。在配置文件中,我们可以看到bare=true.
您也不能pull在裸仓库中(因为 pull = fetch & merge 和 merge 不起作用)。但是,你可以推送到一个裸仓库——为什么?据我所知,push还包含一个合并,但在这种情况下我们可以做得很好。
所以,问题可能是“git merge 是如何工作的?”。为什么需要一个HEAD?合并时它在做什么?
如何从裸git repo文件夹安装npm模块?
所以我有一个包含git repo的文件夹。它是使用创建的git init --bare。现在我想让npm获取master分支的最新版本,并且有package.json文件可用。
什么是正确的方法?
我尝试了类似的东西:
npm install git+file:///W:/my/git/repo/ -g
npm install git+file:///W:/my/git/repo/#master -g
npm install file:///W:/my/git/repo/ -g --from-git
Run Code Online (Sandbox Code Playgroud)
可能吗?
npm日志:
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'install',
1 verbose cli 'file:///W:/my/git/repo/',
1 verbose cli '-g',
1 verbose cli '--from-git' ]
2 info using npm@1.4.14
3 info using node@v0.10.29
4 verbose node symlink C:\Program Files\nodejs\\node.exe
5 verbose cache add …Run Code Online (Sandbox Code Playgroud) 假设我的本地计算机上有一个裸存储库./new-bare.git.将其克隆到我机器上的其他位置的正确方法是什么?
我们使用 git 作为小型开发团队的 VCS。我将主存储库作为裸 git 存储库保留在我们的服务器上。
管理层和不参与该项目的人员需要能够在不了解 git 的情况下查看代码和文档,因此我还在我们的服务器上保留了一个克隆以供浏览。为了使克隆保持最新,我安装了一个钩子,每当有人提交到裸存储库时,该钩子就会更新克隆的主分支。
问题是这样的:一些笨蛋总是进入浏览克隆并开始修改代码,这会导致主分支推送操作失败。我想找出一种方法来对这个克隆强制实施只读策略,或者找出另一种方法来使其保持最新。
我想问一下,如何使用 Ansible 来实现这样的情况。
\n\n我的主要目标是 nit git bare 存储库并将其克隆到同一台计算机 (/var/www)。\n我通常的步骤是:
\n\n1) git init \xe2\x80\x94bare (在 /git/project-name 中运行)
\n\n2) git clone /git/project-name \xe2\x80\x94no-hardlinks (在 \xd0\xb2 /var/www 中运行)
\n\n当我愿意使用 Ansible 来完成这种情况时,我无法实现第一步——如果是空的 git bare 存储库则初始化。
\n\nAnsible git 模块要求“repo”参数应填写存储库地址,但如果我只是创建一个,我如何定义它?
\n\ngit: 回购=?? dest=/git/项目名称 bare=yes
\n我对我创建的场景很困惑.我在Github上创建了一个存储库(让我们称之为A)并将代码推送到它.之后,我将该存储库克隆到我的本地(让我们称之为B),这样我本地的来源就是远程回购A.
现在我从我的本地B克隆来创建另一个本地实例C.现在我有远程起源的C作为repo B而C的上游是A.
A ? B ? C
Run Code Online (Sandbox Code Playgroud)
这类似于分叉,但在这里我在客户端而不是服务器端创建了克隆.
现在,如果我尝试使用从C到其原点B的推送:
git push origin
Run Code Online (Sandbox Code Playgroud)
然后我收到一个错误,指出我无法推送到非裸存储库.我知道推送到非裸存储库可能会导致本地远程不存在的提交丢失.
但是,这种情况与我将代码从B推送到A的情况类似吗?
我很困惑,如果B到A是可能的,那么为什么C到B.
为了合并到A,我们可以推送到上游:
git push upstream
Run Code Online (Sandbox Code Playgroud) 我使用git bare存储库来版本化我的配置文件。我可以使用与使用普通git存储库相同的命令,只需包含一些标志:
git --git-dir=/home/kunzaatko/.cfg/ --work-tree=/home/kunzaatko/ __command__
Run Code Online (Sandbox Code Playgroud)
代替
git __command__
Run Code Online (Sandbox Code Playgroud)
我将vim-fugitive与普通git存储库结合使用,主要是为了进行重大更改,并通过部分暂存(仅一组离散的块/更改)并单独提交它们来将其添加到许多不同的提交中。我用:Gdiff它来获得我可以使用的漂亮且高效的界面。
我想用我的配置 git bare 存储库来做到这一点。
将存储库重命名为.cfg.git. 这并没有带来任何改变。表明这应该有效的问题
我尝试更改git-fugitiveb:git_dir的内部变量:
:let b:git_dir=/home/kunzaatko/.cfg/
Run Code Online (Sandbox Code Playgroud)
:chdir /home/kunzaatko/.cfg/
Run Code Online (Sandbox Code Playgroud)
git submodule命令将裸存储库放入范围内。问题在于将git 存储库的根放在哪里......我基于这种可能性的问题有没有办法将git bare存储库与git-fugitive一起使用?
(或任何其他可以解决我的用例的建议)
git-bare ×10
git ×9
android ×1
ansible ×1
dvcs ×1
git-branch ×1
git-clone ×1
git-merge ×1
github ×1
msysgit ×1
npm ×1
repository ×1
ubuntu ×1
vim ×1
vim-fugitive ×1