通过未跟踪的更改从一个分支移动到另一个分支

时间:2016-03-29 20:12:18

标签: git svn

我处在一个suituation中,我在我的存储库中有未分级/未跟踪的更改,我想创建并移动到新分支并将这些更改提交到新分支,而不是主分支。

我在stackoverflow上找到了这个问题:

Take all my changes on the current branch and move them to a new branch in Git

我永远无法理解答案。

基本上我的理解是我必须做的是:

将我的更改添加到存储中,因为git不允许我在没有先提交或存储我的更改的情况下签出另一个分支

两个

创建并签出新分支

将存储作为新分支应用于新分支

我知道如何做一两个但不确定三个

上面的stackoverflow问题给出的答案之一是:

//comments are my understanding on what is happening
//not necessarily true 
git stash                                     //add to stash
git checkout -b edge master                   //create new Bracnh and checkout to it

//Not sure what is happening in the below two lines
git branch -f master SHA1_before_your_commits //reset master to the last commit 
git stash apply              // apply stash to branch,now I can commit to the new branch

2 个答案:

答案 0 :(得分:2)

只需提交更改,创建新分支,并将主服务器重置为先前的提交,例如

git commit -a
git branch newBranch
git reset --hard HEAD~
git checkout newBranch

答案 1 :(得分:1)

  

我处在一个suituation中,我在我的存储库中有未分级/未跟踪的更改,我想创建并移动到新分支并将这些更改提交到新分支,而不是主分支。

使用git v2.5执行此操作:

git worktree add <new_path>

现在在你的任何分支中做任何你想做的事。它将创建2个独立的工作文件夹,彼此分开,同时指向同一个存储库。

使用wortree,您无需执行任何clearreset即可删除所有已暂存且未跟踪的内容。

以下是如何操作的演示:

enter image description here