我有两个回购:市场和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合并中删除的,还是需要一些额外的配置?
任何帮助将不胜感激,谢谢!
我一直在玩变基,试图拆分和合并历史记录,如下所述: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 重用原始合并中的树。
它按预期工作(目前),但速度要慢得多。有一个更好的方法吗?
我已经为我的项目添加了另一个repo git subtree add,现在当我从子树项目更新我的主项目时git subtree pull --prefix=subtree-dir subtree-origin subtree-branch --squash,我最终在我的主历史中有两个新的提交,前者说"Squashed"子树 - dir /'从618c8ff..822004d更改",后者是引用前者的合并提交.
这感觉很糟糕.
我理解压缩提交是必要的(或者是子树项目的所有干预提交),但有没有办法避免第二次合并提交?我很想发现一种行为很像的模式git pull --rebase.
万一你今天没有听过,你太棒了.
我有一个可以运行的实时网站,我确信它拥有每个文件的最新、正确版本,它不是用 Git 管理的。我还有一个 Bitbucket Git 存储库,表面上是用于该站点的,但其中存在重大问题和过时的内容。
我想做的git init是实时文件,然后以某种方式将它们推送到远程,以便最终的远程 HEAD 状态与我的实时文件的状态完全相同,而且远程提交历史记录保持不变。
我想这样做,以便实时工作树永远不会处于不同的状态。我想过创建一个新分支,远程拉动 master,然后强制合并它们或其他什么,但据我所知,我将不得不检查 master 分支并在那些短暂的时刻弄乱实时文件在合并之前和合并期间,假设一切正常。
我还想过通过 FTP 传输文件,在本地计算机上解决所有冲突/合并,然后从那里推送到 Bitbucket 并下拉到实时存储库。但这也让人感觉不可靠和冒险。
我知道我永远不应该像这样操作实时代码,但这是我陷入的情况,我只想以最简单/最安全的方式使其工作。
(我确定这是一个重复的问题,但我的 Google-fu 没有让我失望;在引导我查看以前的答案时请保持温和。)
我有一个 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) 我已经在Windows机器上安装了Github桌面和git,我有一个github帐户并创建了一个虚拟存储库。
当我打算通过git bash命令行上传程序包时,它失败并显示错误:致命:拒绝合并无关的历史记录
我使用几种方法来解决此问题,方法是使用该社区中的现有解决方案,但仍然无法解决问题。有人知道解决此问题的任何技巧吗?如何将项目成功上传到github?
我在 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)
我不明白为什么我不能这样做,以及如何解决这个问题。
我有两个分支,它们有效地包含相同的文件,但由于遗留原因它们是分开的.称他们为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提交应该给我我想要的东西,但它不起作用.
我在 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) 请注意,我的问题不是“我该怎么办?”,因为我已经阅读了有关堆栈溢出的其他问题。我知道我必须提供 --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 上有这个错误消息......
谢谢