如何获取内核版本
cat /etc/redhat-release
hostnamectl
uname -r
uname -a
查看是否安装git
源码包安装:
tar -zvxf git-2.5.0.tar.gz
cd git-git-2.5.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install
git安装部署
git config配置用户
配置git使用用户
git config --global user.name 'ljh'
配置git使用邮箱
git config --global user.email 'ljh19960302@163.com'
语法高亮
git config --global color.ui true
查看信息
git config --list
cat .gitconfig
git初始化
初始化工作目录
mkdir git_data
cd git_data
初始化仓库,把一个目录初始化为版本仓库(可以是空目录,也可以是自带内容的目录)
git init
查看当前仓库状态
git status
git工作目录
隐藏文件介绍
git_data为git的工作目录
branches:分支目录
config:定义项目特有的配置选项
description 仅供git web使用
HEAD:知识当前的分支
hooks:包含git钩子文件
info:包含一个全局排除文件(exculude文件)
objects 存放所有数据内容,有info和pack两个子文件
refs:存放指向数据(分支)的提交对象指针
index:保存暂存区信息,在执行git init的时候,这个文件还没有
工作架构
如果想要把代码存到本地仓库,就需要先添加到暂存区域,才能添加到本地仓库,才能被版本控制系统管理起来
git基础命令
git status:查看仓库状态
touch a b c
未被跟踪的文件a b c:因为尚未提交,使用git add让其提交
git add 文件名:将文件添加到暂存区
git add a:添加a到在暂存区
可以使用git rm --cached 文件名进行撤回
git add *(.):添加当前所有文件到暂存区
git rm --cached 文件名:将文件从暂存区撤回到工作区
git rm --cached c
撤回后可以使用rm -f 直接删除,如果直接从暂存区和工作区一同删除,可以使用git rm -f b
git commit -m "add newfile a" 提交到本地仓库
将暂存区的代码提交到本地仓库进行管理,并使用-m赋予提示,生成一个hash值
自适暂存区的内容已经提交到本地仓库,所以没有了
git mv:修改已经提交到暂存区的文件名
默认git直接使用mv需要进行撤出缓存区
mv a a.txt
git status
git rm --cached a
git status
git add a.txt
git status
git commit -m "modified a a.txt"
git status
直接使用mv默认是将a从本地仓库的源文件删除,然后需要先将修改后的文件再次提交到缓存区,然后提交到本地仓库
使用git mv命令修改
git mv a a.txt
直接修改本地仓库中的内容并拉回缓存区,需要再次提交
提交
git commit -m "mv a a.txt"
git diff 文件比对
默认比对工作目录和暂存区有什么不同
因为本地工作目录中的a.txt和暂存区中的a.txt不一样,所以会显示出区别
提交:git add a.txt之后,此时工作区和暂存区内容一样,git diff则不会显示有区别
git diff --cached 比对暂存区域和本地仓库
工作目录提交到缓存区之后,缓存区会与本地仓库内容不一致
将暂存区的内容添加到本地仓库,这时所有区域都统一了
git commit -am:如果某个文件已经被仓库管理,如果在更改此文件,直接需要一条命令提交即可
此时a.txt已经被仓库管理起来了
git commit -am "说明"
git log:git commit相当于虚拟机的镜像,任何操作被做了一次快照,可恢复到任意一个位置,如果想要查看历史的git commit快照操作,使用git log
git log --oneline
一行显示详细信息
git log --oneline --decorate
使用HEAD指针显示当前的位置
git log -p
每一次commit修改的内容变化
git log -n
只显示最近n条内容
历史数据的恢复:git reset --hard 前七位hash字母
回滚数据到某一个提交位置
此时使用git log回到现在已经无法找到最后的状态值,如果需要找到所有的操作hash值,需要使用git reflog全部显示
回到未来的方式
git reflog
git分支及代码合并
一般实际项目开发中,我们要尽量保证分支是非常稳定的,仅用于发布新版本,平时不要随便直接修改里面的数据文件,而工作的时候可以创建不同的工作分支,等到工作完成后再合并到master分支上面,所以团队分支看起来会如图
常见命令
git branch:查看分支
git branch testing 创建一个测试分支
git checkout -b testing 创建并切换到testing分支
git checkout testing 切换到测试分支
git branch -d testing 删除testing分支(如果此时处于testing分支需要先切换到master分支)
实验:代码合并
流程图
初始化
mkdir data
cd data/
git init
模拟三次修改加入
touch aaa bbb ccc
git add aaa
git commit -m "add aaa"
git add bbb
git commit -m "add bbb"
git add ccc
git commit -m "add ccc"
查看指针位置
git log --oneline --decorate
此时加入testing分支进行操作
git branch testing
git checkout testing
git branch
查看现在所在的位置
指针指向了master最后一次提交
预先创建好一个testing分支
git checkout -b testing
再test中继续创建文件(模拟分支中的修改代码),并提交到仓库
touch test.ddd
git commit -m "add newfile test.ddd to testing"
git log --oneline --decorate
此时HEAD指针指向testing库中的添加test.ddd到testing本地仓库中
此时返回到主干查看本地仓库中的内容
git checkout master
ll
并没有新建的test.ddd,说明分支创建的文件不会影响到主干
git log --oneline --decorate
此时分支在master上面,记录的最后一次指针位置是master最后的一次提交位置
在master分支中创建master.eee
touch master.eee
git add master.eee
git commit -m "add newfile master.eee to master"
git log --oneline --decorate
如果testing分支功能研发完毕,需要与master分支进行合并:git merge testing
git merge testing
合并时可以选择填写信息
ls一下,发现此时成功将test.ddd合并到master分支
测试testing分支已经没有用了,需要删除这个分支重新创建
git branch -d testing
此时查看指针,显示合并时的位置
实验:冲突合并
创建testing分支
git branch testing
修改文件内容
echo "master" >aaa
因为aaa已经被仓库管理,使用-am直接提交
git commit -am "modify aaa add master"
现在进入testing分支,修改aaa文件,并提交到本地仓库
git checkout testing
echo "testing" > aaa
git commit -am "modified testing add aaa"
进入mster进行合并
git checkout master
git merge testing
cat aaa
删除想要留下的内容后重新提交
git commit -am "after merge testing"
git标签
命令:
git tag:查看有哪些标签
git tag -a 标签版本 -m "备注信息":打标签
git show:查看标签信息
git tag -d 版本号:删除标签
实验:
在不同的节点位置打上v1.0和v2.0标签
git tag -a v1.0 -m "after merge testing to v2.0"
git show 标签名称
回到老版本打标签
git reset --hard f457de4
git tag -a v2.0 -m "after add ccc to v1.0"
git tag
发布者:LJH,转发请注明出处:https://www.ljh.cool/35822.html