一:添加提交
将未被跟踪的文件添加到暂存区,可以添加多个文件 用空格隔开
git add filename
将暂存区里的内容提交到本地仓库
git commit -m "description"
将暂存区以及被修改(尚未提交到暂存区)的内容都提交到本地仓库,但是不会提交未被跟踪的文件
git commit -a -m "description"
如果没有添加-m 参数,那么会弹出vi编辑,在vi编辑中输入信息,如果输入信息为空,则会丢弃此次提交
git commit
这个引号不能省略!!!
git add '*.txt'
删除未跟踪的文件
(1):查看可能会删除的文件
git clean -n
(2):删除未跟踪文件-f ,删除未跟踪文件以及文件夹-df
git clean -df
二:git日志
将提交信息也显示在log之后
git log --pretty=short
--pertty=oneline //精简日志
显示指定文件的提交信息
git log filename
查看指定文件上次提交的变化
git log -p filename
以图表形式查看合并提交树
git log --graph
三:git diff的特殊说明
git diff 分为两种情况:
1:当暂存区中没有文件时,比较当前工作区中的文件与上次提交到版本库中的文件
2:当暂存区有文件时,比较当前工作区中的文件与暂存区中的文件
下面的命令比较的是(工作区和暂存区)中的文件与版本库中的文件的区别
git diff HEAD
git diff --cached 或者 git diff --staged 比较暂存区与版本库中的区别
四:切换分支
查看当前分支
git branch
创建develop分支
git branch develop
切换到develop分支
git checkout develop
创建并切换到develop分支
git checkout -b develop
将master分支合并到develop上
git merge --no-ff master
删除分支
git branch -d dev
命令行颜色设置为自动
git config --global color.ui auto
五:暂存回退
如果文件没有添加到暂存区,使用该命令可以撤销当前版本所有修改,记住-- 和filename之间有空格
git checkout -- fileName
如果文件已经添加到暂存区了,那么需要先从暂存区回退。
git reset HEAD fileName
从暂存区回退后,再次撤销修改。
git checkout -- fileName
六:远程仓库
将仓库repositoryName 设置为本地仓库的远程仓库,并且标志符设置为origin 。
git remote add origin git@github.com:username/repositoryName.git
当我们初始化远程仓库的时候,最好不要勾选initialize this repository with... .一旦勾选了,就失去了远程仓库和本地仓库的完整性
第一次推送某个分支的时候,这里是推送master分支,通过-u参数设置后,当我们之后要在这个分支上pull代码的时候,就可以直接pull了。
git push -u origin master
可以查看本地所有分支,以及远程所有分支
git branch -a
默认下载的是master分支
git clone git@github.com:xiaguangcheng/kaws.git
从远端拉取xia_4.0分支代码,-b 后面的参数可以为其他名称,但是最后和远程同名
git checkout -b xia_4.0 origin/xia_4.0
推送当前分支到远程
git push
拉取最新的xia_4.0代码
git pull origin xia_4.0
“?”也就是shift+"/"这两个组合键,可以打开github网站的键盘快捷键页面
六:状态切换
引用自Git常用的撤销操作
-
基本状态标识
- A- = untracked 未跟踪
- A = tracked 已跟踪未修改
- A+ = modified - 已修改未暂存
- B = staged - 已暂存未提交
- C = committed - 已提交未PUSH
-
各状态之间变化
- A- -> B : git add <FILE>
- B -> A- : git rm --cached <FILE>
- B -> 删除不保留文件 : git rm -f <FILE>
- A -> A- : git rm --cached <FILE>
- A -> A+ : 修改文件
- A+ -> A : git checkout -- <FILE>
- A+ -> B : git add <FILE>
B -> A+ : git reset HEAD <FILE>
B -> C : git commit
C -> B : git reset --soft HEAD^
修改最后一次提交:git commit --amend
七:子模块
如果在git中使用了子模块,那么我们通过git clone 了仓库中的代码,子模块就只有文件夹而没有内容。这个时候我们就需要
git submodule init
git submodule update
但是在执行update的过程中,经常会出现零进度,或者出现
fatal: Needed a single revision
Unable to find current revision in submodule path 'ffmpeg'
这个时候我们可以
rm -rf ffmpeg // ffmpeg子模块
rm -rf x264 //x264子模块