问题标签 [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.
git - 如何推送到非裸 Git 存储库?
我通常通过 ssh(screen 和 vim)在远程服务器上工作,在那里我有一个 Git 存储库。有时我不在线,所以我的笔记本电脑上有一个单独的存储库(从我的远程克隆)。
但是,我无法从远程端的这个存储库中提取,因为我通常在防火墙后面或者我没有公共 IP。
我读过我应该只推送到一个裸存储库。然后我应该如何将我的更改推送到我的远程存储库?
git - 创建将在服务器上的 git 存储库时,我可以将其转换为裸存储库吗?
我已经创建了一个存储库。我可以让它成为一个裸类型还是我应该重新开始?
git - 如何将普通的 Git 存储库转换为裸存储库?
如何将“普通”Git 存储库转换为裸存储库?
主要区别似乎是:
在普通的 Git 存储库中,存储库中有一个
.git
文件夹,其中包含所有相关数据和构成工作副本的所有其他文件在裸 Git 存储库中,没有工作副本,并且文件夹(我们称之为
repo.git
)包含实际的存储库数据
git - 如何正确强制 Git 推送?
我已经设置了一个远程非裸“主”存储库并将其克隆到我的计算机上。我做了一些本地更改,更新了我的本地存储库,并将更改推送回我的远程存储库。到那时为止一切都很好。
现在,我不得不更改远程仓库中的某些内容。然后我在本地仓库中更改了一些内容。我意识到不需要对远程仓库进行更改。所以我试图git push
从我的本地仓库到我的远程仓库,但我得到了一个错误,比如:
为了防止您丢失历史记录,非快进更新被拒绝在再次推送之前合并远程更改。有关详细信息,请参阅“关于快进的说明”部分
git push --help
。
我想这可能是一个
将强制我的本地副本将更改推送到远程副本并使其相同。它确实强制更新,但是当我返回远程仓库并提交时,我注意到文件包含过时的更改(主远程仓库以前拥有的更改)。
正如我在对其中一个答案的评论中提到的:
[我] 尝试强制,但是当返回主服务器以保存更改时,我得到了过时的暂存。因此,当我提交存储库时是不一样的。当我再次尝试使用 git push 时,我得到了同样的错误。
我该如何解决这个问题?
git - 在 Git 中使用 receive.denyCurrentBranch 有什么后果?
我有一个 Git 存储库。我已经克隆了存储库并且可以提交我的本地更改。当我将更改推送到服务器时,它可以工作。
一旦我创建了一个分支,我就签出该分支,提交我的工作,然后签出 master 分支。然后我将本地更改合并到主分支中。当我尝试推送到服务器时,出现以下异常:
一种解决方案是运行以下命令:
在此之后它可以工作,但我想知道为什么我需要使用这个选项。这是唯一的选择吗?这样做的后果是什么?
我真正想做的是创建分支,将它们合并到主分支中,然后将我的更改推送到服务器。
git - 为什么我的远程 Git 存储库在推送到它之后有未提交的更改?
我使用以下命令设置了一个新的 Git 存储库:
然后我克隆了这个存储库,进行了一些更改,提交了它们,然后尝试推送:
但是,当我cd
回到plans-for-world-domination
存储库时,暂存区域/索引中暂存的更改与我刚刚推送的更改相反:
为什么我的第一个 repo 有这些与我刚刚推送的相反的未分级更改,我该如何解决这个问题?
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 ”的基本知识,我就会知道答案;请赐教。
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 具有对其的读/写访问权限。
请问,有人有什么想法吗?
git - 为什么我不能推送到非裸存储库的签出分支?
我对自己创建的场景感到困惑。我在 Github 上创建了一个存储库(我们称之为 A)并将代码推送到它。之后,我将该存储库克隆到我的本地(我们称之为 B),这样我本地的来源就是远程存储库 A。
现在我从本地 B 克隆以创建另一个本地实例 C。现在我将 C 的远程来源作为 repo B,C 的上游是 A。
这类似于分叉,但在这里我在客户端而不是服务器端创建了克隆。
现在,如果我尝试使用从 C 到其原点 B 的推送:
然后我收到一条错误消息,指出我无法推送到非裸存储库。我知道推送到非裸存储库可能会导致远程提交丢失,而本地不存在。
但是,这种情况与我将代码从 B 推送到 A 的情况不同吗?
如果B到A是可能的,我很困惑,那么为什么不是C到B。
为了合并到 A,我们可以推送到上游:
git - 将裸 git 存储库转换为我可以看到文件的副本
我需要将本地裸 git 存储库转换为可以查看实际文件的另一种形式。我的存储库大小约为 13.5GB。本质上,存储库处于托管在远程服务器上时的状态。
我有一个如下的存储库结构:
在 git bash 中检查文件夹时,gitrepo
文件夹为master
,repo
文件夹为BARE:master
.
我知道git-clone
应该使用该命令来完成此操作,但是,当我git-clone
将每个gitrepo
和repo
文件夹移至另一个目录时,我收到消息说我克隆了一个空目录。