我在git中有一些暂存的和未暂存的更改,还有一些未跟踪的文件。我想保留未暂存的更改和未跟踪的文件,并且放弃暂存的更改。
最简单的方法是什么?请使用命令行进行操作。
git reset
来撤销git add
。但在您的情况下,您想要保留未暂存的更改,因此:git commit # move staged to a commit, does not touch unstaged changes/unadded files
git checkout HEAD^ # checkout the previously committed version while keeping unstaged changes/unadded files
git branch yourbranchname --force # to grab the branch and move it back as well
git reset HEAD^
git checkout -- paths_of_files_whose_changes_are_to_be_discarded_in_the_work_tree
git reset -- path_of_file
可以放弃文件在索引中的改动。再使用 git checkout -- path_of_file
可以放弃工作区中的改动。 - ElpieKay如果要撤销未提交的更改并保留已暂存的更改,请将以下内容添加到您的~/.gitconfig
文件中:
[alias]
revert-unstaged = "!sh -c '{ git commit -m=tmp && git reset --hard HEAD && git reset --soft HEAD^ || git reset --hard HEAD; } > /dev/null 2>&1; git status'"
然后你可以执行git revert-unstaged
,它会执行以下操作:
如果有暂存的更改,则创建一个本地提交
使用git reset --hard HEAD
删除任何未暂存的更改
如果更改已经被暂存,恢复本地提交以还原它们
运行git status
以获取新状态的概述