问题标签 [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 投票
5 回答
59921 浏览

git - 如何推送到非裸 Git 存储库?

我通常通过 ssh(screen 和 vim)在远程服务器上工作,在那里我有一个 Git 存储库。有时我不在线,所以我的笔记本电脑上有一个单独的存储库(从我的远程克隆)。

但是,我无法从远程端的这个存储库中提取,因为我通常在防火墙后面或者我没有公共 IP。

我读过我应该只推送到一个裸存储库。然后我应该如何将我的更改推送到我的远程存储库?

0 投票
3 回答
10016 浏览

git - 创建将在服务器上的 git 存储库时,我可以将其转换为裸存储库吗?

我已经创建了一个存储库。我可以让它成为一个裸类型还是我应该重新开始?

0 投票
18 回答
243541 浏览

git - 如何将普通的 Git 存储库转换为裸存储库?

如何将“普通”Git 存储库转换为裸存储库?

主要区别似乎是:

  • 在普通的 Git 存储库中,存储库中有一个.git文件夹,其中包含所有相关数据和构成工作副本的所有其他文件

  • 在裸 Git 存储库中,没有工作副本,并且文件夹(我们称之为repo.git)包含实际的存储库数据

0 投票
9 回答
1677003 浏览

git - 如何正确强制 Git 推送?

我已经设置了一个远程非裸“主”存储库并将其克隆到我的计算机上。我做了一些本地更改,更新了我的本地存储库,并将更改推送回我的远程存储库。到那时为止一切都很好。

现在,我不得不更改远程仓库中的某些内容。然后我在本地仓库中更改了一些内容。我意识到不需要对远程仓库进行更改。所以我试图git push从我的本地仓库到我的远程仓库,但我得到了一个错误,比如:

为了防止您丢失历史记录,非快进更新被拒绝在再次推送之前合并远程更改。有关详细信息,请参阅“关于快进的说明”部分git push --help

我想这可能是一个

将强制我的本地副本将更改推送到远程副本并使其相同。它确实强制更新,但是当我返回远程仓库并提交时,我注意到文件包含过时的更改(主远程仓库以前拥有的更改)。

正如我在对其中一个答案的评论中提到的:

[我] 尝试强制,但是当返回主服务器以保存更改时,我得到了过时的暂存。因此,当我提交存储库时是不一样的。当我再次尝试使用 git push 时,我得到了同样的错误。

我该如何解决这个问题?

0 投票
6 回答
68853 浏览

git - 在 Git 中使用 receive.denyCurrentBranch 有什么后果?

我有一个 Git 存储库。我已经克隆了存储库并且可以提交我的本地更改。当我将更改推送到服务器时,它可以工作。

一旦我创建了一个分支,我就签出该分支,提交我的工作,然后签出 master 分支。然后我将本地更改合并到主分支中。当我尝试推送到服务器时,出现以下异常:

一种解决方案是运行以​​下命令:

在此之后它可以工作,但我想知道为什么我需要使用这个选项。这是唯一的选择吗?这样做的后果是什么?

我真正想做的是创建分支,将它们合并到主分支中,然后将我的更改推送到服务器。

0 投票
1 回答
4158 浏览

git - 为什么我的远程 Git 存储库在推送到它之后有未提交的更改?

我使用以下命令设置了一个新的 Git 存储库:

然后我克隆了这个存储库,进行了一些更改,提交了它们,然后尝试推送:

但是,当我cd回到plans-for-world-domination存储库时,暂存区域/索引中暂存的更改与我刚刚推送的更改相反:

为什么我的第一个 repo 有这些与我刚刚推送的相反的未分级更改,我该如何解决这个问题?

0 投票
1 回答
833 浏览

git - 为什么`git push`到非裸远程不是`git fetch`从远程的双重

首先,我了解推送到非裸 git 遥控器的相关性,包括使用 git config 选项receive.denyCurrentBranch和其他解决方法,所以我不是在寻找诸如这里的答案:

这更像是一个 git 实现/表示/哲学问题。

为什么git push <remote>非裸遥控器的 a 不能是双重的或与遥控器的 a 基本相同git fetch <source>?这样,我在遥控器上的本地工作目录可能已经过时(落后于新内容),我什至可能有本地更改(提前提交,甚至暂存/未暂存/隐藏/其他),但该工作目录完全不受推送操作影响?如果确实如此,那么一旦在遥控器上,我就可以合并或变基或任何必要的东西。事实上,这正是kernel.org git faq entry所声称的。

这样做的动机与其他提出“如何”问题的人一样:由于{firewall,nat,security}原因,我没有任何方法可以轻松地从远程访问推送的“源”。

可能我缺少一些关于 git 如何真正跟踪“如果我只理解 XXXX ”的基本知识,我就会知道答案;请赐教。

0 投票
2 回答
2721 浏览

git - git - 设置 receive.denycurrentbranch=ignore 后仍然无法推送到非裸仓库

我的设置如下:

我在我的 Mac 上运行 git 版本 2.3.2 (Apple Git-55)。这有一个非裸 git 存储库位于~/xyz.

然后我在同一台 Mac 上使用 VMWare Fusion 运行 Windows 7 64 位。VM 有 git 1.9.5,这是适用于 Windows 的最新 git 版本。从VM我可以克隆并从我的mac的非裸仓库中提取~/xyz,但我无法推送到它。我已按照此处的建议进行设置receive.denycurrentbranch=ignore~/xyz但仍然给我相同的错误消息:

我也尝试过设置receive.denycurrentbranch=updateInstead但仍然是相同的错误消息。

每次更改任何 git 设置后,我都重新启动了计算机。

该目录~/xyz是我的 VM 的共享目录,并且我已确保 VM 具有对其的读/写访问权限。

请问,有人有什么想法吗?

0 投票
2 回答
3781 浏览

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

我对自己创建的场景感到困惑。我在 Github 上创建了一个存储库(我们称之为 A)并将代码推送到它。之后,我将该存储库克隆到我的本地(我们称之为 B),这样我本地的来源就是远程存储库 A。

现在我从本地 B 克隆以创建另一个本地实例 C。现在我将 C 的远程来源作为 repo B,C 的上游是 A。

这类似于分叉,但在这里我在客户端而不是服务器端创建了克隆。

现在,如果我尝试使用从 C 到其原点 B 的推送:

然后我收到一条错误消息,指出我无法推送到非裸存储库。我知道推送到非裸存储库可能会导致远程提交丢失,而本地不存在。

但是,这种情况与我将代码从 B 推送到 A 的情况不同吗?

如果B到A是可能的,我很困惑,那么为什么不是C到B。

为了合并到 A,我们可以推送到上游:

0 投票
0 回答
343 浏览

git - 将裸 git 存储库转换为我可以看到文件的副本

我需要将本地裸 git 存储库转换为可以查看实际文件的另一种形式。我的存储库大小约为 13.5GB。本质上,存储库处于托管在远程服务器上时的状态。

我有一个如下的存储库结构:

在 git bash 中检查文件夹时,gitrepo文件夹为masterrepo文件夹为BARE:master.

我知道git-clone应该使用该命令来完成此操作,但是,当我git-clone将每个gitreporepo文件夹移至另一个目录时,我收到消息说我克隆了一个空目录。