问题
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".
回答1:
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 .
andgit 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
回答2:
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.
来源:https://stackoverflow.com/questions/7770364/git-undo-local-changes-git-add-git-rm