通过Git将Master的未提交更改放到新分支

Léo*_* 준영 188 git branch master

当我在分支机构时,如何将未提交的更改放入分支TEST master

小智 195

您还可以创建一个新分支并通过执行以下操作切换到它:

git checkout -b new_branch
git add .
Run Code Online (Sandbox Code Playgroud)

我一直都在使用它,因为在开始编辑代码之前我总是忘记启动一个新的分支.

  • 与@jouni注意到的另一个问题相同的问题 - 如果其他更改与原始更改冲突,您可能会遇到困难将分支合并回master.IMO这个主题更好地回答了这个问题:http://stackoverflow.com/questions/556923/git-how-to-merge-my-local-working-changes-into-another-branch (2认同)

Sam*_*ijo 150

您可以结帐到测试分支然后提交.移动到另一个分支时,您不会丢失未经修改的更改.

假设你在主分支:

git checkout test
git add .
git add deletedFile1
git add deletedFile2
...
git commit -m "My Custom Message"
Run Code Online (Sandbox Code Playgroud)

我不确定删除的文件,但我猜他们在使用时不包括在内 git add .

  • 有时结帐将失败,因为您的更改与该分支冲突.您可以尝试checkout -m进行合并. (12认同)
  • 我尝试了这个,但是我收到了一个错误:错误:结帐时会覆盖对以下文件的本地更改.请提交您的更改或存储它们,然后才能切换分支. (2认同)

Hey*_*his 35

为什么不使用git stash.我认为它比复制粘贴更直观.

$ git branch
  develop
* master
  feature1
  TEST
$
Run Code Online (Sandbox Code Playgroud)

您当前分支中有一些要移动的文件.

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#      modified:   awesome.py
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   linez.py
#
$
$ git stash
Saved working directory and index state \
  "WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$
Run Code Online (Sandbox Code Playgroud)

转到另一个分支.

$ git checkout TEST
Run Code Online (Sandbox Code Playgroud)

并申请

$ git stash apply
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   awesome.py
#      modified:   linez.py
#
Run Code Online (Sandbox Code Playgroud)

我也喜欢,git stash因为我使用git flow,当你想要完成一个功能分支同时仍然在你的工作目录中进行更改时,它会抱怨.

就像@Mike Bethany一样,这种情况一直发生在我身上,因为我在解决一个新问题而忘记了我还在另一个分支上.所以你可以藏匿你的工作git flow feature finish...,以及git stash apply新的git flow feature start ...分支.

  • `git stash`是我处理未提交更改的首选方式.当您将其视为剪切和粘贴时,这当然是一种直观的方法. (2认同)

Bom*_*mbe 5

git checkout TEST
git add file1 file2
git commit
Run Code Online (Sandbox Code Playgroud)