如何在git(无分支)中保存工作?

时间:2014-03-14 19:03:18

标签: git git-branch git-stash

我在git中有一个项目。我检查了一个早先的提交,现在我在一个未命名的分支上。我想在这里保存工作并回到最新的分支,但仍然可以回来。我该怎么做,是藏匿的吗?流行?

这是发生了什么。我意识到几个月前我需要回到现状。所以我跑了

$ git log

并找到提交号,E.G。

commit 1910e8fdf0b37cd5c7a693572bf89767a2615c7d
Author: user account <user@xxx.xxx.xxx>
Date:   Fri Jun 15 15:00:43 2012 -0700

--> WORKING VERSION <--

此时我通过输入以下内容切换到该提交:

$ git checkout 1910e8fdf0b37cd5c7a693572bf89767a2615c7d

我做了一些改变。现在我需要跳回到最新版本,但我想保留我在早期版本中所做的更改。我不想合并他们;他们应该是一个单独的分支。但我不在分支机构。当我输入“git branch”时,我得到了这个:

$ git branch
* (no branch)
  bias_turn_on_experiment
  hst_persist
  master

“git status”告诉我这个:

$ git status
# Not currently on any branch.
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   sn102
#       modified:   timIRmisc.asm
#       modified:   timing.def
#

那么如何保存事物的状态,回到master,然后回到当前状态,而不影响任何其他分支?它是git stash吗?但那我又在哪里重新播放?或者也许是git stash分支?我不确定。感谢。

2 个答案:

答案 0 :(得分:2)

我会用git branch <NAME>创建一个分支,然后将提交存入其中。然后您可以稍后再检查分支并在那里弹出存储以继续工作。

如果您有一个干净的工作提交,

编辑 user3392484解决方案就可以了。为了保持功能清洁的历史,我更喜欢我的方法。

答案 1 :(得分:1)

创建一个分支来保存您的更改:

git branch foo 1910e8f
git checkout foo
git add ...
git commit

如果你不想创建一个分支(请问为什么不这样做),然后在分离状态和标记中提交:

git add ...
git commit
git tag foo