1.定义:
Git不仅是一款开源的分布式版本控制系统
2.特点:
Git则是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快照,而非仅记录差异内容,并且使用SHA-1加密算法保证数据的完整性。Git为了提高效率,对于没有被修改的文件,则不会重复存储,而是创建一个链接指向之前存储过的文件。

3.Git的三种重要模式,分别是已提交、已修改和已暂存:
已提交(committed):表示数据文件已经顺利提交到Git数据库中。
已修改(modified):表示数据文件已经被修改,但未被保存到Git数据库中。
已暂存(staged):表示数据文件已经被修改,并会在下次提交时提交到Git数据库中。

4.安装:
yum install -y git

配置个人的用户名和邮箱
git config --global user.name "wensong"
git config --global user.email "719629214@qq.com"
配置默认编辑器为vim
git config --global core.editor vim
5.命令
1.提交数据:
a.初始化, git init
b.将新建的文件添加到暂存区 git add file
c.将添加到暂存区的文件提交到本地仓库 git commit -m ‘备注’
d.查看本次修改和上次提交的文件内容的差异 git diff readme.txt
f.添加忽略文件.gitignore 放到根目录就行
e.强制将忽略的文件添加到暂存区 git add -f git.c
7.对当前某个文件的修改不想提交到暂存区,可以使用 git checkout readme.txt

2.移除数据
a.将暂存区的文件删除掉,但是本地工作目录还保留着该文件git rm —cached file.txt
b.将暂存区/本地仓库的文件删除掉。但是本地工作目录不保留该文件。git rm -f file.txt
3.移动数据
a.修改版本库中某个文件的名字 git mv readme.txt introduction.txt
b.a的步骤也可以这样 mv readme.txt introduction.txt , git rm read.txt
-
查看历史记录
-
查看历史记录。git log
一行显示更舒服:git log --pretty=oneline
-
5.还原数据
a. 还原到某个版本
还原到上一个版本 git reset —hard head^
还原到上上一个版本 git reset —hard head^^
还原到某个版本号的版本: git reset --hard 58104b3505211c7d3ed368072132564f8c85b439
b. 查看未来的某个版本:git reflog
回到未来的某个版本. git reset --hard 9ecfd50
6.标签管理
a.创建标签 git tag v1, 可以使用-m 来添加备注
b.查看所有标签 git tag
c.查看某个标签的修改 git show v1
d.删除某个标签 git tag -d v1
7.分支管理
1.创建分支, 分支之间是平行的空间
a. 查看当前分支 git branch
b. 创建分支 git branch bOne, 然后切换到该分支 git checkout bOne
c. 创建分支并且切换到该分支。git checkout -b bOne
d.删除分支,此时不能在该分支内 git branch -d bOne
2.合并分支
a. 将本地的bOne合并到master,首先我必须切换到master,git checkout master, 然后使用 git merge bOne, 确认合并成功之后,删除bOne分支 git branch -d bOne
3.内容冲突,解决冲突
冲突的产生原因:
两个已经提交的分支的相同文件相同位置的的不同操作进行了合并.
避免冲突的办法: 每次提交,先合并别的分支
冲突出现的情况如图:

a.冲突的文件内容中 =======上面的是当前分支的代码,=======下面内容是其他分支的代码,针对性的处理一下,然后重新提交到本地即可解决冲突(去掉<<<<<, >>>>>, ========, 留下你想要留下的代码,然后git add ,git commit, 确认合并之后,删除掉没用的分支git branch -d bTwo
)

b.查看解决冲突后的master分支情况
git log --graph --pretty=oneline. 或者git log --graph --pretty=oneline --abbrev-commit

6.部署Git服务器
1. 创建远程仓库, 这个就是最好把远端仓库初始化成bare仓库的原因
a.创建空目录,一般以.git结尾 mkdir linuxprobe.git
b.修改所属者和所属组 chown -Rf git:git linuxprobe.git, 如果没有git用户就使用useradd git 新建
c. 切换到linuxprobe.git目录, git —bare init 。这个时候远程仓库已经创建好了。
2. 克隆远程仓库 git clone, 目前使用https和ssh协议来克隆。这里测试我们使用ssh协议。
a.在另一台服务器上,先生成公钥和私钥(ssh-keygen
),将公钥上传到服务器上(ssh-copy-id 192.168.10.10
),
b.在另一台服务器上安装git, 通过git clone root@120.27.94.168:/root/testgit/linuxprobe.git. 将仓库拉下来
c 设置本地的git config信息
git config --global user.name "Liu Chuan"
git config --global user.email "root@linuxprobe.com"
git config --global core.editor vim
d.提交一个信息并推向服务器
git add readme.txt
git commit -m ‘readme’
git push origin master. 推向到服务器上 搞定
7.Github托管服务
1.可以在github中https://github.com/yuwensong 部署你的git仓库,使用https或者ssh协议进行通信都可以
2. 查看当前的所有远程仓库 git remote
3. 新建远程仓库
git remote add linuxprobe git@github.com:K130/linuxprobe.git
4. push到远程仓库
git push -u linuxprobe master. 推送当前master分支到代码到远程仓库linuxprobe 的master分支中
1:分布式版本控制系统对比传统版本控制系统有那些优势?
答案:去中心化设计让数据更加安全,管理文件数据更加的有效率。
2:将Git工作目录中的文件提交到暂存区的命令是?
答案:git add
3:将Git暂存区的文件上传到版本仓库的命令是?
答案:git commit
4:Git是一种非常智能的程序,它能够为我们自动解决任何分支的内容冲突情况?
答案:错误,很多时候内容冲突后需要由人来解决合并冲突。
5:为什么我们要将ssh公钥上传到Github资料中?
答案:为了让Github能够验证用户身份,从而才能顺利的管理文件数据。