Git: Undo local changes; git add . + git rm?

user979672 picture user979672 · Oct 14, 2011 · Viewed 13k times · Source

Need help figuring out a couple common workflows with Github. I come from a VS TFS background, so forgive me.

Undoing Pending Changes

Let's say I have cloned of a git repository to my local file system. At this point, the project's local files match exactly what's in the remote repoistory.

Then I decided to make some changes to the code, and change the local versions of a couple files. After doing some testing, I figure out that I want to discard my local changes and revert the local files back to what they are in the remote repoistory.

How do I undo these local changes, restoring them to the current versions in the repository?

Committing all Changes

Whenever I modify the contents of local files in my repository clone, or add new files, and want to push the changes, I issue "git add .", "git commit" with my comments, then "git push" to my master.

However, when I delete a file locally that's tracked in the repository, "git add ." doesn't capture the rm changes. Instead, I have to "git rm [filename]" before I "git commit" to update the repository. I always forget to do this though.

Is there a git command that will "git add ." and "git rm" any files I've deleted locally, in one step? After modifying local files and deleting a couple, I'd like to issue just one command that captures all my changes before I "git commit".

Answer

manojlds picture manojlds · Oct 14, 2011

How do I undo these local changes, restoring them to the current versions in the repository?`

git reset --hard

(this will reset your index and working directory to HEAD)

Is there a git command that will git add . and git rm any files I've deleted locally, in one step?`

git add -u

(it wont add new files)

If you want to add new files, remove rm'ed files, and stage modifications to files:

git add -A