注意:
- Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动
- 不要使用Windows自带的记事本编辑任何文本文件
开始git项目:
- 初始化本地项目:
- 初始化:git init; //git init dir 同时创建文件夹并初始化;
- 将文件纳入版本控制: git add *.js //git add -A 加入全部文件
- 提交:git commit -m 'message';
- 从其他地方克隆项目:
- 克隆:git clone url (newfilename);//也可以clone本地的项目;
- git clone -b <branch> url
- 初始化一个裸仓库
- 初始化: git init --bare;
- 裸仓库没有working dir,不能进行git操作,纯粹是为了共享;
- 常用的创建git私有仓库方法
查看提交历史
- git log ; //git log --stat;显示每次提交文件变更;
- --pretty=oneline :只显示一行信息,包括一个 SHA-1 校验和提交说明;
- --pretty=short :不包括日期;
- git show ($id); 显示最新(某个ID )具体的提交信息和变化;
版本号及回退
- HEAD表示当前版本;上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上可以简写成HEAD之前第n个版本:HEAD~n。
- 回退到上一个版本:git reset --hard HEAD^
- 此时如果想返回先前的,只能使用commit id, 如5位commit id; git reset --hard 63e01
- Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针
- 如果暂时找不到之前的commit id, 可以使用git reflog来显示HEAD指针指到过版本
项目状态:
- 工作目录下面的所有文件包括两种状态:
- 已跟踪:指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。
- 未跟踪:其他文件都属于未跟踪文件。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。
- 检查当前状态:git status; //与最近一次提交的比较;[工作区,暂存区和版本库比较]
- git status -s //精简显示
添加与修改:
- 将修改的文件放到暂存区:git add; //添加全部文件 git add .
- *a 以a结尾;
- !add.js 除了add.js以外的文件
- doc/ doc文件夹下的所有文件
- doc/**/ doc/directory下的所有文件
- 查看更新修改:
- git diff //修改但未暂存; [工作区和暂存区比较]
- git diff --staged/--cached //修改暂存但未提交;[暂存区和版本库比较]
- 跳过暂存区域:git commit -a -m 'message'; //注意如果是本来未跟踪的话,还是要运行一次git add;
建立忽略文件:.gitignore //注意,实际上所有的git操作也是可以使用文件匹配模式的,一般会在最前面添加 \
撤销操作:
- 取消文件的修改:git checkout < file>, git checkout .; 全部
- 只对已跟踪的文件有效
- 让这个文件回到最近一次git commit或git add时的状态。
- 取消已经暂存的文件:git reset HEAD file
- 一般是针对刚刚git -add的文件
- 修改最后一次提交:git commit --amend -m 'message'; //会修改最近一次提交的信息,如果和上次信息相同,等于覆盖了上次的提交;
移除版本管理://都是对已跟踪的文件而言
- 修改还未暂存:
- git rm -f 'flie';
- 已经暂存:
- 删除文件'file'之后,运行git rm 'file' //最好在任何修改之后运行git status查看;
- 直接运行git rm 'file' ;
- 仅是移除版本管理,而不删除文件: git rm --cached 'file' //包括修改后已暂存或未暂存;
- 修改还未暂存:
- 修改文件名:
- 手动直接修改:相当于手动删除文件然后添加新文件;需要使用git rm 'oldfile'; git add 'newfile';
- 使用git修改: git mv 'oldfile' 'newfile';
恢复删除:
- 如果是删除还未提交的话,可以使用git checkout -- file
-
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”;但只能恢复文件到最新版本
-
- 如果是已经提交了,则使用版本回退
修改提交历史:
- 改变最近一次提交 : git commit --amend -m 'new commit message'
分支重命名:
- git branch -m oldname newname
- git branch -m newname