Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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_Version Control_Gitlab - Fatal编程技术网

用git清理一根乱七八糟的树枝

用git清理一根乱七八糟的树枝,git,version-control,gitlab,Git,Version Control,Gitlab,我似乎把一个小项目的开发分支搞得面目全非。我现在想要实现的是告诉git以下内容:嘿,git。这是名为X的分支。现在我在名为Y的分支中,它基于X。请查看区别,在一次提交中提交它们,然后更新源 背景:该项目位于gitlab存储库中。有一个叫做开发(development)的开发分支,我正在修改它(分支,比如说,一月开发)。现在,由于不幸的情况可以用最恰当的描述“我一点也不知道我在做什么”,我把该分支的历史搞得一团糟 不久前,我重新确定了我1月份的发展计划,这意味着目前,除了一项来自发展部门的承诺外,

我似乎把一个小项目的开发分支搞得面目全非。我现在想要实现的是告诉git以下内容:嘿,git。这是名为X的分支。现在我在名为Y的分支中,它基于X。请查看区别,在一次提交中提交它们,然后更新源

背景:该项目位于gitlab存储库中。有一个叫做开发(development)的开发分支,我正在修改它(分支,比如说,一月开发)。现在,由于不幸的情况可以用最恰当的描述“我一点也不知道我在做什么”,我把该分支的历史搞得一团糟

不久前,我重新确定了我1月份的发展计划,这意味着目前,除了一项来自发展部门的承诺外,其他所有承诺都在我的部门

目前,在发展上重新定位分支的尝试最终重演了1月的整个历史,结果是一团糟,因为我做了很多工作,在概念之间来回穿梭。因此,基本上,我对解决冲突没有信心。我只想保持现状,以“开发”为基础,从理论上讲,这应该很容易,因为在一个文件中只有两行代码,我甚至没有接触过,需要从开发转到我的分支

我知道我能做的,并且我认为它会起作用,将是以下几点:

  • 基于开发分支创建新分支。称之为一月&git-checkout-b一月&git-push
  • 复制我从一月份开始处理的文件。只有几个
  • git commit-a-m“一个新的开始”
  • git推送
  • 将一月开发版重命名为一月开发版:
    git分支-m一月开发版一月开发版;git push origin一月开发;git推送源-u一月\ u开发;git推送源--删除一月\月2日
  • 然后,我会失去我的全部承诺历史,但我不在乎,也不需要它们

    你觉得怎么样

    这是名为X的分支。现在我在名为Y的分支中,它基于X。请查看区别,在一次提交中提交它们,然后更新源

  • git switch Y
    –切换到要保存的分支(您已经这样做了,但只是以防万一)
  • git开关-c tmp
    –创建一个名为
    tmp
    的新临时分支,以防万一
  • git reset X
    –将您的
    tmp
    分支指向与
    X
    相同的提交,同时保留分支
    Y
    的工作树
  • git add.&git commit
    –在一次提交中记录
    X
    Y
    之间的所有更改
  • 因此,现在您的
    X
    Y
    分支保持与以前相同的状态,但是,另外,您有一个名为
    tmp
    的新分支,它本质上是
    X
    +一个提交,包含
    X
    Y
    之间的差异


    从您的描述中不清楚您想将什么推到哪里,但是,根据您的需要,您现在可以执行
    git branch-fx
    git branch-fy
    来相应地更改您的
    X
    Y
    分支,使其与
    tmp
    相同。然后您只需像往常一样
    切换到它,然后
    到您想要的任何地方。完成后,您可以
    git branch-dtmp

    如果您使用的是旧版本的git,请将
    git-switch
    替换为
    git-checkout
    ,并将
    git-switch-c
    替换为
    git-checkout-b
    。另外请注意,步骤2和3可以在一个步骤中完成:
    git-ctmp-X
    ,但为了简单起见,我想我应该分别描述它们。