问题标签 [rebase]
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.
ruby-on-rails - Rails 和 Git 工作流程建议
我需要一些关于我想要的 git 和 Rails 设置的建议。
基本上,对于我的第一个 Rails 应用程序,我使用了来自 GitHub 的基本应用程序模板,然后我进行了大量更改,现在有了一个相当定制的完整应用程序。
我现在已经提取了我对基本应用程序模板中的文件所做的所有更改,并将这些更改提交到我的 github repo 分支。理想情况下,我希望将基本应用程序模板作为我的应用程序中的一个分支,并使用我的主应用程序重新设置它。这真的可能吗?
我想这样做的原因是:我想让基础应用程序保持最新和功能,所以对于我的下一个项目,我可以从我的 github fork 克隆基础应用程序模板并开始工作。同样,如果有人修复了基本应用程序模板中的任何错误,我可以将这些修复程序与我将基本应用程序模板作为分支的任何应用程序合并?
这可能吗?有没有更好/更常见的方法来做到这一点?
提前致谢!
谢谢,
丹尼
git - Cherrypicking 与 Rebase
以下是我经常遇到的一个场景:
master
您在or上有一组提交design
,我想将它们放在production
分支之上。
我倾向于创建一个以基础为基础的新分支,在其production
上挑选这些提交并将其合并到production
然后,当我合并master
到生产时,我面临合并冲突,因为即使更改是相同的,但由于樱桃挑选而被注册为不同的提交。
我找到了一些解决方法来解决这个问题,所有这些都很费力,可以称为“黑客”。
尽管如此,我还没有做太多的变基,我相信这也会创建一个新的提交哈希。
我应该在我挑选的地方使用变基吗?与此相比,它还有什么其他优势。
git - 如何使用 git rebase 清理错综复杂的历史
在我的笔记本电脑和工作以及家里的台式机上与六个不同的分支和合并工作了几个星期之后,我的历史变得有点复杂。例如,我只是做了一个 fetch,然后将 master 与 origin/master 合并。现在,当我执行 git show-branches 时,输出如下所示:
我想用 git rebase 来清理它。为此,我创建了一个新分支 rebase-master,并在此分支上尝试了 git rebase <common-ancestor>。但是,我必须解决许多冲突,分支 rebase-master 上的最终结果不再匹配 master 上的相应版本,该版本已经过测试并且可以工作!
我以为我在某处看到了解决方案,但再也找不到了。有谁知道如何做到这一点?或者当我开始删除我已经合并的不需要的分支时,这些复杂的引用名称会消失吗?
我是这个项目的唯一开发者,所以没有其他人会受到影响。
git - git rebase,跟踪“本地”和“远程”
在进行 git rebase 时,我经常难以弄清楚在解决冲突时“本地”和“远程”发生了什么。有时我的印象是他们从一个提交到下一个提交交换了双方。
这可能(肯定)是因为我还没有正确理解。
变基时,谁是“本地”,谁是“远程”?
(我使用 P4Merge 来解决冲突)
git - git 工作流程:一次性合并和 git-rerere - 有什么意义?
像大多数刚接触 Git 的人一样,我在试图破译适用于 git merge 和 git rebase 的用例时也有过困惑。我想我终于决定,就最终的工作副本状态而言,它们给你的东西是一样的。而且,它们都导致相同的冲突。如果这是不正确的,请提供一个例子来启发我。
从我的角度来看,使用 rebase 而不是 merge(如果您的更改没有被推送或拉出)的主要好处是保持历史线性。我真正不明白的是开发 git-rerere 背后的原因。
从手册页来看, git-rerere 应该在您尝试解决之前解决的冲突时为您提供帮助。我将要参考的示例位于http://www.kernel.org/pub/software/scm/git/docs/git-rerere.html。
如果您的项目的策略是不要不断地将来自主线的更改合并到您的主题分支(如 linux 内核),那么上面的示例说创建“丢弃”合并提交。本质上,将 master 合并到您的主题中,运行测试以确保一切仍然有效,然后执行“git reset --hard HEAD^”,基本上将合并提交扔掉。稍后,当您创建另一个“一次性”合并提交时,git-rerere 会帮助您解决您在第一次一次性合并中已经解决的冲突。
有人可以解释一下,为什么开发人员没有经历创建临时合并提交的所有麻烦,而是将他的主题重新定位到 master 上?这不是 git-rebase 的重点 - 获取更改,但避免合并?这不是完成同样的事情,并且假设没有人拉动您的主题分支更改,这不是一种更简单的方法吗?throw-away-merge+git-rerere 工作流程真的只适用于您的更改被推/拉的情况吗?
最后一个问题 - 引用 Linus 的话说:“但如果我在你的日志中看到很多 'Merge branch linus',我不会拒绝你,因为你的树显然有随机的废话,不应该在那里……”Linus 是否也会遇到不断变基的问题?
perl - git svn rebase 导致“字节顺序不兼容”错误
以下是我尝试“git svn rebase”时遇到的错误:
我正在运行的 perl 版本是:
当我在网上搜索“字节顺序不兼容”时,我得到了很多点击,显示 Perl 文档说:
这意味着如果您在 perl 5.6.0 或 5.6.1 上运行 Storable 1.x 写入的数据在 Unix 或 Linux 上配置为 64 位整数,那么默认情况下,该 Storable 将拒绝读取它,并给出错误字节顺序不兼容。如果您有这样的数据,那么您应该将 $Storable::interwork_56_64bit 设置为 true 值,以使该 Storable 可以使用旧标题读写文件。您还应该将您的数据或您正在与之通信的任何旧 perl 迁移到当前版本的 Storable。
我不知道的是,如何将此“ $Storable::interwork_56_64bit
”设置为真。你能告诉我怎么做吗?
git - 为什么 git pull --rebase 在重放现有提交时会失败?
我不明白:当我“git pull --rebase remote branch”时,它会将我的 HEAD 恢复到他们的共享根目录,然后开始重播同时发生的所有远程提交。为什么这些提交有时会失败?它们是干净工作空间上的干净提交?这不就是变基的关键吗?
svn - 颠覆变基?
我发现这种方式更容易合并分支和更少的冲突:
将主干复制到新分支,将其与功能分支合并。完成后,将新分支合并回主干。这种技术很像 mercurial 和 git rebase。
我曾经合并从主干到功能分支的任何变化。但是后来当我把feature分支合并回trunk时,trunk中的一些东西又会重新合并回trunk,造成了很多冲突。有一个重新整合合并的选择,但它似乎对我不起作用。
有没有人做类似的颠覆变基?我最近才开始这样做,还没有看到任何副作用。这会导致任何不可预见的问题吗?
version-control - 删除/“重新定位”rails 迁移
我一直在 Rails 站点的一部分的 git 分支中工作。我在迭代时对架构进行了很多随机更改,并且我进行了一些迁移,这些迁移恢复了以前的迁移以添加列和类似的东西。删除这样的冗余迁移是否可以(即相互反转的成对迁移)?我不明白为什么它会导致任何问题,因为没有其他人在这个分支上工作,最终结果将是相同的。如果我继续这样做会有麻烦吗?
git - 如何从经常变基的 git-svn 存储库中推送
我通过 git-svn 完成我所有的日常工作,排队签到并像疯子一样重新定位:) 不利的一面是我经常有几天的工作排队(我知道 tisk tisk),这让我有点担心它只在一个地方。如果我没有一直使用 git-svn 和变基,我只会将我的更改推送到另一台计算机并克隆它,如果我做了一些愚蠢和松散的数据。
你对推送经常变基的 git repos 有什么建议?