(一)写的是 本地的git库 与一些常用的Git命令,不常用的git 就没写了
(二)后面会写 github 仓库的用法
前言:git
Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus Torvalds 是这样给我们介绍 Git 的。Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.
Git的功能特性:
从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
4、在单机上合并分支。
以上功能 了解即可 看完下面的 有了基础 这些功能你就懂了!!!
前提:百度/谷歌一下 git 下载相应系统的git
第一部分:创建
新创建一个文件夹作为git库:git init 初始化git库在创建文件,利用git status 查看git状态,可以看到新创建的文件都是未追踪状态,存放在Untracked中
注意:在文件夹界面 鼠标右键会有 git Bash,git 就直接进入了该文件
夹路径。不用一个一个 cd了
第二部分:添加用户(让git 知道 who are you)
当需要commit的时候 git 会问你是谁 所以先添加用户
利用git config --global user.name yangcheng0605
利用git config --global user.email [email protected]
第三部分:添加(本地git库的管理)
-
需要给文件添加追踪状态:git add Filename ;
-
git add命令使工作区的文件添加入暂存区(等待提交committed)
-
然后使用 git commit -m '这一次修改的注释'
-
将文件从暂存区存入版本库。
-
可以用 git log 查看提交的历史状态 包含了作者 邮箱 注释
注意:当工作区的文件过多时,可以利用git add . 存放工作区所有的文件到暂存区。
如果觉得从工作区 存到 暂存区 在存到 版本库麻烦 可以直接利用:git commit -am '注释 一次性的将工作区的文件 直接存放到版本库
下面是我修改后的index .html 文件 他显示了modified状态
第四部分:撤销(看不顺眼的 ‘拉’回来)
利用git checkout 撤销这次修改:git checkout --index.html(Filename)
利用git checkout 撤销本次所有更改:git checkout -- .
当修改了文件之后 将文件从工作区添加进 暂存区 ,若发现有修改有错,可以利用git commit --amend 修改最后一次操作
当修改后的文件 利用git add 之后 信息存放在暂存区 ,想要撤销这一次提交到暂存区的信息:git reset HEAD index.html(filename)
这是我修改了index.html 文件内容 文件变成了 modified状态,将文件 git add . 进入暂存区,取消这次的提交信息,利用git reset HEAD index.html 将文件回复成modified状态。
可以看到 文件又回复到了modified状态 这时再利用 git checkout取消工作区的文件
git reset HEAD index.html:这里的HEAD 就是头指针,每次提交到版本库 都是一个版本,HEAD都会指向最新的一次提交的版本号,每次提交 HEAD头指针一直会往后移动
第五部分:删除
git 删除的指令:
-
第一种:删除提交到暂存区的信息,可以用:git rm --cached filename
-
第二种:连带工作区的文件删除,可以用:git rm -f filename
第六部分:分支的创建
我们现在所处在的地方 就是一个 master分支,当需要在创建一个分支的时候利用:git branch 分支名 -----git branch dev;
创建了分支 就需要会切换分支:git checkout dev。
查看分支:git branch
当前所在的分支 前面会有*号表示当前分支:
\ * master
\ dev
创建分支并且切换到新分支:git checkout -b dev
修改分支名称:git branch -m dev newDev
删除分支:git branch -d 分支名 (注意:不能删除当前所在的分支,切换分支后在删除)
第七部分:分支的合并
分支合并的两种情况:快速合并 和 冲突合并;
如果不冲突就是快速合并,有冲突就是冲突合并
1.先创建一个分支 git branch dev
2.我们在master中改变工作区中index.html
3.然后 commit -am 'master' 直接提交到版本库
4.切换 git checkout dev 此时的index.html 恢复到先前的状态。
5.再次改变dev 中改变工作区中index.html
6.切换回master
7.开始合并:git merge dev
出现一下错误
8.master中index.html 改变的值 与dev 中改变的值起了冲突 只需要删除master中的 >>>>>HEAD....>>>部分 就可以解决冲突
9.解决冲突就 git checkout -am 'merge master dev'
第八部分:分支的差异
git.diff: 比较工作区和暂存区文件的差异
gitdiff --staged : 比较暂存区和版本库的文件差异
git diff 版本号 版本号:比较分之内的两个版本之间的差异
版本号 可用:git log --oneline 查看所有历史版本
git diff 分支 分支:比较两个分支的最新提交版本的差异
当没有差异时 没有任何提示!
小节:版本号选择:
commit b3a731dbb1d1cc8a2c601d0c52bfc5006f854ff3(hash值)
commit ea3c95eb53cc9f8d38e5c94d2753ac9f6763966d(hash值)
上面的两个commit 就是提交版本号:
-
git选取版本号一般最少选择 4个
-
git默认选择7个
-
最好选择8个 保证版本号的唯一性
分支之间切换,如果当前分支中工作区中有文件改动,则不能使用 git checkout branchName 切换,需要使用 git stash :将整改后的文件 暂时的封存,这样才能进行分支之间的切换
当需要提取先前封存的修改时:
-
利用:git stash list -----查看当前保存的本地的一些文件
-
利用 git stash apply stash@{..}-----将stash@{..}从暂存拉到本地空间
-
利用 git stash pop stash@{..}-----效果同上
-
利用 git stash drop stash@{..}-----删除暂存中的信息
-
stash@{0}:....
-
stash@{1}:....
-
stash@{2}:....
-