我想做什么:我正在使用git版本控制代码。我意识到一些测试没有使用旧版本的代码运行(之前在同一分支上提交了2次)。所以我想运行那些需要修改一些git-follow输入文件的测试,之后我想回到我的欠开发版本,好像什么也没发生(因为我不在乎,不关心输入文件中所做的更改)关于这些变化)。
我做了什么:我git存储我的underdev版本然后git checkout到旧版本。我修改了一些文件并进行了运行。然后是问题:当我git stash应用时,我没有回到我的underdev版本(我以为我会)。我在旧版本中处于一个独立的状态。
幸运的是我注意到了underdev版本的ID,所以我认为我可以结账返回那里。但是,任何人都可以向我解释我做错了什么以及如何以干净的方式做我想做的事。
答案 0 :(得分:0)
你的欠缺是两件事:
您已使用git stash保存了未分级的更改。
要返回您的underdev版本,您需要结帐到藏匿时的分支。
您可以在git stash show
。
这是您的工作流程:
git stash
git checkout OLD_COMMIT
*do some work*
#Throw the changes away
git checkout .
git checkout UNDERDEV_BRANCH
git stash pop
答案 1 :(得分:0)
我们假设您刚开始foo
分支。
这句话似乎意味着你没有让你的HEAD指针回到原来的位置:
我在旧版本处于一个独立的头状态
所以,离开"分离的头"陈述,并恢复你未承诺的工作:
git checkout foo
git stash apply
将来,可能更容易通过以下工作流在主题分支上简单地提交您正在进行的工作:
# save your work on a topic branch
git checkout -b myTopicBranch
git add .
git commit -m "wip"
# run tests on older revision
git checkout oldSha
run tests...
# ok, done, back to work
git checkout myTopicBranch
然后,在完成主题分支的工作后,将您的工作合并回主人。
答案 2 :(得分:0)
如果您已经提交了对underdev版本的每次更改并且工作树都是干净的,git stash
只会告诉No local changes to save
,在这种情况下不会添加新的存储。
如果你的underdev版本有一个分支名称,只需git checkout <branch>
可以带你回来。更常见的方法是使用git reflog
来查找HEAD曾经提及的先前提交。