问题
While trying to revert a commit I made to my repository of my .emacs.d folder I get the following message:
haziz@haziz> git revert 7fe3f
error: could not revert 7fe3f0b... .emacs.d contents from ubuntu hp 15
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
What I am trying to do is reverse changes I made to my init.el file and have followed with another commit which I am trying to reverse. I would prefer to revert rather than reset --hard since as far as I know the latter completely erases the most recent commit. I would like to create a new commit so that I can possibly "revert" the revert.
In other words what I am trying to do is this
Git Commits [A]...[B]
would be reverted to
Git Commits [A]...[B]...[A']
Am I doing something wrong?
Edit: I tried doing a diff/merge as best as I could then another commit but then it still gives me this new error message:
haziz@haziz> git revert 7fe3f0ba3182b591f11c0b59e006dc6c990b7470
fatal: Your local changes would be overwritten by revert.
Please, commit your changes or stash them to proceed.
How do I tell it to ignore (but not delete) unstaged files, without resorting to a .gitigore file. I frankly don't care about most of the unstaged files which are emacs temp files etc.
回答1:
Q. What conflict?
The conflict from merging the reverse patch of that revision, when later revisions changed the same lines of code: a merge conflict
Edit If you are reverting the latest commit, this means that you had local changes (refer to
git status
). Don't forget that you can have staged and unstaged local changes. To easily see all local changes, usegit diff HEAD
You should just open up the unmerged file (git status
) to see the conflicted file(s). You'll see the <<<<
, =====
, >>>>>
conflict markers soon enough.
You can use
git mergetool
to resolve the conflicts with more user-friendly tools like Meld, KDiff3, Gvim etc.
回答2:
You're making a confusion between untracked files and unstaged files.
Untracked files are unknown to Git, you never
git add
ed them (i.e.git status
will show them in theUntracked files:
section).Unstaged files are tracked files which have local changes, which you did not stage for commit (i.e.
git status
will show them in theChanges not staged for commit:
section). These changes will be included in the next commit if you rungit commit -a
, but not if you rungit commit
without-a
.
It does not make sense to tell git to ignore unstaged changes: the changes are there, and they touch files that Git cares about.
来源:https://stackoverflow.com/questions/8281803/git-revert-error-message