git revert –no-commit without staging

Usually the command git revert automatically creates some commits with commit log messages stating which commits were reverted.

To avoid automatic commit there’s the option -n (or --no-commit).

  • Elastic Beanstalk, Git and AWS Tools: How to clone repository to another workstation
  • Specify merge parent in git
  • From master, commit to another branch
  • filter-branch on current branch and current director only
  • Share a working tree with git submodules
  • Can we tell the reason for failure of git command in zshrc function?
  • But after this command, the reverted files are in the staged area. I can unstage them by using the command git reset HEAD.

    Is there a direct way to revert a commit without committing and staging?

    In other words: is there a direct command to revert a commit applying the changes only to the working directory, without touching the index?

  • Remote branch ahead of local branch; can't push
  • Is Git over Network Share possible?
  • How to cancel long output in the terminal?
  • Git How to Recursively Delete Files and Folders?
  • git log with additional details from body of the commit message
  • Make a Hosted Repository a submodule of another Hosted Repository in Phabricator
  • One Solution collect form web for “git revert –no-commit without staging”

    There is no single command for it. As you already noted, you can combine git revert -n with git reset to get the reversion undone in the index.

    Besides that method, you can use git apply -R to “reverse apply” a patch, and you can turn a commit into a patch with git show, so:

    $ git show <rev> | git apply -R
    

    has the same effect, with one important (but subtle) difference. Let me quote from the git revert documentation and add my own emphasis:

    -n, --no-commit
    Usually the command automatically creates some commits with commit
    log messages stating which commits were reverted. This flag applies
    the changes necessary to revert the named commits to your working
    tree and the index, but does not make the commits. In addition,
    when this option is used, your index does not have to match the
    HEAD commit. The revert is done against the beginning state of your
    index.

    In other words, git revert -n operates in, and on, the index, with a side effect of updating your work tree. The git apply command operates (by default anyway) on the work-tree only, and in fact can be used outside a git repository.

    Git Baby is a git and github fan, let's start git clone.