★★★★★ 提交修改
文件修改后,git add 把文件添加到了stage,此时尚未commit。
此时如果把文件进行二次修改。然后 commit 。第二次修改之后的文件并未提交。
解决方法:再次 git add →git commit 。
★★★★★ 撤销修改
git checkout --filename 这个命令能丢弃工作区的修改。(checkout实际上是用版本库中的文件替换工作区的文件)
当文件被做出了一些不需要的修改,可以用 git checkout --filename 来丢弃那些修改(这是文件并未 add 的时候)。
当文件做出了不需要的修改,并且已经 add 到暂存区了。这时候需要把暂存区的修改回退到工作区,然后 checkout 文件所修改的内容。
(文件 add 之后)步骤:① git reset HEAD filename
②git checkout --filename
引用 一个网友(zjuwujunchao)对git reset 的总结:
为了搞清楚reset和checkout的区别做的一些试验, 应该基本正确, 仅供参考 :-D git reset HEAD^ //回退至上一版本, 并重置缓存区 git reset HEAD~10 //回退至10个版本之前, 并重置缓存区 git reset --soft HEAD //回退时不重置缓存区和工作区 git reset --mixed HEAD //回退时重置缓存区, 默认选项 git reset --hard HEAD //回退时重置缓存区和工作区 git reset //不指定HEAD, 用来清空缓存区的修改 git reset filename //清空缓存区指定文件的修改 git reset --hard //不指定HEAD, 用来清空工作区和缓存区的修改 git reset --hard filename //清空工作区和缓存区指定文件的修改 git checkout branch //切换branch, 同时重置缓存区和工作区, 如果工作区有修改没有提交, 需要先commit或stash git checkout branch --force //切换branch, 同时重置缓存区和工作区 git checkout --force //不指定branch, 用来清空工作区的修改(缓存区不变, 如果之前有add, 则工作区与缓存区一致) git checkout -- filename //清空工作区指定文件的修改
★★★★★ 删除文件
当删除一个仓库内的文件时:①为add到stage内,随便删就是了。②已经add到stage内,并且已经commit到master中。
首先 rm filename,然后看一下仓库状态,你会得到这样的返回:
此时有两个选择,也就是返回信息中连续的两个括号中的提示指令:
①从版本库中删除文件,用 git rm filename 然后 git commit 。
②失误删除,需要找回文件,用 git checkout --filename。
原文:http://www.cnblogs.com/lihongli/p/6293060.html