Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 创建分支的可恢复版本,然后合并来自另一个分支的源文件_Git_Github_Mercurial_Merge_Bitbucket - Fatal编程技术网

Git 创建分支的可恢复版本,然后合并来自另一个分支的源文件

Git 创建分支的可恢复版本,然后合并来自另一个分支的源文件,git,github,mercurial,merge,bitbucket,Git,Github,Mercurial,Merge,Bitbucket,我对版本控制的理解/经验有限,但过去我曾使用它执行基本操作,如创建存储库、暂存文件和提交更改。我最近接手了一个项目,另一个开发人员一直在做这个项目,他正在使用mercurial,他的版本控制工作流程如下: 直接对网站的开发版本进行网站编辑。一旦问题/功能完成,这可以提交给开发分支。一旦修改集合完成,被认为是安全的/批准的,并准备好投入使用,就可以通过首先将dev上的更改推到bitbucket上,然后将其发送到live server上,然后将其向下拉,将开发更改合并回live分支,并提交合并 我发

我对版本控制的理解/经验有限,但过去我曾使用它执行基本操作,如创建存储库、暂存文件和提交更改。我最近接手了一个项目,另一个开发人员一直在做这个项目,他正在使用mercurial,他的版本控制工作流程如下:

直接对网站的开发版本进行网站编辑。一旦问题/功能完成,这可以提交给开发分支。一旦修改集合完成,被认为是安全的/批准的,并准备好投入使用,就可以通过首先将dev上的更改推到bitbucket上,然后将其发送到live server上,然后将其向下拉,将开发更改合并回live分支,并提交合并


我发现的问题是,开发版本与网站的实时版本有很大的不同。在这种情况下,我将无法将我正在进行的更改从开发站点/分支合并到实时版本。为了使这个工作流程可行,我需要开发版本再次成为实时版本的精确副本

为了实现这一点,我目前正在寻找一种方法,提交两个分支的完整版本,如果需要,可以恢复到该版本,然后将站点的开发版本合并/替换为当前的实时站点,使它们完全相同,但没有成功


如果这是可能的,怎么做?也欢迎任何建议/改进,谢谢

听起来您想要的是将development重命名为development old,然后基于“live”创建一个名为development的新分支

在git中,这看起来像:

git branch dev-old dev
git branch -D dev
git branch dev live
现在您的旧开发将被备份并可用,而dev将是live的精确副本


您可能需要查找hg等效命令。

Simpler:git branch-m move来重命名旧分支。在Mercurial中,重命名分支与将分支名称永久存储在提交中不同。git分支的等价物是书签。那么,假设我想将所有文件恢复到开发旧分支中最新提交时的状态,那该怎么做呢?我知道git commit和git revert,但不知道它们是还原所有文件还是只还原要还原到的特定提交中的更改。git checkout*not commitsorry@user1950065:git revert添加一个新的提交,该提交会反转un所做的操作,并从一些旧提交中退出更改,与hg backout相同:可能不是您想要的。要查看某些修订的效果,git checkout修订说明:首先确保work目录是干净的。所以git想看看那里有什么。如果您签出的是一个分支,那么您就在该分支上,可以向其添加新的提交。如果你签出的不是一个分支,你会得到一个分离的头部;您仍然可以添加提交,但最终它们将消失,除非您将它们标记为保存。@torek:好的,那么在诸如dev old这样的分支上使用git签出实际上允许我查看什么,这意味着它将恢复与该分支上上次提交的文件的状态相比的任何差异?另外,如果我想用从live中合并的新开发分支中的文件替换我的目录,最好的方法是手动删除我的文件,然后从新分支克隆(如果可能的话)还是有更好的推荐方法?我需要开发版本一次与live版本完全相同再说一次-该死的,为什么你需要它并且在最新的合并后丢失了所有的开发更改?不能合并?撤消未限制的合并更改并重新开始。。。或者修改工作流程,使其更具脑力-powered@LazyBadger:不完全确定您想告诉我什么,但是开发版本和live版本一样包含许多未限制/合并的更改。我不想在开发版本上完全丢失这些更改,也不能将任何更改还原到实时版本…网站将发生一些重大更改,当我合并到实时版本时,我只希望将我所做的更改带过来。开发版本包含许多未经限制/合并的更改,而实时版本则不能了解这一点,请详细说明存储库分支如何包含未限制的更改???