我开始了一些新功能的工作,在编码了一些之后,我决定这个功能应该在它自己的分支上。

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

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

有帮助吗?

解决方案

使用以下内容:

git checkout -b <new-branch>

这将使你的当前分支的是,创建并检出一个新的分支,并保持所有更改。然后,你可以用一个承诺:

git add <files>

和承诺新的分支:

git commit -m "<Brief description of this commit>"

在工作目录和变化的变化,指数上演不属于任何分支呢。这个变化,其中这些变化将结束英寸

您不要的重置的原来的分支,它保持原样。最后一次提交的<old-branch>将仍然是相同的。因此你checkout -b,然后提交。

其他提示

或者:

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

    $ git stash

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

    $ git stash branch <new-branch> stash@{0}

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

如果你一直在做出承诺 在您编码时在主分支上,但您现在希望将这些提交移动到不同的分支:

  1. 将当前历史记录复制到新分支,同时也带来所有未提交的更改:

    git checkout -b <new-feature-branch>
    
  2. 现在强制原来的“混乱”分支回滚:(无需切换到它)

    git branch -f <previous-branch> <earlier-commit-id>
    

    例如:

    git branch -f master origin/master
    

    或者如果您已进行 4 次提交:

    git branch -f master HEAD~4
    

警告: 看起来 git branch -f master origin/master 将要 重置跟踪信息 对于那个分支。所以如果你已经配置了你的 master 分支推送到其他地方 origin/master 那么该配置将会丢失。

另一种方法是使用 这种重置技术. 。但这些说明将放弃您所做的任何未提交的更改。如果您想保留它们,请先隐藏它们,然后在最后取出它们。

在常见的情况是这样的:我忘了创造新的功能,新的分支,在做所有的旧特性分支的工作。我已经COMMITED所有的“老”的工作主分支,我想我的新的分支,从“主”增长。我没有作单个提交我的新工作。 这里是分支结构: “主” - > “Old_feature”

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

如果您提交,那么也樱桃挑单提交ID。我经常这样,当我开始在师傅的工作,然后要创建一个本地分支之前,我推到了我的出身/.

git cherry-pick <commitID>

有很多是你可以用摘樱桃做的,所描述的 href="https://git-scm.com/docs/git-cherry-pick">,但是这可能是用例为您服务。

我用 @Robin 答案&列出所有我没有,

git status                               <-- review/list uncommitted changes
git stash                                <-- stash uncommitted changes
git stash branch <new-branch> stash@{1}  <-- create a branch from stash
git add .                                <-- add local changes
git status                               <-- review the status; ready to commit
git commit -m "local changes ..."        <-- commit the changes
git branch --list                        <-- see list of branches incl the one created above
git status                               <-- nothing to commit, working tree (new-branch) is clean
git checkout <old-branch>                <-- switch back

如果回购有一个以上的藏匿处,看看哪一个适用于新的分支:

git stash list  
  stash@{0}: WIP on ...  
  stash@{1}: WIP on ...

和通过检查各个藏匿,

git stash show stash@{1}

或者检查所有藏匿在一次:

git stash list -p

有实际上是一个非常简单的方法,现在我不相信以前是功能与GitHub的桌面做到这一点。

所有你需要做的是切换到在GitHub上桌面的新的分支,它会提示你留在当前分支的更改(将藏),或者把你的修改与你的新的分支。只要选择第二个选项,带来的变化,以新的分支。然后可以提交照常进行。

“GitHub的桌面”

这可以是用于所有使用工具GIT

有帮助

<强>命令

切换分支 - 它会更改移动到新的分支。然后就可以提交更改。

 $ git checkout -b <new-branch>

<强> TortoiseGIT

在你的资料库单击鼠标右键,然后使用TortoiseGit->开关/结帐

“在这里输入的形象描述” “在这里输入的图像描述”

<强> SourceTree

使用“结帐”按钮,开关支路。点击一个分支后,你会看到在顶部的“结账”按钮。从当前分支的更改将会自动应用。然后你就可以提交它们。

“在这里输入的图像描述”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top