19年5月16号看了文章,发现写的有点啰嗦,于是重写了 -- git的配置和基本使用 01,但是还是推荐过一遍 01

git文件的三种状态

git文件状态
git文件状态em

文件在使用git进行初始化后就进入了工作区,每个工作区文件都需要提交到暂存区后,才能提交到远程仓库。(看图了解一下就好,具体等操作熟悉更能体会)git的所有版本控制信息都存储在项目顶层目录.git下

创建空的本地仓库 -- init

创建目录再使用git初始化,新建的仓库是位于master分支上的
git初始化

使用ssh连接远程仓库

初始化本地仓库后使用remote

git remote add origin git@github.com:xxxxxx/xxx.git
git remote show origin 
配置GitHub ssh pk

创建文件修改内容并提交到暂存区 -- add

git初始化

查看git文件状态 -- status

看上面

从暂存区中删除文件(不想提交该文件,要回炉重造) -- rm --cached

git初始化

将文件提交本地仓库 -- commit

git初始化
如果没有设置git的用户信息,按照如下格式修改:填入你的github信息,还有提交时必须写上注释
如果写错了提交的注释,可以使用amend修正最近一次提交的注释
修改提交注释

整个计算机的所有用户(pass)

所有仓库使用相同的用户信息(常用) -- ~/.gitconfig

git初始化

特定项目使用特定用户信息 -- .git/config

git config --local xxxxxx

查看配置信息 -- --help

内容太多不方便展示,自己操作看一看
git --help git config --list

查看提交历史 -- log

根据commen id进行唯一判断(黄色那行,自己操作看一看)
git初始化
-n :n条log
--pretty=online:简单格式输出

丢弃本次文件修改(文件内容修改太多,恢复到原来状态) -- checkout

当然,文件必须是已经提交过一次的,如示例,手抖加了多余的fishhello的内容,这是使用checkout,当然你也可以一个个删除fishhello的内容。
git初始化

删除文件操作 -- git rm rm

git rm

命令删除了一个文件并将删除的文件纳入到暂存区中,如果需要恢复该文件就要反序执行上面两个操作。

echo "文件删除操作" > shafish_file_del.txt
git add shafish_file_del.txt
git commit -m "文件删除操作"
git rm shafish_file_del.txt
ls
git reset HEAD shafish_file_del.txt   //从暂存区恢复到工作区
git checkout -- shafish_file_del.txt  //丢弃删除操作
ls

git rm删除操作

系统rm

只是单纯删除文件操作,并没有纳入暂存区中,需要add后再提交
系统rm删除操作

重命名/剪切 -- git mv

忽略文件 -- .gitignore

.gitignore

分支 -- branch

一般基于Git的开发模型:
develop分支:频繁变化的分支
test分支:供测试与产品等人员使用的分支,变化不频繁
master分支:生成发布分支
bugfix分支:紧急bug修复分支

查看当前分支

git branch

新建并进入新分支

git checkout -b 分支名

进入分支

git checkout 分支名

合并分支

需要回到主分支
git merge 分支名

删除分支

git branch -d 分支名

版本回退

git reset --hard HEAD^
git reset --hard HEAD~n
^表示回退的上级数,^表示回退到上一个版本,^^表示回退到上两个版本
n表示回退的上级数,~1表示回退到上一个版本,~2表示回退到上两个版本

根据commit id回退

git reset --hard xxxx

查看提交的操作记录

git reflog
获取commit id 后再使用reset --hard返回到最新版本

checkout 与 reset

checkout : 丢弃当前的修改,使文件与上一个版本保持一致,如丢弃工作区的文件修改;分支中使用
reset : 移除暂存区的文件到工作区,如使用add后;版本回退

保存工作现场 -- stash

状态保存、恢复
改变某些文件时,可以添加一个保存,在下一次使用时恢复。

//保存当前状态
git stash save '说明'
//列出所有保存的状态
git stash list
//恢复最新保存的状态
git stash pop
//恢复到某个状态 num指list中指定的某个状态下标
git stash apply stash{num} 

打标签 -- tag

给当前版本打上标签,标签有两只:轻量级标签lightweight 和 带标注的标签annotated

lightweight

git tag vx.x

annotated

git tag -a vx.x -m "vxxx-released"

查看当前版本所有标签

git tag

删除标签

git tag -d 标签名

查看文件修改信息 -- blame

git blame 文件名

两个文件比较差异 -- diff

比较的是暂存区和工作区的文件区别
git rm删除操作
前一个是暂存区的文件,用字母a来表示;后一个是工作区的文件,用字母b区别两个文件。
使用-表示暂存区/源文件内容,+表示工作区/目标文件内容。
@@ -1 +1,2 @@ 逗号后面数字表示行数。
比较的内容前面没有符号表示相同内容
-表示比目标文件多出的内容
+表示比目标文件缺少的内容,暂存区文件通过加减操作后就会得到目标文件内容。

比较整个项目提交与工作区的差异

HEAD表示当前最新提交

git diff HEAD

比较整个项目暂存区与仓库的差异

后面可以加上commit id

git diff --cached

远程仓库操作 -- push pull

push : 推送
pull : 远程拉取,同时会执行merge代码合并操作,相当于fetch + merge两个操作

git status 显示中文乱码

git config --global core.quotepath false