GIT 进入旧版本并回到开发中的版本
GIT getting to an older version and back to the under-development one
我想做什么:我正在处理使用 git 版本控制的代码。我意识到有些测试不是 运行 使用旧版本的代码(之前在同一分支上提交了 2 次)。所以我想 运行 那些需要修改一些 git 之后的输入文件的测试,然后我想回到我的开发中版本,就好像什么都没发生一样(不关心在输入文件,因为我不关心这些更改)。
我做了什么:我git 存储了我的 underdev 版本,然后 git 检出旧版本。我修改了一些文件并制作了 运行s。然后问题来了:当我 git stash apply 我没有回到我的 underdev 版本(我想我会的)。我在旧版本中仍然处于超然状态。
幸运的是我记下了 underdev 版本的 ID,所以我想我可以结账回到那里。但是,谁能向我解释我做错了什么以及我如何以干净的方式做我想做的事。
你的开发不足有两点:
- 提交历史
- 未暂存的更改
您已使用 git 存储保存了未暂存的更改。
要返回到您的 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
假设您从 foo
分支开始。
这句话似乎暗示您没有将 HEAD 指针返回到它的原始位置:
I remained in a detached head state at the older version
因此,要摆脱 "detached 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
然后,在完成主题分支的工作后,将您的工作合并回 master。
如果您提交了您的 underdev 版本的所有更改并且您的工作树是干净的,git stash
只是告诉 No local changes to save
,在这种情况下不会添加新的存储。
如果你的underdev版本有分支名称,git checkout <branch>
就可以带你回去。一种更常见的方法是使用 git reflog
来查找 HEAD 曾经引用的先前提交。
我想做什么:我正在处理使用 git 版本控制的代码。我意识到有些测试不是 运行 使用旧版本的代码(之前在同一分支上提交了 2 次)。所以我想 运行 那些需要修改一些 git 之后的输入文件的测试,然后我想回到我的开发中版本,就好像什么都没发生一样(不关心在输入文件,因为我不关心这些更改)。
我做了什么:我git 存储了我的 underdev 版本,然后 git 检出旧版本。我修改了一些文件并制作了 运行s。然后问题来了:当我 git stash apply 我没有回到我的 underdev 版本(我想我会的)。我在旧版本中仍然处于超然状态。
幸运的是我记下了 underdev 版本的 ID,所以我想我可以结账回到那里。但是,谁能向我解释我做错了什么以及我如何以干净的方式做我想做的事。
你的开发不足有两点:
- 提交历史
- 未暂存的更改
您已使用 git 存储保存了未暂存的更改。
要返回到您的 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
假设您从 foo
分支开始。
这句话似乎暗示您没有将 HEAD 指针返回到它的原始位置:
I remained in a detached head state at the older version
因此,要摆脱 "detached 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
然后,在完成主题分支的工作后,将您的工作合并回 master。
如果您提交了您的 underdev 版本的所有更改并且您的工作树是干净的,git stash
只是告诉 No local changes to save
,在这种情况下不会添加新的存储。
如果你的underdev版本有分支名称,git checkout <branch>
就可以带你回去。一种更常见的方法是使用 git reflog
来查找 HEAD 曾经引用的先前提交。