git分支的回推周期
我目前正在使用一个带有单个分支的GitHub存储库,该存储库是基于另一个存储库的主分支的. Github分支是我工作的备份,绝对不是要拉动,因此,我对重新订阅大师存储库的历史感到满意. 我的问题是我想要一个干净的历史,如果历史有所不同,我就无法做到这一点.如果我进行推动(初始工作) + rebase,则会发生这种情况 - 第二个推动被拒绝. 我试图删除分支然后推开,但这具有慢速作品的滴滴效果,这很慢. 我应该如何解决这个问题? 解决方案 git-push可以接受选项-f或--force告诉它强制将远程参考(分支)更新为本地值的推动力.
12 2024-04-03
编程技术问答社区
将Git的提交行追溯为一个分支
一堆问题询问如何重写(rebase)一些提交,以便它们出现在分支上,但是所有这些似乎都认为rebase实际上是必要的,即,对于分支机构而言,想要分支的提交与Consits散布在一起想要在master上(是由"您"或其他人制作的). 这个问题更简单:我在master分支上有一个存储库的克隆,我做了一堆打算创建github pult请求的投入.通常我会运行 git checkout -b new-feature 开始提交,但是在这种情况下,我忘记了.我可以追溯地标记该序列是在新分支上所承诺的(无需使用git rebase)? ? 解决方案 您可以将承诺移至分支,然后将主分支重置为: git branch new-feature git reset --hard origin/master 请注意,这将吹走任何未承诺的更改,如果这是一个问题,您应该在开始将它们保存之前使用git stash. 其他解决方案 假设fork是您的github叉的遥控器:
6 2024-04-03
编程技术问答社区
使用git rebase将一个分支常规性地同步到主站
我有一个GIT存储库,该存储库几乎没有变化(没有其他人在为此做出贡献).基本上,它是主分支,其中一些代码和文件被删除.周围有这个分支可以使我轻松打包我的项目的更精美的版本,而无需每次手动剥离代码和文件. 我一直在使用git rebase来使该分支与大师保持最新状态,但是当我尝试在重新审视后尝试推开分支时,我总是会收到此警告: To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details. 然后我使用git push --force,它可以工作,但我觉得这可能是不好的做法.我想快速,轻松地将此分支与主体"同步".是否有更好的方法来处理这项任务?
8 2024-04-03
编程技术问答社区
Git: 如何合并多年来分歧很大的复杂分支
我目前已经从SVN到GIT进口了一个庞大的项目. 我决定弄平所有分支,只保留2. 主分支和分支分支. Master: A-B-C-D \ X-Y: Bugfix Diverged: E-F-G-H 偏差包含许多不同的源代码,但有些部分仍然来自主.当我们必须做一些错误时,我们必须手动修补主人并在SVN上差异.我想将BugFix合并到Master中(这里没问题),并将BugFix合并到分歧中. 请记住,我不希望以前的承诺被插入与大师分歧.因此,应忽略ABCD. 我正在寻找的结构是: Master: A-B-C-D-X-Y Diverged: E-F-G-H-X-Y 谁能帮我解决这个问题? 解决方案 合并分支的分支总是很痛苦. 首先,您必须记住一些有用的git命令,可以帮助您合并怪物. git log HEAD..origin/master - 将向您展示分支之间的差异. 如果简单git merge orig
6 2024-04-03
编程技术问答社区
git: 如何将某位作者的所有提交重新归入一个单独的分支?
我正在使用一些不使用SCM的代码+,并以所有项目文件的形式接收偶尔更新,尽管只有一些仅更改了一些.到现在为止)增加,而且由于幸运的是我为上述"补丁"做了git commit --author "the others",我想知道: 如何将一个作者的所有提交分为一个新分支? (在这种情况下,我不介意重写历史记录,我只使用我使用) 理想的解决方案将包括每个"补丁"之后其他分支的合并,但是目前,最终合并可能就足够了. +是的,绝地 did 觉得你在那里畏缩 解决方案 我最近为某人做了这一点: git checkout -b other_work git log --reverse --author=others --format=%H | xargs -n 1 git cherry-pick 其他解决方案 我不太了解您在做什么,但是您用第三方代码库描述的问题称为"供应商分支"
12 2024-04-03
编程技术问答社区
Git分支在重构后出现了分歧,那么为什么要重构?
最近,我遇到了我的分支机构分歧的通知.那是我制作一个功能分支,将其推到遥远的时候,几天后,我再次开始研究它. . git checkout -b feature-branch git push origin feature-branch:feature-branch ...当主人... 中 git pull origin master git checkout feature-branch git rebase master 但是当我想再次推开分支时,它说: On branch feature-branch Your branch and 'origin/feature-branch' have diverged, and have 67 and 1 different commit each, respectively. 我在" rebase分支差异后" P> 由于您已经推了分支,因此您应该合并 源分支,而不是反对它. 问题 阅读充分了解
20 2024-04-03
编程技术问答社区
从git存储库中删除一个未引用的提交
我有这样的git提交历史: U / A---B---C---D---E master 没有任何指向提交U,但我知道它的哈希.我该如何从我的存储库中完全删除此提交,就好像它不存在一样?我是唯一使用此仓库的人. 我尝试使用git rebase,但是可以删除分支的部分或移动提交,但似乎无法删除单个提交. 如果我做git checkout ,然后git reset --hard HEAD~1我再也看不到该提交了.它实际上是完全消失的还是仍然隐藏在仓库中? 解决方案 最终将通过git清理,但是您可以查看 git gc 实际强迫垃圾收集. clean命令是不同的,不会为您照顾. 其他解决方案 如所述 git reflog expire --expire-unreachable=now --all git gc --prune=now git reflog expire --expire-unreac
4 2024-04-03
编程技术问答社区
我如何在只有本地仓库(没有远程/原点)的情况下使用Git'的交互式重定?
我将git用作本地源控制系统,主要用于历史记录和差异跟踪.我仍然想使用rebase在WIP提交上进行修复/壁球,我会定期进行.但是,当我尝试做git rebase -i时,我会得到以下内容: There is no tracking information for the current branch. Please specify which branch you want to rebase against. See git-rebase(1) for details git rebase If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=/ MyBranch 似乎Git不希望您没有上游遥控器使用Interactive Rebase?我该怎么做?
14 2024-04-03
编程技术问答社区
Git:将一个提交移到 "上面"。
在master中说我有一个功能禁用. 我在分支feature上处理该功能,因此我在那里有一个特殊的提交$,只能启用该功能. 现在,我想将我在feature中所做的更改合并为master,但请将启用提交拒之门外.所以就像 main: A--B--X--Y feature: A--B--$--C--D 所以,假设我想这样做,将$提交在功能之上: new feature: A--B--C--D--$ 我该怎么做? 解决方案 git rebase -i B,然后将$移动到编辑器中显示的列表的末端.它将开始是文件打开的第一行.您也可以完全删除该行,这只会将其从分支机构的历史记录中删除. 其他解决方案 如果您想在feature上以相同的顺序保持提交,则应制作一个新的分支并执行以下内容.否则,只需在feature 上执行此操作 git rebase -i 将提交$移至列表的底部 git checkout ma
10 2024-04-03
编程技术问答社区
Git 将分支与所有父分支(或从属子分支)一起重置
是否有可能与git的所有父分支一起反弹分支? (我认为"父分支"是在这里使用的正确表格.根据您的观点,您也可以称其为依赖的子分支.但是,遵循提交的父级次数会让您进入这些分支称为"父分支"很公平. 我经常将分支用作快速/可变标签/检查点来标记某些提交. 所有父分支/父裁判均完全包含在基于分支的分支中;只有父分支中没有提交. * master * * featureA-finished * * origin/master 现在我想rebase -i master origin/master更改/重新命名提交featureA-finished^ git rebase -i --onto origin/master origin/master master之后,我基本上希望历史记录为: * master * * featureA-finished * (changed/reworded) * origin/master 但是我得到的是: * master *
6 2024-04-03
编程技术问答社区
重新发布一个分支,包括其所有的子分支
我有以下GIT存储库拓扑: A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) 通过重新审议feature分支,我希望重新列出整个子树(包括子分支): $ git rebase feature master A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) 但是,这是实际结果: C' (feature) / A-B-F (master) \ D (feature-a) \ / C \ E (feature-b) 我知道我可以通过执行: 轻松地手动修复它 $ git rebase --onto featur
6 2024-04-03
编程技术问答社区
GIT重建需要重新提交修改
在其他任何事情之前,我只是Git Branching的新手.我不知道每个功能分支都应从master中分支出来,并且仅使用与下一个功能分支这样关系的先决功能分支. 我有三个分支. master,feature-1和feature-2都推动了一个Bitbucket存储库(启用了问题跟踪).事实是提交M4和M5是所有分支都应在合并之前重新反复它的关键承诺(git rebase的任务) M1 -- M2 -- M3 -- M4 -- M5 [master] \ / A1 --- A2 [feature-1] \ B1 -- B2 -- B3 [feature-2] feature-2的开发已经完成,现在需要合并为掌握.这是我为feature-2重新反弹M4和M5的任务的优先级.feature-2. git push - 开发feature-2 git checko
4 2024-03-31
编程技术问答社区
如何用 bash 脚本实用地检查 git 分支是否需要重定向?
我正在为我的团队制作bash脚本,以实施定期重新审议工作分支机构.我目前面临的问题是如何确定分支是否在主后面和/或是否需要重新重新考虑,而不是盲目地试图反复分支. 这是我到目前为止拥有的简化版本: #Process each repo in the working directory. for repo_dir in $(ls -1); do # if working branch is clean ... # BEGIN update of local master git checkout master git fetch origin git merge remotes/origin/master # END update of local master for sync_branch in $(git branch | cut -c 3-); do
10 2024-03-28
编程技术问答社区
为什么我的.csproj文件在git re-base之后变得一团糟?
在使用git进行源控制的.NET C#项目中,我在重新审理后一直在获得畸形的CSPROJ文件以获取最近合作的代码.这是我的过程: 提交我的代码 构建和运行测试 重生为"获取最新" 诅咒天堂,因为CSPROJ文件被拧紧...再次 以下是重列的输出: D:\GitHub\AwesomeProject>git rebase master First, rewinding head to replay your work on top of it... Applying: added getstatus call Using index info to reconstruct a base tree... M Host/Host.csproj M Host/packages.config M Trees/Trees.csproj M Trees/packages.config M UnitTests/UnitTe
4 2024-01-05
编程技术问答社区
如何同步同一个 Git 仓库中的两个分支?
这是我经常遇到的常见工作流障碍: Master 是我们的"稳定"分支 $ git status # On branch master nothing to commit (working directory clean) 在分支上创建一个模块 $ git checkout -b foo $ echo "hello" > world $ git add . $ git commit -m "init commit for foo module" $ git checkout master $ git merge foo 在主人或其他分支上做 在接下来的几周内,将直接和其他分支机构掌握更多代码. foo分支将在此时间段不变. 简历工作/进行 foo 分支的更新 $ git checkout foo 哦,不! foo 非常过时!我了解为什么,但是我 do 需要 foo 返回同步. 问题 如何从 master 分支中获取最新内容?
16 2023-12-12
编程技术问答社区
git rebase -i 显示了重建和强制推送后的错误提交历史
我在另一个分支上重新占据分支后遇到了一个有趣的问题. git rebase -i HEAD~n不仅显示错误的提交历史记录(旧分支),还显示不正确的提交数量. 我想做的 我希望能够对正确的提交历史记录进行git rebase -i HEAD~n,以挤压我基于分支的旧分支的剩余提交. 我为引起问题所做的工作 # On another Feature branch git branch -b NewFeautureBranch # Develop my commit git add editedfile.extension git commit -m "Commit message" # I squashed and merged the feature branch into the development branch, as well as some other feature branches git fetch --all git checkout Devel
100 2023-12-07
编程技术问答社区
为几天前创建的一个分支重新建立Git数据库
我需要帮助理解这种情况的git rebase.我检查了大约十天前创建的一个分支.我使用 检查了 git checkout -b origin/branchname (我只是使用不同的名称来识别它) 结帐后,如果我在此检查分支中进行反弹, git rebase origin/master 它显示一些错误 1)尾随空格 - 我读到了这篇文章,但是即使尝试了我在网上找到的命令之后,我仍然看到了警告. git config core.whitespace nowarn 2)自动合并 冲突(添加/添加):合并冲突... 这些文件位于主分支中,但在结帐分支中对内容进行了一些修改.那么我应该如何解决这个问题呢?如果这是修复它的方法,我无权直接更改主中的任何内容.这些文件应具有此结帐分支的内容,以便测试可以正常工作,因为它与之相关.请澄清我. 问候 解决方案 家伙几乎回答了有关白色空间的问题,但没有碰到问题的重新构想.这是您重新恢
20 2023-12-03
编程技术问答社区
git rebase -editor=/something/other/than/vim? (为了更容易压制)
我很乐意将VIM用作提交的默认编辑器,并且不想更改它.但是,在重新审视方面,我发现自己挤压了数十个提交和数十个提交,我发现与textwrangler这样的交互式编辑器(除了顶级提交之外,用"壁球"代替"挑战"). ). ) ). 是否有任何方法可以为一次性折叠命令指定替代编辑器? 我在vim中知道: :%s/pick/squash/ 但这有自己的轻微烦恼. 编辑 - 如评论中所述,您可以通过进入第二行并执行 来挤压除顶部的所有内容. :,$s/pick/squash/ (请注意,逗号和美元与原件不同) 解决方案 尝试在命令之前添加GIT_EDITOR环境变量,例如: GIT_EDITOR= git rebase 例如,要使用nano我将输入: GIT_EDITOR=nano git rebase -i abcdef1234 其他解决方案 您的所有交互式重列都有更好的选择
32 2023-11-19
编程技术问答社区
如何在交互式编辑过程中从vim内部终止一个git rebase
当我进行交互式重置时,例如 git rebase -i HEAD~3 rebase Interactive编辑器(在我的情况下为VIM)打开了,让我编辑将其编辑以rebase pick c843ea2 Set Vim column limit to 80 (OS X) pick fc32eac Add Bash alias for `pbcopy` (OS X) .... 如果我现在决定要中止折射,并使用:q退出vim.我在Windows上使用git版本1.9.0.msysgit.0 确保我只能删除所有pick行,但是如果我重新占据更长的历史,可能会做很多事情.还有另一种方法吗? 我如何退出rebase Interactive编辑器(vim)并中止折叠? 解决方案 如果您使用错误代码退出编辑器,则会将中止. 要在VIM上使用错误代码退出,请 :cq 请参阅在这里和vimdoc 在这里. 其他解决方案 只需删除未从文件中注释的
14 2023-11-19
编程技术问答社区
如何重新建立一个合并的基础,但保留合并的提交
我和我的团队正在使用主轨道(origin/dev)的远程分支(origin/our_feature_branch)开发功能. Gerrit用于审查等. 上升的远程分支是用git merge origin/dev完成的,然后修复冲突,提交和git push origin HEAD:refs/for/our_feature_branch. gerrit执行一项规则,说一次只能推动一个提交.我对此无能为力. 说我开始进行提升: git fetch git checkout -b uplift origin/our_feature_branch git merge origin/dev 但是,在这里,我会解决一些冲突,回归测试需要一些时间来运行,一些团队成员将另一个团队提交给Gerrit的功能分支.现在,此提交是我的"正在进行的"提升的基础提案. 我现在该怎么办? 如果我将合并提交在功能分支上,则删除合并,并在其顶部添加从origin/dev合并的所有提交
16 2023-11-18
编程技术问答社区