2.4 Git Basics
来源:互联网 发布:互联网数据分析 编辑:程序博客网 时间:2024/06/05 11:54
Undoing Things
At any stage, you may want to undo something.Here, we’ll review a few basic tools for undoing changes that you’ve made.Be careful, because you can’t always undo some of these undos.This is one of the few areas in Git where you may lose some work if you do it wrong.
One of the common undos takes place when you commit too early and possibly forget to add some files, or you mess up your commit message.If you want to try that commit again, you can run commit with the--amend
option:
$ git commit --amend
This command takes your staging area and uses it for the commit.If you’ve made no changes since your last commit (for instance, you run this command immediately after your previous commit), then your snapshot will look exactly the same, and all you’ll change is your commit message.
The same commit-message editor fires up, but it already contains the message of your previous commit.You can edit the message the same as always, but it overwrites your previous commit.
As an example, if you commit and then realize you forgot to stage the changes in a file you wanted to add to this commit, you can do something like this:
$ git commit -m 'initial commit'$ git add forgotten_file$ git commit --amend
You end up with a single commit – the second commit replaces the results of the first.
Unstaging a Staged File
The next two sections demonstrate how to work with your staging area and working directory changes.The nice part is that the command you use to determine the state of those two areas also reminds you how to undo changes to them.For example, let’s say you’ve changed two files and want to commit them as two separate changes, but you accidentally typegit add *
and stage them both.How can you unstage one of the two?Thegit status
command reminds you:
$ git add *$ git statusOn branch masterChanges to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> README modified: CONTRIBUTING.md
Right below the “Changes to be committed” text, it says use git reset HEAD <file>...
to unstage.So, let’s use that advice to unstage theCONTRIBUTING.md
file:
$ git reset HEAD CONTRIBUTING.mdUnstaged changes after reset:MCONTRIBUTING.md$ git statusOn branch masterChanges to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> READMEChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: CONTRIBUTING.md
The command is a bit strange, but it works.The CONTRIBUTING.md
file is modified but once again unstaged.
It’s true that git reset
can be a dangerous command, especially if you provide the--hard
flag.However, in the scenario described above, the file in your working directory is not touched, so it’s relatively safe.
For now this magic invocation is all you need to know about the git reset
command.We’ll go into much more detail about whatreset
does and how to master it to do really interesting things in Reset Demystified.
Unmodifying a Modified File
What if you realize that you don’t want to keep your changes to the CONTRIBUTING.md
file?How can you easily unmodify it – revert it back to what it looked like when you last committed (or initially cloned, or however you got it into your working directory)?Luckily, git status
tells you how to do that, too.In the last example output, the unstaged area looks like this:
Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: CONTRIBUTING.md
It tells you pretty explicitly how to discard the changes you’ve made.Let’s do what it says:
$ git checkout -- CONTRIBUTING.md$ git statusOn branch masterChanges to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> README
You can see that the changes have been reverted.
It’s important to understand that git checkout -- <file>
is a dangerous command.Any changes you made to that file are gone – Git just copied another file over it.Don’t ever use this command unless you absolutely know that you don’t want the file.
If you would like to keep the changes you’ve made to that file but still need to get it out of the way for now, we’ll go over stashing and branching inGit Branching; these are generally better ways to go.
Remember, anything that is committed in Git can almost always be recovered.Even commits that were on branches that were deleted or commits that were overwritten with an--amend
commit can be recovered (see Data Recovery for data recovery).However, anything you lose that was never committed is likely never to be seen again.
- 2.4 Git Basics
- Git Basics
- git basics
- Git: Basics
- git basics
- Git note --Basics
- 2.1 Git Basics
- 2.2 Git Basics
- 2.3 Git Basics
- 2.5 Git Basics
- 2.6 Git Basics
- 2.7 Git Basics
- 2.8 Git Basics
- Basics
- Menu Basics
- XML Basics
- WAP Basics
- Internet Basics
- LINUX查看硬件配置命令
- vue学习之一:下载vue-cli项目
- 进程的状态分析
- 支付宝二维码脱机认证库测试过程记录(andorid平台adb shell验证)
- win7 64 位机器使用DOSBox出现illegal command:debug原因分析
- 2.4 Git Basics
- Oracle数据库安全面面观
- TensorFlow常用函数集锦(更新中)
- 四.scrapy XMLFeedSpider用法
- poi导出大数据 1000万
- 最大和字串(prefix sum,HDUOJ 1003)
- 【C++】How to libcurl and Qt Creator (MinGW)
- 1006 等差数列
- Android 百度地图使几点始终在合适的屏幕范围内显示