0

目前,我有 bonobo git 服务器应该至少在 2 台机器之间“处理同步”。

它工作正常,但最近我遇到了一个大问题,以及与 git 本身相关的第二个问题:

  1. 我不能简单地从每个客户端推送到它而不遇到褪色的“非快进”问题,虽然我相信这是倭黑猩猩和裸服务器的问题,但它的创建者简要地乞求不同

    以下不是复制粘贴,但它是我遇到问题时使用的命令,据我回忆,警告应该与此非常相似:

    git push -u "server"
    ! [rejected]        server/master     -> master  (non-fast-forward)
    
  2. 今天,我什至无法从一个客户获取另一个客户,而不会遇到“非快进”问题。然后我尝试使用镜像选项从它推送到服务器,由于问题 #1,这是唯一可以推送到服务器的选项,并从我的机器上的服务器中拉取。令我惊讶的是,这奏效了!但是现在尝试从另一台机器获取或拉取,问题仍然存在。我的问题是:为什么?!

    以下只是来自Git Extensions的复制和粘贴:

    git fetch --progress "client" 
    Done
    From \\\CLIENT\project\git
    ! [rejected]        master     -> client/master  (non-fast-forward)
    

    我实际上已经使用修复了这个问题git fetch -f "client",但我仍然不知道发生了什么。

免责声明:现在我已经要去git-scm.com尝试并详细了解 git 是如何工作的。也许我什至不应该尝试“完全同步所有内容”......

--

编辑:除了明显的“之前未拉动”问题外,我还发现了可能发生这种情况的两个原因,但在我的情况下没有一个帮助解决:rebase用于编辑已经在其他地方复制的过去提交或具有不同名称的相同分支,这master至少必须发生。后面的这个很有意义,除了它有时会起作用,并且在一些推动之后它会停止工作。另外,在获取方面,使用fetch -f,它没有破坏任何分支。所以不是这样。

4

2 回答 2

2

您需要在推送之前更新客户端(git pull例如)或使用强制推送(git push --force),但这种情况下的提交可能会在远程端丢失并non-fast-forward在其他客户端上触发消息。

于 2012-02-28T14:48:48.253 回答
-3

正如我所承诺的那样,尽管我已经阅读了很多资源,但我仍然远没有 100% 有信心处理 git 的各个方面。尽管如此,我终于可以在这里找到解决我的问题的方法,而且它已经稳定了至少 1 个月。

对于第一个问题(非快进的事情),我发现了 3 个原因。

我将主要从倭黑猩猩论坛复制:

  1. git commit --ammend

    我不时使用它,我很确定如果你推送一个提交然后修改它并尝试再次推送它,它将不会被接受。我发现解决这个问题的唯一方法是用git push --mirror

  2. 签出较旧的提交

    如果本地和服务器中都有一个分支,但我的本地分支位于服务器中同一分支之前的历史记录中,则推送将失败。这有一个简单的解决方案:检查比推送的最新或更新的提交。

  3. 冲突

    正如许多人所说,合并. 如果同一个分支(通常是主分支)在不同的地方,因为一台机器将其推送到服务器而没有先合并,那么另一台机器必须拉取、合并,然后才能正常推送。

这第三点是我认为它变得非常奇怪的地方......据我了解,在一个裸存储库中,不需要合并,因为它不会保持分支或标签的一致性跟踪,它只会注册它们的位置是。反正...

对于第二个问题,它很可能也是这三个原因之一。

于 2012-04-09T18:13:41.580 回答