Git替换本地分支并将我的分支重新设置在新分支之上

     2023-03-13     304

关键词:

【中文标题】Git替换本地分支并将我的分支重新设置在新分支之上【英文标题】:Git replace the local branch and rebase my branch on top of the new one 【发布时间】:2022-01-09 02:16:12 【问题描述】:

我很确定这个问题的答案可以在 SO 上找到,至少在几个不同的帖子上是零零散散的。我有一个由不同分支创建的分支。我在我的分支中做了一些提交,然后另一个分支的所有者强制将一些提交推送到我的分支上。在那之后,我又做了一些提交。

现在我被要求获取他的干净版本(我认为他的意思是替换我的本地分支),然后将我的分支重新设置在新分支(他的?)之上,以便他的提交(“强制推送"的) 将消失。我认为他想要的是永远不会在我的分支历史中看到他的提交。

执行此操作的步骤是什么?我发现很多参考文献

git fetch
git reset --hard @u
git rebase -i origin/master

但不确定结果,因为我似乎无法摆脱他的承诺。对于任何需要我正在谈论的内容的视觉图片的人,这里是:

任何建议将不胜感激。顺便说一句,我正在使用 Git Bash。

TIA, 埃德

编辑:根据要求,这里是“git log --graph --oneline --all”命令的输出(对不起,我必须涵盖所有的 cmets,因为有些可能包含敏感信息):

【问题讨论】:

如果我理解正确,听起来它应该是一个相当简单的交互式变基,丢弃不需要的提交。可能只是git rebase -i FIRST_COMMIT_TO_REMOVE~,并将有问题的提交标记为drop。见***.com/a/42522493 @Hasturkun 感谢您的建议。请参阅我对尼古拉的第二条评论。我需要摆脱提交,但保留其中包含的代码更改。 如果你想保留他的改动,你可以squash或者fixup把这些统一到一个新的提交中(虽然我不得不说,你的意图有点不清楚,听起来像你想要的这些已从历史中删除,这意味着它们将不存在)。我会提前提到,如果打算让他的提交发生在您的提交之后(或相反),您还可以选择重新排序提交。 【参考方案1】:

提示,将git log --graph --oneline --all 的输出与您的 HEAD 一起发布,以便我们更好地了解正在发生的事情。

如果我理解正确,您应该尝试以下操作:(确保您不强制推送某些内容。在 reset 上使用哈希码作为参数)

git reset his-last-commit(在他提交后取消提交最近的编辑)

git stash(保存它们)

git reset --hard your-commit(这会删除他的提交)

git stash pop(这会将您最近的编辑应用到顶部)

如果这不起作用,您应该尝试git cherry-pick

【讨论】:

“git reset --hard your-commit”命令中我的“your-commit”是哪一个?在他添加 4 次提交之前,这会是我的最后一次提交吗?另外,如果这是我在他添加他的东西之前的最后一次提交,那么这个“reset --hard”不会导致他的更改丢失吗? “我认为他想要的是永远不会在我的分支历史中看到他的提交。”这不是意味着它应该失去他的变化吗? 不,他不想丢失他的更改,因为它们很重要。他只是希望这 4 个提交远离分支的历史。他确实提到他想要的可以通过变基来实现,所以@Hasturkun 的建议可能是有道理的

如何在 Git 中完全用远程分支替换本地分支?

】如何在Git中完全用远程分支替换本地分支?【英文标题】:HowtoreplacelocalbranchwithremotebranchentirelyinGit?【发布时间】:2012-03-0121:34:42【问题描述】:我有两个分支:本地分支(我工作的那个)远程分支(公共的,只有经过良好测... 查看详情

git:如何从远程分支获取并合并到本地分支?

】git:如何从远程分支获取并合并到本地分支?【英文标题】:git:Howtofetchfromaremotebranchandmergeintolocalbranch?【发布时间】:2012-01-0200:44:03【问题描述】:我是分叉的github.com/mantisbt/mantisbt导致github.com/MYACCOUNT/ma​​ntisbt从我克隆它... 查看详情

git删除本地分支

远端master分支有更新需要拉取至本地,但是代码有些地方做了修改导致了小冲突,但是这些修改又是无关紧要的,于是就打算直接删除掉本地分支再重新拉取master分支,过程如下://查看本地分支gitbranch//删除目标分支gitbranch-Dmas... 查看详情

批处理文件以循环通过远程 Git 分支并将每个分支中的类似 CSV 文件复制到本地目录

...循环通过远程Git分支并将每个分支中的类似CSV文件复制到本地目录【英文标题】:BatchFiletoLoopThroughRemoteGitBranchesandCopyaSimilarCSVFileinEachBranchtoaLocalDirectory【发布时间】:2021-07-0207:26:10【问题描述】:我对批处理脚本非常陌生。为了... 查看详情

git的使用-一个分支完全替换另一个分支

...,很头疼,然后找到了下面的方法,可以直接将一个分支替换另一个分支gitpushorigindevelop:master-f把本地的develop分支强制(-f)推送到远程master但是上面操作,本地的master分支还是旧的,通常来说应该在 查看详情

您如何在合并的更改之上重新调整当前分支的更改?

】您如何在合并的更改之上重新调整当前分支的更改?【英文标题】:Howdoyourebasethecurrentbranch\'schangesontopofchangesbeingmergedin?【发布时间】:2011-11-0923:24:01【问题描述】:好的。如果我在一个分支上(比如working),并且我想合并来... 查看详情

git----创建远程分支,并将文件上传到创建的远程分支上

1、首先创建一个远程仓库   2、将远程仓库克隆到本地    (1)本地新建文件夹,命令行进入文件夹,执行clone操作     (2)gitclone git@github.com:Lucky-Syw/lucky888.git    (3)查看远程与本地分支:gitbranch-a  &nb... 查看详情

git代码分支合并merge提交新修改远程以及本地分支

第一步:创建本地分支点击右键选择TortoiseGit,选择CreateBranch…,在Branch框中填写新分支的名称(若选中”switchtonewbranch”则直接转到新分支上,省去第二步),点击OK按钮:  ? 第二步:通过“Switch/Checkout... 查看详情

git----创建远程分支,并将文件上传到创建的远程分支上

1、首先创建一个远程仓库   2、将远程仓库克隆到本地    (1)本地新建文件夹,命令行进入文件夹,执行clone操作     (2)gitclone [email protected]:Lucky-Syw/lucky888.git    (3)查看远程与本地分支:gitbranch-a... 查看详情

git创建新分支,并将本地代码提交到新分支上

参考技术AcloneGithub上的Repository,如下:使用gitbranch命令,如下:*标识的是你当前所在的分支。命令如下:命令如下:命令如下:例如:命令如下:例如:创建分支的同时切换到该分支上,命令如下:gitcheckout-b[branchname]的效果相... 查看详情

git重新关联远程分支

...远程分支的时候,自动添加了readme.md和.gitignore文件,而本地的项目中也有这两个文件,这就导致了本地与远程分支出现文件冲突。解决方案在执行gitpull命令的时候带上--allow-unrelated-histories选项,该选项可以合并两个本地分支和... 查看详情

如何使用 GIT cmd 将远程分支代码的副本复制到本地分支 [重复]

】如何使用GITcmd将远程分支代码的副本复制到本地分支[重复]【英文标题】:HowtogetthecopyoftheremotebranchcodetolocalbranchusingGITcmd[duplicate]【发布时间】:2019-03-1915:07:56【问题描述】:我只想将远程分支副本的副本复制到我的本地分支... 查看详情

git删除本地分支和删除远程分支

...tatus,很多delete的文件,直接冒冷汗,gitadd,commit之后发现本地与远程确实是删除了很多文件,之前也有过一次,当时是从新换了一个目录重新拉代码。。。麻烦的很  把情况告诉了同事,给了我建议,删除这个分支,重新拉,... 查看详情

你如何停止在 Git 中跟踪远程分支?

...支?我要求停止跟踪,因为在我的具体情况下,我想删除本地分支,而不是远程分支。删除本地分支并将删除推送到远程也会删除远程分支:HowdoIdeleteaGitbranchbothlocallyandinGitHub?我可以 查看详情

git拉取远程分支命令

如果我们想从Git仓库中拉取一个分支到本地,此处假如远程分支为develop,本地要创建的分支为dev,可以使用以下命令:gitinit   //初始化本地Git仓库gitremoteaddoriginhttps://xxx.git //将本地仓库和远程仓库相关联gitfetchorigindeve... 查看详情

在本地和远程重命名 Git 分支? [复制]

】在本地和远程重命名Git分支?[复制]【英文标题】:RenameaGitbranchlocallyandremotely?[duplicate]【发布时间】:2016-08-2806:01:27【问题描述】:有没有办法在本地重命名Git分支并将其推送到远程分支,即使已经有很多提交推送到远程分支... 查看详情

[git]将本地分支与远程分支关联(代码片段)

.....在本地工程中添加Git,并将其与远程的空库关联起来,只需如下几步。1.创建空库$gitinitInitializedemptyGitrepositoryinD:/workspace/shop/.git/2.添加远程仓库$gitremoteaddoriginssh://[email protected]:29418/prj/shop3.获取仓库中的分支$gitfetchremot 查看详情

git合并远程分支

...代码合并,就需要知道Git如何合并远程分支。步骤假设你本地在使用的分支为a(master也是一样的),需要合并的远程分支为b第一步在本地新建一个与远程的分支b相同(被合并的版本)的分支bgitcheckout-bborigin/b1该指令的意思:创建一... 查看详情