重置后恢复阶段状态

时间:2019-04-24 09:11:31

标签: git reset stage

git reset --mixed之后,我先前已暂存的新文件变为未暂存。
是否可以恢复执行git reset之前的阶段状态?

2 个答案:

答案 0 :(得分:1)

您可以重新添加文件:

git add path/to/the/file

如果仅暂存了文件的一部分,则可以修补添加:

git add --patch path/to/the/file

答案 1 :(得分:1)

不幸的是,git不会自动存储登台历史记录,没有直接的方法可以将索引还原到其先前状态之一。


将来,您可以执行以下操作:

  • 更频繁地提交
  • 一个变体:先提交,然后回滚:

    # add stuff :
    git add ... / git add -p ...
    
    git commit -m "work in progress"
    git reset --soft HEAD^
    

    这会将创建的提交添加到当前分支的引用日志中,
    使用git reset --soft将保留登台区域

  • 使用git stash && git stash apply
    git stash创建两个提交:

    1. 一个用于登台区域的内容
    2. 一个用于所有修改文件的内容

以下是命令的输出:

$ git stash && git stash apply
Saved working directory and index state WIP on master: 7475d1d {message}
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
[...]

这是隐藏提交的样子:

    $ git log --oneline --graph stash@{0}
    *   79d9cd7 (refs/stash) WIP on master: 7475d1d {message} # <- full stash
    |\  
    | * 43f3da0 index on master: 7475d1d {message}            # <- staging area's content
    |/  
    *   7475d1d (HEAD -> master, origin/master) {message}     # <- current active commit
    |\
    ...