问题标签 [git-non-bare-repository]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
112212 浏览

git - 为什么它不是提交并且不能从中创建分支?

我需要使用复杂的存储库配置。我有 5 个:

  1. 机器 1 上的远程中央存储库。
  2. 我笔记本上的本地存储库(机器 2)。
  3. 机器 3 上的裸存储库。
  4. 机器 3 上的存储库。
  5. 机器 4 上的存储库,我们在其中进行代码审查。

所以,我的理解是它是这样工作的:

  1. 在我的笔记本电脑(机器 2)上,我从位于机器 1 上的中央存储库中克隆/提取。
  2. 我将本地存储库推送到机器 3(使用裸存储库作为“中间”)。

现在我在机器 3 上做了一些更改,我想将这些更改推送到机器 4。以下是我需要遵循的说明:

  1. 在机器 3 上,在您的测试分支中完成所有工作,提交。
  2. 推送到机器 3 上的裸仓库:git push origin test-branch
  3. 在您的笔记本电脑上:从 machine-3 存储库中获取新提交:git fetch machine3
  4. 从机器 3 检查您的分支: git checkout -b test-branch machine-3/test-branch
  5. 从 machine-4 获取提交:git fetch origin
  6. git rebase 起源/主
  7. git push origin HEAD:refs/for/master

第 4 步有问题。我收到以下错误:

添加

当我执行

在我的笔记本电脑(机器 2)上,我得到:

0 投票
1 回答
1096 浏览

git - Git推送失败:无法将对象迁移到永久存储

我有一个本地存储库,我已将其克隆到同一台机器上的另一个目录。

当我对克隆和提交进行一些更改然后推送时,我收到以下错误消息

我再次强调,我从中进行推送的克隆存储库和目标存储库都是本地的,并且我对两者都有读/写访问权限。

遇到过这篇文章 git 是什么意思,“无法将对象迁移到永久存储”?

我知道我在远程本地存储库上有权限问题,所以我检查了本地远程目录上的文件:.git/objects/pack 确实有一个文件是只读的

但是按照第一个答案评论中的建议在对象文件夹上执行 chmod -R g+w * 并没有帮助,因为在下一次推送时,文件从 rw 更改回 r-

我也试过

git config core.sharedRepository true 就像在这篇文章中一样

https://serverfault.com/questions/26954/how-do-i-share-a-git-repository-with-multiple-users-on-a-machine

但再次推动会产生相同的错误

0 投票
2 回答
320 浏览

git - Git clone 防止克隆工作副本(非裸)存储库

如果您克隆 git 工作副本(带有工作树的存储库)更改一些文件,提交并尝试推送,您将收到一条消息:

这对我来说是可以理解和想要的行为。

我想防止意外克隆存储库的工作副本。

如何防止 git clone 克隆工作副本而不是远程裸存储库,并在尝试克隆工作副本时发出错误信号?

如果尝试克隆工作副本而不是裸远程存储库,是否有任何命令行开关会导致 git clone 非零退出状态?

如果不是,那么如何检查存储库位置(url 或 dir 的路径)是否包含裸存储库,以便我可以在克隆之前在 bash 中对其进行测试。

请注意,存储库的工作副本并不一定意味着它是本地的,因为它也可以由远程共享。

在我的情况下,应该只允许 git clone 与 git 裸存储库一起使用,如果用于克隆工作副本,则会发出错误信号。