首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本的git过程--我编码的方向不对,现在我想要备份。

基本的git过程--我编码的方向不对,现在我想要备份。
EN

Stack Overflow用户
提问于 2014-08-20 21:21:26
回答 2查看 39关注 0票数 0

我的场景,使用git:

  • 编写了一些代码并提交了
  • 添加功能1并提交
  • 新增功能2并提交
  • 新增功能3并提交
  • 添加功能4并提交

等等..。

当然,一切都在师父的掌握之中。

我现在决定现在不想实现特性3和4(将来可能需要它们)。因此,我想“回去”(关于“还原”这个词有很多争论,所以我将避免使用它),就在功能2的提交和继续之后。

我觉得分叉在这里的方程式里,但我不知道该怎么做。我想先了解逻辑场景,然后再理解将我送到那里的命令。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-20 21:48:37

有几个选项取决于您是否将这些更改推送到远程服务器。

如果您还没有升级到remote,我将创建一个针对Feature4的特性分支,并将master重新设置为Feature2。

代码语言:javascript
复制
git checkout -b <feature-branch> master
git checkout master
git reset --hard HEAD^^

如果您已经将更改推送到远程,我将选择另一条路线,因为更改公开的提交通常是个坏主意。

代码语言:javascript
复制
git checkout master
git revert <feature 3 sha>
git revert <feature 4 sha>
git checkout -b <feature-branch> master
git cherry-pick <feature 3 sha>
git cherry-pick <feature 4 sha>
票数 1
EN

Stack Overflow用户

发布于 2014-08-20 21:51:57

所以你现在拥有的是一条在一个分支上的提交链:

代码语言:javascript
复制
--(1)--(2)--(3)--(4) master

从这里你可以做很多事情。这是我会采取的方法。首先创建一些分支来跟踪您已经完成的工作:

代码语言:javascript
复制
git branch features/3_and_4
git branch features/1_and_2 commit_2

        ------------ features/1_and_2
        |
--(1)--(2)--(3)--(4) master
                     features/3_and_4

在您继续之前,检查这些分支并验证它们包含您想要的历史记录,我们即将做一些可能具有破坏性的事情。

代码语言:javascript
复制
git checkout master
git reset --hard commit_2

现在我们应该:

代码语言:javascript
复制
--(1)--(2)           master
        |            features/1_and_2
        |
        --(3)--(4)   features/3_and_4

现在你处于向前迈进的有利位置。如果完成了特性1和2,您可以将它们的分支合并为master并在那里继续开发(尽管我建议您为每个特性启动一个新的分支,并在功能完成后将其合并。

最后,在做了一些其他更改之后,您可能会返回到特性3和4。然后,您将看到如下内容:

代码语言:javascript
复制
--(1)--(2)--(5)--(6) master
        |
        --(3)--(4)   features/3_and_4

这就是您可能希望rebase更新旧功能的地方:

代码语言:javascript
复制
git checkout features/3_and_4
git rebase master

--(1)--(2)--(5)--(6)           master
                  |
                  --(3)--(4)   features/3_and_4

以上所有的假设都假设您处于重写历史的好位置,没有其他人看到这些更改,因此重新排序是很好的。如果不是这样的话,您仍然可以从相同的分支开始,但是您希望避免使用reset,也可以根据团队的工作流程避免rebase

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25414647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档