标签: git-non-bare-repository

如何正确强制推送Git?

我已经设置了一个远程非裸"主"仓库并将其克隆到我的电脑上.我做了一些本地更改,更新了我的本地存储库,并将更改推送回我的远程仓库.到目前为止,情况还不错.

现在,我不得不改变远程仓库中的东西.然后我在当地的回购中改变了一些东西.我意识到不需要改变远程仓库.所以我尝试git push从我的本地仓库到我的远程仓库,但我收到的错误如下:

为防止您丢失历史记录,拒绝非快进更新在再次推送之前合并远程更改.有关git push --help详细信息,请参阅"关于快进的注意事项"部分.

我以为那可能是一个

git push --force
Run Code Online (Sandbox Code Playgroud)

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

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

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

我该如何解决这个问题?

git push git-push git-non-bare-repository

1206
推荐指数
11
解决办法
118万
查看次数

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

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

主要区别似乎是:

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

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

git version-control git-clone git-bare git-non-bare-repository

580
推荐指数
7
解决办法
21万
查看次数

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

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

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

我已经读过,我应该只是推到一个裸存储库.我应该如何将更改推送到远程存储库?

git git-push git-non-bare-repository

139
推荐指数
4
解决办法
5万
查看次数

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

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

一旦我创建了一个分支,我就会检查分支,提交我的工作,然后检查主分支.然后我将我的本地更改合并到主分支中.当我尝试推送到服务器时,我得到以下异常:

Welcome to Git (version 1.7.11-preview20120620)

Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.

$ git push origin master:master
 Counting objects: 9, done.
 Delta compression using up to 4 threads.
 Compressing objects: 100% (7/7), done.
 Writing objects: 100% (8/8), 13.68 KiB, done.
 Total 8 (delta 2), reused 1 (delta 0)
 Unpacking objects: 100% (8/8), done.
 remote: error: refusing to update checked out branch: refs/heads/master
 remote: error: By default, …
Run Code Online (Sandbox Code Playgroud)

git git-push git-config git-non-bare-repository

42
推荐指数
4
解决办法
6万
查看次数

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

我已经创建了一个存储库.我可以把它做成裸露的类型,还是我可以重新开始?

git git-bare git-non-bare-repository

29
推荐指数
3
解决办法
9814
查看次数

为什么不是提交,而不能从中创建分支?

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

  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:参考资料/ for / master

我在第4步中遇到问题。出现以下错误:

fatal: 'machine3/test-branch' is not a commit and a branch 'test-branch' cannot be created from it
Run Code Online (Sandbox Code Playgroud)

添加

当我执行

git rev-parse machine3/test-branch
Run Code Online (Sandbox Code Playgroud)

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

machine3/test-branch
fatal: ambiguous argument 'machine3/test-branch': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, …
Run Code Online (Sandbox Code Playgroud)

git git-non-bare-repository

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

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

我对我创建的场景很困惑.我在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
查看次数

git-设置了receive.denycurrentbranch = ignore后仍然不能推送到非裸仓库

我的设置如下:

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

然后,我在同一台Mac上使用VMWare Fusion运行Windows 7 64bit。VM具有git 1.9.5,这是Windows的最新git版本。从VM中,我可以克隆并从Mac的非裸仓库中拉出~/xyzOK,但是我不能将其推入。我遵循了这里的建议并继续使用receive.denycurrentbranch=ignore~/xyz但仍然给我相同的错误消息:

remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can …
Run Code Online (Sandbox Code Playgroud)

git git-push git-non-bare-repository

3
推荐指数
1
解决办法
2632
查看次数

为什么我的远程Git存储库在推送后会有未提交的更改?

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

mkdir plans-for-world-domination
cd plans-for-world-domination
git init
echo "MWA HA HA HA HA!" > plans.txt
git add .
git commit -m "Beginning my plans..."
Run Code Online (Sandbox Code Playgroud)

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

cd ..
git clone plans-for-world-domination clone
cd clone
echo "Step 1: set up super secret spy base in Cleveland, Ohio" >> plans.txt
git commit -am "Update plans"
git push origin master
Run Code Online (Sandbox Code Playgroud)

当我cd回到plans-for-world-domination存储库时,staging-area/index中有一些更改与我刚刚推送的更改相反:

$ cd ../plans-for-world-domination
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD …
Run Code Online (Sandbox Code Playgroud)

git git-push git-non-bare-repository

2
推荐指数
1
解决办法
3076
查看次数