标签: git-bare

Android repo脚本创建的.repo/projects /中的裸git存储库的目的是什么?

Android的源是由管理回购.使用repo进行同步时,.repo/projects/会创建一个名为的目录,其中包含所有直接在当前工作目录中检出的git存储库,只是以裸git格式.

repo维护裸git存储库的目的是什么?这些裸仓库如何被repo使用?

(注意:澄清:当我写"repo"时,我不是在讨论git存储库,我特别谈到repo由/为Android创建的脚本,用于维护包含Android源的所有git存储库.)

git android repository android-source git-bare

5
推荐指数
1
解决办法
1830
查看次数

裸存储库权限.

我在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)

git ubuntu git-bare

5
推荐指数
1
解决办法
8401
查看次数

是否有git活动日志?

这里出了点问题。请允许我提供背景。

今天,我尝试推送到我们公司的默认裸机msysgit Windows服务器,并在SO中到处都出现关于推送到非裸机可怕错误消息。我以为该消息很奇怪,因为我的服务器本来应该是光秃秃的。昨天,一切正常。

然后我注意到core.bare,以某种方式将其设置为false!这是一个回购协议--bare,其中从未包含“ .git”文件夹。然后我去检查,那里是一个.git文件夹,这让我感到不知所措!我问唯一可以在那做某事的人,当然,他没有。

编辑:我只是注意到它只发生在master分支和服务器的.git似乎是在10月1日创建的,这可能是正确的,因为我不master经常这样做。

该文件夹有3gb,光秃秃的文件夹(在.gitghostly 旁边有所有git结构)有6gb。虽然我的本地.git有16 GB,所以我不确定那里发生了什么……甚至更多,我无法检查git loggit reflog。设置为true或false都会得到相同的错误fatal: bad default revision 'HEAD'。现在我认为已经是时候考虑如何恢复回购了。。。

但是在经历所有恢复教条之前,我想知道:

  • 是否有某种git活动日志,以便我可以查看git中发出的所有命令,以及由谁发出?

找不到类似的东西,我担心没有。

git msysgit windows-server git-bare

5
推荐指数
1
解决办法
4144
查看次数

为什么不能合并到一个裸 git 存储库中?

为什么我不能merge进入裸回购?裸回购没有HEAD或没有工作树。在配置文件中,我们可以看到bare=true.

您也不能pull在裸仓库中(因为 pull = fetch & merge 和 merge 不起作用)。但是,你可以推送到一个裸仓库——为什么?据我所知,push还包含一个合并,但在这种情况下我们可以做得很好。

所以,问题可能是“git merge 是如何工作的?”。为什么需要一个HEAD?合并时它在做什么?

git git-merge git-bare

5
推荐指数
1
解决办法
1315
查看次数

从裸git文件仓库安装npm

如何从裸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)

git npm git-bare

5
推荐指数
2
解决办法
2692
查看次数

如何从*local bare*repository中克隆克隆

假设我的本地计算机上有一个裸存储库./new-bare.git.将其克隆到我机器上的其他位置的正确方法是什么?

git git-clone git-bare

5
推荐指数
2
解决办法
5889
查看次数

如何创建仅供查看的 git 克隆

我们使用 git 作为小型开发团队的 VCS。我将主存储库作为裸 git 存储库保留在我们的服务器上。

管理层和不参与该项目的人员需要能够在不了解 git 的情况下查看代码和文档,因此我还在我们的服务器上保留了一个克隆以供浏览。为了使克隆保持最新,我安装了一个钩子,每当有人提交到裸存储库时,该钩子就会更新克隆的主分支。

问题是这样的:一些笨蛋总是进入浏览克隆并开始修改代码,这会导致主分支推送操作失败。我想找出一种方法来对这个克隆强制实施只读策略,或者找出另一种方法来使其保持最新。

git git-bare git-branch

4
推荐指数
1
解决办法
5689
查看次数

Ansible:如何初始化 git bare 存储库并将其克隆到同一台机器?

我想问一下,如何使用 Ansible 来实现这样的情况。

\n\n

我的主要目标是 nit git bare 存储库并将其克隆到同一台计算机 (/var/www)。\n我通常的步骤是:

\n\n

1) git init \xe2\x80\x94bare (在 /git/project-name 中运行)

\n\n

2) git clone /git/project-name \xe2\x80\x94no-hardlinks (在 \xd0\xb2 /var/www 中运行)

\n\n

当我愿意使用 Ansible 来完成这种情况时,我无法实现第一步——如果是空的 git bare 存储库则初始化。

\n\n

Ansible git 模块要求“repo”参数应填写存储库地址,但如果我只是创建一个,我如何定义它?

\n\n

git: 回购=?? dest=/git/项目名称 bare=yes

\n

git git-bare ansible

4
推荐指数
1
解决办法
8930
查看次数

为什么我不能推送到非裸存储库的签出分支?

我对我创建的场景很困惑.我在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 dvcs github git-bare git-non-bare-repository

4
推荐指数
1
解决办法
2799
查看次数

如何将 vim-fugitive 与 git 裸存储库一起使用?

环境

设置

我使用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 存储库来做到这一点。

我尝试过的:

  1. 将存储库重命名为.cfg.git. 这并没有带来任何改变。表明这应该有效的问题

  2. 我尝试更改git-fugitiveb:git_dir的内部变量:

:let b:git_dir=/home/kunzaatko/.cfg/
Run Code Online (Sandbox Code Playgroud)
  1. 将工作目录更改为 git 目录,以便 fugitive 识别出它是 git 存储库:
:chdir /home/kunzaatko/.cfg/
Run Code Online (Sandbox Code Playgroud)

如果我知道如何做的话,什么是值得尝试的:

  1. 我认为可能有一种方法可以使用该git submodule命令将裸存储库放入范围内。问题在于将git 存储库放在哪里......我基于这种可能性的问题

问题

有没有办法将git bare存储库与git-fugitive一起使用?

(或任何其他可以解决我的用例的建议)

vim git-bare vim-fugitive

4
推荐指数
1
解决办法
1954
查看次数