Git 复制脏分支以创建新分支并保留它

Git 复制脏分支以创建新分支并保留它,git,Git,我有一个分支有几个变化,我想复制它的内容为一个新的分支。这是一个新的分支,基本上会有相同的内容,也许会少一点。那么,是否可以将脏分支复制到一个新的分支或另一个保留此分支的分支?如何 git签出-b怎么样 git checkout-b我想你对git的工作原理有些误解。每个分支只是一个指向特定提交的指针 世上没有肮脏的树枝。当您签出一个分支,并且您有一个脏工作树时,您可能正在考虑这个案例。(这意味着您已经对工作树进行了更改,但尚未提交)。但是树枝并不脏。工作树是脏的 在分支上保存内容的唯一方法是提交

我有一个分支有几个变化,我想复制它的内容为一个新的分支。这是一个新的分支,基本上会有相同的内容,也许会少一点。那么,是否可以将脏分支复制到一个新的分支或另一个保留此分支的分支?

如何

git签出-b

怎么样


git checkout-b

我想你对git的工作原理有些误解。每个分支只是一个指向特定提交的指针

世上没有肮脏的树枝。当您签出一个分支,并且您有一个脏工作树时,您可能正在考虑这个案例。(这意味着您已经对工作树进行了更改,但尚未提交)。但是树枝并不脏。工作树是脏的

在分支上保存内容的唯一方法是提交。如果不推送分支,只需创建临时提交即可:

git add -A
git commit -m "tmp commit"
git checkout -b new_branch
git reset HEAD^     #this will reset the branch pointer to the previous commit,
                    #but keep the work-tree
当您要返回到原始分支并还原脏工作树时:

git checkout original_branch
git reset HEAD^
git checkout original_branch
git stash pop

或者,您可以将更改保存在存储中。这可能是首选的解决方案:

git add -A
git stash --keep-index
git checkout -b new_branch
当您要返回到原始分支并还原脏工作树时:

git checkout original_branch
git reset HEAD^
git checkout original_branch
git stash pop

我认为你误解了git的工作原理。每个分支只是一个指向特定提交的指针

世上没有肮脏的树枝。当您签出一个分支,并且您有一个脏工作树时,您可能正在考虑这个案例。(这意味着您已经对工作树进行了更改,但尚未提交)。但是树枝并不脏。工作树是脏的

在分支上保存内容的唯一方法是提交。如果不推送分支,只需创建临时提交即可:

git add -A
git commit -m "tmp commit"
git checkout -b new_branch
git reset HEAD^     #this will reset the branch pointer to the previous commit,
                    #but keep the work-tree
当您要返回到原始分支并还原脏工作树时:

git checkout original_branch
git reset HEAD^
git checkout original_branch
git stash pop

或者,您可以将更改保存在存储中。这可能是首选的解决方案:

git add -A
git stash --keep-index
git checkout -b new_branch
当您要返回到原始分支并还原脏工作树时:

git checkout original_branch
git reset HEAD^
git checkout original_branch
git stash pop

Arpit,这样我的脏分支就被保留了?一旦创建了新分支,删除脏分支
git branch-D
Arpit,不,我想保留它;)@GeisonSantos如果你想保留它,那么运行回答中提到的命令就足够了。Arpit,这样我的脏分支就被保留了?一旦创建了新分支,删除脏分支
git branch-D
Arpit,nooo,我想保留它;)@GeisonSantos如果您想保留它,那么运行回答中提到的命令就足够了。@DurgpalSingh,它不是重复的。我的问题是关于当地分支机构的。奥尔德拉斯是正确的,没有“肮脏分支机构”这样的东西。@DurgpalSingh,它不是重复的。我的问题是关于本地分支。Alderath是正确的,没有“脏分支”这样的事情。为什么
git reset HEAD^
,而不是
git reset HEAD
git reset HEAD
git reset HEAD^
意味着不同的事情
HEAD
是当前分支上的最新提交<代码>^表示“上一次提交”。由于我们在分支上进行了临时提交,因此我们希望在最新提交之前重置为提交(我们希望除去临时使用的临时提交,仅用于存储更改)。一般来说,您可能更喜欢第二种隐藏方法。这个用例基本上就是隐藏的目的。我刚刚添加了第一个示例来说明在原始分支上存储更改需要做什么。为什么
git reset HEAD^
,而不是
git reset HEAD
git reset HEAD
git reset HEAD^
意味着不同的事情
HEAD
是当前分支上的最新提交<代码>^表示“上一次提交”。由于我们在分支上进行了临时提交,因此我们希望在最新提交之前重置为提交(我们希望除去临时使用的临时提交,仅用于存储更改)。一般来说,您可能更喜欢第二种隐藏方法。这个用例基本上就是隐藏的目的。我刚刚添加了第一个示例,以说明在原始分支上存储更改需要做什么。