问题标签 [git-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.
git - Git 提交压缩(rebase -i):提交实际上是如何工作的?
我不太明白提交是如何用 git rebase -i 压缩的。我想知道一件事:
如果我的 rebase -i 生成此列表:
我应该压缩提交 A 和 B 还是 B 和 C?问题是 git 在这种情况下说它将 D..A 重新定位到 D 上(D 是在此之前的最后一次提交)而不是 C..A 到 C 上,这对我来说是有意义的。D 根本没有显示,为什么要这样说呢?
git - git pull 和 git fetch + git rebase 有什么区别?
另一个问题说这git pull
就像一个git fetch
+ git merge
。
git pull
但是和git fetch
+有什么区别git rebase
?
git - 压缩线性提交历史时的冲突
在尝试压缩/修复线性分支时,我怎么可能仍然需要手动合并?该 repo 已从 Subversion 转换。每个冲突都是“自动挑选失败”或“由于提交消息为空而中止提交”。后者我可以理解,但一个--fixup-empty
或一些东西会很有用。
典型输出:
git - 从另一个分支上的选定提交创建一个 git 分支
我从 master 创建了一个“功能”分支并工作了很长时间。然后,我获取了最新的主分支提交,并在其之上重新定位了我的“功能”分支提交。然后我将“功能”合并到master中。但是,我忘记了合并并继续提交到“功能”分支。我现在希望将这些提交放在一个新分支中,所以我现在想创建另一个分支“feature_2”,它基于自上次合并到 master 以来“feature”分支上的提交。有什么建议么?
git - 为什么'git bisect'分支不知道?
我试图找到自过去一天在一个名为feature-x的长寿分支(将在很久以后发布)上提交以来出现的错误的来源。
虽然有一个错误。我发现我的脚本中没有预料到的行为可能已经在迄今为止的任何提交中引入,特别是因为 master 的特性在 feature-x 中被大量使用,但在 Master 本身中则较少使用。
为了测试这种行为,我必须运行我的脚本dependent.pl。但是当 bisect 跳转到代码的一半时,我的脚本在 Master 上不存在,因此无法测试。
我相信这是因为 bisect 将您拉入无头状态,但在这种情况下,我真的想处于另一个历史/变更集的上下文中,而不是漂浮在以太中。
在任何人跳到你做错了蜂鸣器之前,我们的团队喜欢在这些情况下合并分支,因为这个比喻适用于这种情况,而不是变基。
我将通过创建一个示例 repo 来演示这个:
所以现在你得到一个看起来像这样的 repo:
所以我运行命令,git bisect start feature-x dev-1.0
期望我能够找到在dependent.pl 中破坏我的代码的原因,我最终提交'sub f { return 2 }' 没有我从feature-x 更改的历史(即,如果我运行ls
,我所看到的只是 main.pl 和dependent.pl 丢失)。
这使我处于无法测试的状态。我不知道当前的提交是否破坏了我的工作,也不能说 master 上的提交破坏了它,所以我不能说这个提交是好是坏。
我如何测试是什么破坏了我当前的分支?
git - 如何修复“损坏的”交互式变基?
我设法在我的本地 git 存储库中制造了一些混乱。我试图通过使用以下说明来修复损坏的提交。在运行“git commit --amend”之前(以及在 git rebase --interactive 之后),我认为我的更改不正确,所以我执行了“git reset HEAD --hard”。我告诉你,这不是一个好主意。
现在交互式变基似乎被“卡住”了。Git 将当前分支显示为 (|REBASE-m)。我的存储库中的每个命令(cd ..,ls,git rebase ...)都会给出以下错误:
cat: .git/rebase-merge/head-name: 没有这样的文件或目录
这是 git rebase --abort 的样子:
这是 git rebase --continue 的结果:
有任何想法吗?我想将情况重置回我开始深思熟虑的变基操作之前的状态。
以下是 git log --oneline 显示情况的方式:
这很好。
我正在使用 msysgit v1.7.0.2。
git - 变基分支,它有自己的分支
我不能让 git push origin B. 我有这样的情况
Git建议我做
git rebase 起源/B
这对分支 C 有危险吗?
我应该早点将 C 重新定位到某个临时位置吗?
git - git rebase,“将被覆盖”和“没有更改 - 你忘记使用'git add'了吗?”
git rebase
在将文件添加到存储库,然后从存储库中删除,然后添加到工作目录(但不是存储库)的某些情况下,似乎无法正常工作。
这是对我的问题的更具体的描述:
如果创建了一个分支并从某个主干切换到,
并且在分支中添加并提交了一个文件 X,
随后 X 被删除并提交到分支中,
并且 X 再次在工作目录中创建,但未添加或提交,
和主干分支前进,
然后
使用高级主干作为基础执行的变基将失败,因为它将拒绝覆盖 X,
即使工作目录 X 被移除或移开,也无法继续变基。
这是在命令行上重现我的问题的脚本:
我知道我可以使用git rebase --abort
、removebar.txt
和git rebase master
再次中止 rebase。但是我怎样才能在不先中止它的情况下继续 rebase 呢?
django - 从使用 GIT-SVN 创建的 GIT 存储库分叉的限制?
许多开源项目(例如django)都有 GIT 镜像,这些镜像反过来又被分叉用于私人或公共开发。GIT 镜像与git svn rebase
. 但是Pro Git Book包含这个明确的建议:
啊,但是变基的幸福并非没有缺点,可以总结为一行:
不要对已推送到公共存储库的提交进行变基。
如果您遵循该准则,您会没事的。如果你不这样做,人们会恨你,你会被朋友和家人鄙视。
当你 rebase 东西时,你放弃了现有的提交并创建了相似但不同的新提交。如果你将提交推送到某个地方,而其他人将它们拉下来并基于它们进行工作,然后你用 git rebase 重写这些提交并再次推送它们,你的合作者将不得不重新合并他们的工作,当你尝试时事情会变得一团糟把他们的工作拉回你的工作。
像 Django 这样的开源镜像是否打破了上面关于不在公共回购中重新定位的粗体规则?如果不是,为什么不呢?如果是这样,使用这些可以通过“常规”非重新构建的 Git 项目完成的镜像不能完成什么?如果这是一个明显的问题,我们深表歉意;我是一个 Git 新手。
git - 如何设置这个 git 工作流程?
我希望能够设置以下 git 工作流程,但是对于要使用哪些正确命令(rebase、remote 等)感到困惑?
- 克隆一个开源项目,我对其 git 存储库只有只读访问权限
- 对项目进行更改并将这些更改保存到我的私人 github 存储库 - 让我们称之为“开发”
- 一旦开发更改稳定,将它们移至“暂存”
- 测试“暂存”后,将更改移至“生产”
- 每周同步远程开源项目,因为它总是在变化,然后重新开始整个过程。
谢谢