我也是git新手,参考了以下部分文章,这里简单地整理一下撤销改动部分,因为这部分要谨慎一下。
GIT使用教程与基本原理 http://blog.csdn.net/wengpingbo/article/details/8985132
Git远程操作详解 http://news.cnblogs.com/n/210635/
git暂存区的理解 http://www.cnblogs.com/brothertao/archive/2011/04/01/2002444.html
Git 撤销修改 http://www.cnblogs.com/mengdd/p/3586106.html
已经会用Git了?不会这十招怎么行 http://code.csdn.net/news/2822651
当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID 被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
git commit --amend //如果你commit以后,马上amend,这时候git会直接跳到编辑commit备注里面,这样你可以修改你上次commit的备注。
git reset HEAD readme //把readme文件从暂存区域去除git reset HEAD //暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。可用来清除已经add到暂存区但不想进一步提交的内容
git reset --hard HEAD^ //完全回滚到上一个版本,HEAD是指向当前版本,^指当前版本的父版本,这个操作无法撤消。
git rm --cached <file> //会直接从暂存区删除文件,不再进行版本跟踪,工作区则不做出改变。(如果强行删除,则需要加 -f 。注意:git rm -f --cached a.txt 与 git rm -f a.txt 之间的区别: 前者保留工作区的文件,后者是全部删除。)
当执行 “git checkout .” 或者 “git checkout — <file>” 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
当执行 “git checkout HEAD .” 或者 “git checkout HEAD <file>” 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改 动。
git reset
命令git reset可以在复位版本库后,暂存工作目录树中因复位产生的与版本库的差异,以便提交。
这对于在之前的提交中发现错误并需要更改时非常有用。
这是通过--soft选项实现的,它使得Git暂存所有的因复位带来的差异,但不提交它。之后,用户可以修改这些内容再提交,或者干脆扔掉这些内容。
选项--hard要小心使用,该选项会从版本库和工作目录树中同时删除提交,--hard就好像版本库中的删除键,并且不可恢复。
git reset是以提交名称作为参数的,默认值是HEAD,可以用^和~作为提交名称的修饰符来指定某个版本。
HEAD^是指把版本库复位到当前HEAD之前的那个节点上,把HEAD这个版本的修改扔到工作目录树中,
540ecb7~3是指要复位到540ecb7之前的三个节点上,即把该提交和之前的两个提交(共三个提交)扔到工作目录树中。
下面列举几个常用的免费Git托管网站:1、 Github.com https://github.com/ 最著名的免费Git托管网站,曾一度被我天朝大墙屏蔽,缺点是免费的不支持私有项目。
2、 京东代码库 https://code.jd.com/ 京东商城的免费Git托管网站,提供一键搬迁功能,对所有公有、私有项目免费提供容量为1G的存储空间。
3、 开源中国代码托管 https://git.oschina.net/ 支持公有项目和私有项目,成员无限,项目1000个。
4、 CSDN Code https://code.csdn.net/ 支持公有项目和私有项目,提供512MB 存储空间。
5、 Bitbucket https://bitbucket.org/ 也是国外比较著名的Git托管网站,免费用户支持公有和私有项目。