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

13.1k views Asked by At

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".

2

There are 2 answers

1
manojlds On BEST ANSWER

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
0
p4010 On

You can revert to your last valid commit (i.e. copy of the remote repo, in tour example) by issuing:

git reset --hard HEAD

Additionally, I suggest reading the useful http://progit.org/2011/07/11/reset.html page to better understand how reset work and what the index is, and why git add and git rm are separate commands.