【发布时间】:2017-05-04 17:30:27
【问题描述】:
我有这个情况的git目录:
ProgSoul@PROGSOUL-LENOVO:~/esercizio3_2$ git status
Sul branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: A
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: A
Untracked files:
(use "git add <file>..." to include in what will be committed)
B
在这种情况下,我有:
- 索引中有一个名为 A 的文件,其中包含一个字符串“AA”
- 我修改了文件 A,其中包含“AAA”,但我没有在舞台上添加此更改。所以在工作目录中,我有一个 A,里面有一个字符串“AAA”
- 未跟踪的空文件 B
我的老师要我暂时暂停我的工作,创建一个 BUGFIX 文件,提交它并恢复我以前的情况。
我是通过这些命令实现的:
git stash --include-untracked
touch BUGFIX
git add BUGFIX
git commit -m "Aggiunto file BUGFIX"
git stash pop --index
通过这些命令,我保存了我的初始情况,并在我的修复完成后恢复了它。 我的老师还要求我在不使用 git-stash 的情况下达到这个目标。
我遵循了 stash 文档中的帮助:
git checkout -b WIP
git commit -a -m "WIP"
git checkout master
touch BUGFIX
git add BUGFIX
git commit -a -m "BUGFIX"
git checkout WIP
git reset --soft HEAD^
使用 git reset --soft 我恢复了索引,但未暂存提交的更改已丢失。
使用 git reset --mixed 我恢复了未暂存的更改,但索引已丢失。
在不使用 git stash 提交修复后,如何恢复相同的初始情况?
【问题讨论】:
-
我看不到这个问题的价值。你为什么要刻意尝试解决一个已经存在的好而简单的解决方案?这仅与您的班级相关,因此您最好只问您的老师如何解决这个“问题”。
-
我无法向老师询问解决方案,所以我需要一个解决方法。也许对你没用,但对我有用。
-
您是否允许提交您的更改并在另一个分支上创建错误修复?
-
是的,我可以。我对如何实现结果没有任何限制。
-
将原始存储库克隆到新目录。进行错误修复/提交/推送。回到原来的目录。下拉更改。继续。
标签: git git-branch git-commit git-stash git-reset