开始
- Git跟踪并管理的是修改,而非文件。
-
git remote add xxx https://git.github.com/xxx/xxx.git
添加远程仓库别名
帮助
-
git help -a
查看所有的命令 -
git help <command>
查看某个命令的文档
历史记录 Git log
-
git log
命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数;
版本回滚 Git reset
- Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(十六进制hash值),上一个版本就是HEAD,上上一个版本就是``HEAD^^``,当然往上100个版本写100个比较容易数不过来,所以写成
HEAD~100
。git reset --hard HEAD^
reset 后中间的版本记录会消失, 如果需要回到未来的某个版本, 需要得到该版本的版本号hash值 . 版本号没必要写全,前几位就可以了,Git会自动去找。
Git 版本的回退速度非常快, 因为Git内部有个指向当前版本的指针. 回退只要改变指针指向就行了.
如果没有找到记录,用git reflog
查看命令历史,以便确定要回到未来的哪个版本
工作区和暂存区
- 工作取就是在电脑里能看到的目录, 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为
stage
(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master的一个指针叫HEAD
。
image.png - 我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
commit后暂存区会被清空.
查看区别
-
git diff HEAD -- readme.txt
查看工作区和版本库里面最新版本的区别
撤销修改
-
git checkout -- file
可以丢弃工作区的修改:- 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。用命令
git reset HEAD file
可以把暂存区的修改撤销(unstage),重新放回工作区. 此时工作区有修改, 然后 checkout 再次撤销更改. 或者直接git reset --hard head
?
总之,就是让这个文件回到最近一次git commit或git add时的状态。
- 如果已经commit , 只能版本回退了.
删除
-
git rm xxxx
然后提交即可 - 误删直接checkout 即可
-
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
网友评论