相关疑难解决方法(0)

未知选项`allow-unrelated-histories'

我有两个回购:市场和Android.当我将Android合并到Market时,请使用以下步骤:

cd market
git remote add android ../android
git fetch android
git merge --allow-unrelated-histories android/master
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

ei @ localhost:〜/ market $ git merge --allow-unrelated-histories android/master error:unknown option`allow-unrelated-histories'

我的环境:Ubuntu LTS 14.04

ei@localhost:~/market$ git --version
git version 1.9.1
Run Code Online (Sandbox Code Playgroud)

这个选项是从Git合并中删除的,还是需要一些额外的配置?

任何帮助将不胜感激,谢谢!

git version-control android branch git-merge

7
推荐指数
1
解决办法
7191
查看次数

在 git 中合并拆分历史记录

我一直在玩变基,试图拆分和合并历史记录,如下所述:https : //git-scm.com/book/en/v2/Git-Tools-Replace

这是我的带有拆分历史记录的测试存储库:https : //github.com/defufna/split-history

请注意,“初始提交”和“添加描述”提交都指向同一棵树。我要做的是合并这两个历史记录(同时保持合并)。我用过这个:

git rebase --rebase-merges --onto history 94da9b0f
Run Code Online (Sandbox Code Playgroud)

这有效,但我在 084dae5 遇到冲突。这是一个解决修改/删除冲突的合并,它需要我手动解决这个冲突。

我这样做是为了准备更大的 repo 合并,在那里我将不得不做类似的事情,但有 50k 次提交,所以我想避免手动解决冲突。我知道 git replace 可以解决我的问题,但我很好奇是否可以在不替换的情况下做到这一点。我还想在历史分支中保留提交的 sha 值。

编辑:

所以我已经设法做我想做的事,但我不确定这个想法有多好。我已经添加了 -i 到 rebase,当我得到 todo 文件时,我已经改变了每个

merge -C 9751be2 Merge # Merge
Run Code Online (Sandbox Code Playgroud)

线入:

exec git checkout `git commit-tree '9751be2^{tree}' -p HEAD -p refs/rewritten/Merge -m Merge`
Run Code Online (Sandbox Code Playgroud)

我基本上是在遇到合并时告诉 git 重用原始合并中的树。

它按预期工作(目前),但速度要慢得多。有一个更好的方法吗?

git rebase

7
推荐指数
1
解决办法
333
查看次数

为什么我不能git subree pull --rebase?

我已经为我的项目添加了另一个repo git subtree add,现在当我从子树项目更新我的主项目时git subtree pull --prefix=subtree-dir subtree-origin subtree-branch --squash,我最终在我的主历史中有两个新的提交,前者说"Squashed"子树 - dir /'从618c8ff..822004d更改",后者是引用前者的合并提交.

这感觉很糟糕.

我理解压缩提交是必要的(或者是子树项目的所有干预提交),但有没有办法避免第二次合并提交?我很想发现一种行为很像的模式git pull --rebase.

万一你今天没有听过,你太棒了.

git git-subtree

6
推荐指数
1
解决办法
598
查看次数

Git“强制推送”从新的本地存储库到远程,但保留远程提交历史

我有一个可以运行的实时网站,我确信它拥有每个文件的最新、正确版本,它不是用 Git 管理的。我还有一个 Bitbucket Git 存储库,表面上是用于该站点的,但其中存在重大问题和过时的内容。

我想做的git init是实时文件,然后以某种方式将它们推送到远程,以便最终的远程 HEAD 状态与我的实时文件的状态完全相同,而且远程提交历史记录保持不变。

我想这样做,以便实时工作树永远不会处于不同的状态。我想过创建一个新分支,远程拉动 master,然后强制合并它们或其他什么,但据我所知,我将不得不检查 master 分支并在那些短暂的时刻弄乱实时文件在合并之前和合并期间,假设一切正常。

我还想过通过 FTP 传输文件,在本地计算机上解决所有冲突/合并,然后从那里推送到 Bitbucket 并下拉到实时存储库。但这也让人感觉不可靠和冒险。

我知道我永远不应该像这样操作实时代码,但这是我陷入的情况,我只想以最简单/最安全的方式使其工作。

(我确定这是一个重复的问题,但我的 Google-fu 没有让我失望;在引导我查看以前的答案时请保持温和。)

git version-control git-push

5
推荐指数
1
解决办法
956
查看次数

如何在CloudBuild中比较Git分支?

我有一个 CloudBuild 触发器设置来监听 bitbucket 存储库。构建完成后,我有一个云函数,它会向提交的作者发送一条松弛消息。

我遇到的问题是 bitbucket 触发repo:push分支创建(通过他们的 UI)。这会触发构建,然后通知源分支的最后一次提交的作者新的构建已准备就绪。

为了防止这种情况,我决定如果触发分支上的最后一次提交也在 master(源分支)上,则防止触发松弛消息。我已经尝试了多种方法,但触发时使用的 CloudBuild 克隆似乎不是完整克隆。我不太清楚本地存储库处于什么状态...看起来 CloudBuild 可能会master在本地调用分支,无论哪个分支触发了构建?例如,这样的命令:

- name: 'gcr.io/cloud-builders/git'
  entrypoint: /bin/bash
  args:
  - -c
  - |
    # Write the author name to the cloud build output
    git show -s --format='%ae' $COMMIT_SHA >> /builder/outputs/output
    # Write the latest commit to the output. 
    git rev-list ^master $COMMIT_SHA -1 >> /builder/outputs/output
Run Code Online (Sandbox Code Playgroud)

即使存在mybranch无法访问的更改,也会提供空白输出master。以下类似命令具有相同的结果:

git log master..$COMMIT_SHA --oneline -1 >> /builder/outputs/output
Run Code Online (Sandbox Code Playgroud)

当我在本地运行时,这两个命令都正确返回分支提交。

如果我添加一些像这样的显式结账步骤(在 rev-list 之前):

git checkout origin …
Run Code Online (Sandbox Code Playgroud)

git bitbucket google-cloud-platform google-cloud-build

5
推荐指数
0
解决办法
2053
查看次数

将项目上传到github时如何解决“拒绝合并无关的历史记录”?

我已经在Windows机器上安装了Github桌面和git,我有一个github帐户并创建了一个虚拟存储库。

当我打算通过git bash命令行上传程序包时,它失败并显示错误:致命:拒绝合并无关的历史记录

我使用几种方法来解决此问题,方法是使用该社区中的现有解决方案,但仍然无法解决问题。有人知道解决此问题的任何技巧吗?如何将项目成功上传到github?

git github git-bash

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

无法合并分支:拒绝合并不相关的历史记录

我在 Git 上创建了一个新的远程存储库 ('myRepo')。我选中了“添加 README.md”复选框,这也对此“myRepo”存储库进行了提交。

然后我创建一个新文件夹,在其中添加一些文件并执行以下操作:

git init
git add .
git commit -m "init"
git remote add origin https://github.com/jozinho947/myRepo.git

# get the READ.me fetched on the 'origin/master' branch locally
git fetch

# get the READ.me merged in my local 'master' where i'm pointing
git merge origin/master
Run Code Online (Sandbox Code Playgroud)

然后我有这个错误:

fatal: refusing to merge unrelated histories
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我不能这样做,以及如何解决这个问题。

git github git-merge git-fetch

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

如何将Git分支标记为合并而不添加历史记录(Git merge -s ours --squash)

我有两个分支,它们有效地包含相同的文件,但由于遗留原因它们是分开的.称他们为A和B.

如果我运行git log --oneline A ^BGit输出114提交,这是预期的.

然后我可以git merge -s ours --allow-unrelated-histories A在分支B上运行,它向Git指示A已经合并到B而没有对结束文件状态进行任何更改.这是有效的,除了B现在接收这114个提交作为其历史的一部分(git log).

如何在不引入A的所有历史记录的情况下将A标记为合并到B?

我试过git merge --squash -s ours --allow-unrelated-histories A跟着git commit,但这没有任何影响.

概念上压缩-s ours提交应该给我我想要的东西,但它不起作用.

git

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

git push 被拒绝,拉取失败:致命:拒绝合并不相关的历史

我在 Github 控制台上创建了新的 Repo。
在 Android Studio 中,提交并尝试推送到远程,推送被拒绝。

在studio,我可以成功连接github。

尝试使用 android studio 进行 Git pull,得到:

Git Pull Failed: fatal: refusing to merge unrelated histories
Run Code Online (Sandbox Code Playgroud)

即使在 git bash 中也得到了这个:

>git push origin master<br/>
To https://github.com/XXXX.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/XXX.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may …
Run Code Online (Sandbox Code Playgroud)

git github

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

为什么我拒绝将不相关的历史消息与 git 合并

请注意,我的问题不是“我该怎么办?”,因为我已经阅读了有关堆栈溢出的其他问题。我知道我必须提供 --allow-unrelated-history 参数。

我的问题是“为什么”。

以下是我使用 git 版本 2.17.0.windows.1 完成的操作。请注意,Linux 上的 git 版本 2.7.4 不会发生此错误:

我首先在 gitlab 上创建一个空的存储库。然后,我有 2 个用户,在 2 台不同的计算机上:

第一个用户:

git clone <repository_url>
cd myproject
touch file1.cpp
git add file1.cpp
git commit -m "file 1 creation"
git push origin master
Run Code Online (Sandbox Code Playgroud)

第二个用户:

git clone <repository_url>
cd myproject
touch file2.cpp
git add file2.cpp
git commit -m "file 2 creation"
git pull
Run Code Online (Sandbox Code Playgroud)

此时,我收到此错误消息:

致命的:拒绝合并不相关的历史

我不明白为什么我在 git windows 版本上而不是在 Linux 上有这个错误消息......

谢谢

git

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