热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将现有的,未提交的工作移动到Git中的新分支-Moveexisting,uncommittedworktoanewbranchinGit

Istartedsomeworkonanewfeatureandaftercodingforabit,Idecidedthisfeatureshouldbeon

I started some work on a new feature and after coding for a bit, I decided this feature should be on its own branch.

我开始研究一个新功能,经过一段时间的编码,我决定这个功能应该在它自己的分支上。

How do I move the existing uncommitted changes to a new branch and reset my current one?

如何将现有的未提交更改移动到新分支并重置当前更改?

I want to reset my current branch while preserving existing work on the new feature.

我想重置当前分支,同时保留新功能的现有工作。

5 个解决方案

#1


2990  

Use the following:

使用以下内容:

git checkout -b 

This will leave your current branch as is, create and checkout a new branch and keep all your changes. You can then make a commit with:

这将使您的当前分支保持原样,创建并签出新分支并保留所有更改。然后您可以使用以下命令进行提交:

git add 

and commit to your new branch with:

并提交到您的新分支:

git commit -m ""

The changes in the working directory and changes staged in index do not belong to any branch yet. This changes where those changes would end in.

工作目录中的更改和索引中的更改不属于任何分支。这会改变这些变化的结果。

You don't reset your original branch, it stays as it is. The last commit on will still be the same. Therefore you checkout -b and then commit.

您没有重置原始分支,它保持不变。 上的最后一次提交仍然是相同的。因此,您签出-b然后提交。

#2


256  

Alternatively:

或者:

  1. Save current changes to a temp stash:

    将当前更改保存到临时存储:

    $ git stash

    $ git stash

  2. Create a new branch based on this stash, and switch to the new branch:

    基于此存储创建新分支,并切换到新分支:

    $ git stash branch stash@{0}

    $ git stash branch stash @ {0}

Tip: use tab key to reduce typing the stash name.

提示:使用Tab键减少键入存储名称。

#3


37  

If you have been making commits on your main branch while you coded, but you now want to move those commits to a different branch:

如果您在编码时已在主分支上进行提交,但现在要将这些提交移动到其他分支:

  1. Copy your current history onto a new branch, bringing along any uncommitted changes too:

    将当前历史记录复制到新分支,同时带来任何未提交的更改:

    git checkout -b 
    
  2. Now force the original "messy" branch to roll back: (without switching to it)

    现在强制原来的“凌乱”分支回滚:(没有切换到它)

    git branch -f  
    

    For example:

    例如:

    git branch -f master origin/master
    

    or if you had made 4 commits:

    或者如果你做了4次提交:

    git branch -f master HEAD~4
    

Warning: It appears that git branch -f master origin/master will reset the tracking information for that branch. So if you have configured your master branch to push to somewhere other than origin/master then that configuration will be lost.

警告:看来git branch -f master origin / master将重置该分支的跟踪信息。因此,如果您已将主分支配置为推送到origin / master之外的某个位置,那么该配置将丢失。

An alternative is to use this reset technique. But those instructions will discard any uncommitted changes you have. If you want to keep those, stash them first and unstash them at the end.

另一种方法是使用这种重置技术。但是这些说明将丢弃您拥有的任何未提交的更改。如果你想保留它们,先将它们藏起来并在最后取出它们。

#4


16  

If you commit it, you could also cherry-pick the single commit ID. I do this often when I start work in master, and then want to create a local branch before I push up to my origin/.

如果你提交它,你也可以挑选单个提交ID。当我开始在master中工作时,我经常这样做,然后想要在我推送到我的原点之前创建一个本地分支。

git cherry-pick 

There is alot you can do with cherry-pick, as described here, but this could be a use-case for you.

如此处所述,你可以使用樱桃挑选,但这可能是一个用例。

#5


0  

The common scenario is the following: I forgot to create the new branch for the new feature, and was doing all the work in the old feature branch. I have commited all the "old" work to the master branch, and I want my new branch to grow from the "master". I have not made a single commit of my new work. Here is the branch structure: "master"->"Old_feature"

常见的情况如下:我忘了为新功能创建新分支,并且正在旧功能分支中完成所有工作。我已将所有“旧”工作提交给主分支,我希望我的新分支从“主”增长。我没有单独提交我的新作品。这是分支结构:“master” - >“Old_feature”

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply

推荐阅读
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 国际高保真音乐流媒体平台的崛起:亚马逊与谷歌的竞争策略
    近期,亚马逊和谷歌正积极筹备推出高保真音乐流媒体服务,预计在2019年底前上线。根据市场研究机构CIRP的数据,截至2018年12月,美国智能音箱的安装量已增至6600万台,较第三季度增长显著。这一趋势对Spotify等传统流媒体平台构成了新的挑战。 ... [详细]
  • 12月16日JavaScript变量、函数、流程、循环等***线上九期班
    12月16日JavaScript变量、函数、流程、循环等***线上九期班 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
author-avatar
为徐嘉伟丷默哀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有