git与git命令的基本使用
一.git是什么
1.定义
定义:git是一款开源的,去中心化的分布式版本控制系统。
2.git的工作原理
1.工作架构:
工作区----暂存区----本地仓库----远程仓库
其中,工作区,暂存区和本地仓库均处于本地,远程仓库是中心服务器并不属于本地。
2.git的工作特点
(1)比起老式的vcs(vertion control system)系统,git的工作是分布式的, 不会因为master的崩溃而使整个工作停工。
(2)git的分支管理:
①git按照 项目----分支----版本 分为三个层次,分支是版本的集合。
②git的分支在提交合并之前,并不会对其他的主机产生影响,而老式的svn改变分支时,所有主机上的分支都会被改变。
(3)git的元数据都保存在.git目录内,进行统一的存储管理。
3.github
1.定义
github是基于git的一个托管平台,可以创建远程仓库来保存项目工程。
2.同类产品
gitlab:私人版的github
4. git在linux上的shell应用
1.安装git:
大部分linux上集成了git插件,如缺少git可通过yum下载。
yum install git
2.配置git:
配置全局用户属性,便于与仓库进行交互并标记来源。
git config -- global user.name XXXX(username)
git config -- global user.email XXXX(email)
3.常用git命令:
(1) git init
创建本地git仓库:
进入项目所在文件夹内,执行该命令,为项目创建一个本地仓库。
(2)git add XXX
提交文件到缓存区
(3)git commit -m “XXX(comment)”
提交文件到本地仓库
(4)git commit -am “XXX(comment)”
依次提交文件到缓存区和本地仓库
(4)git status
查看版本仓库状态
(5)git diff XXX
比较文件在工作区和缓存区的差异
git diff --cached XXX
比较文件在缓存区和本地仓库的差异
git diff HEAD XXX
比较文件在工作区和本地仓库的差异
(6)git log
查看git的操作日志报告
(7) git reflog
查看所有分支的操作日志报告
(8)git reset --hard HEAD^
将当前版本回退到上一个版本
(版本信息可以从git reflog/log中查看)
(9)git reset – HEAD@{XX}
回到指定的版本,如:git reset – hard HEAD@{1}
5 .撤销修改操作
1.本地库覆盖工作区
git checkout – XXX
用本地库中的版本覆盖掉工作区中的版本
2.本地库覆盖缓存区和工作区
git reset HEAD XXX
用本地库中的版本覆盖掉缓存区中的版本
覆盖工作区,同1
3.回退指定版本
git reset --hard HEAD^
回退到当前版本的上一版本
git reset --hard HEAD@{1}
回退到1版本
4.还原误删工作区文件
rm -rf XXX
删除工作区文件
git checkout --XXX
用本地库文件覆盖工作区文件
5.还原git rm的删除操作
git rm XXX
删除工作区和缓存区版本
git reset HEAD XXX
用本地库版本覆盖掉缓存区版本
git checkout --XXX
还原缓存区后还原工作区。
6.远程仓库操作
1.添加远程仓库别名
git remote add 远程仓库名 [url]
如git remote add abc http://www.abc.helloworld.com
2.显示已存在的远程分支
git remote
3.查看远程仓库的详细信息
git remote -v
4.推送本地仓库版本到远程仓库
git push [remote-name] [local-branch-name]:[remotebranch-name]
5.同步远程仓库版本到本地仓库
第一次同步:
git clone [url]
之后的同步:
git pull [remote-name][local-branch-name]
7.分支操作
1.查看本地分支
git branch
2.查看远程分支
git branch -r
3.查看所有分支
git branch -a
4.创建分支与切换切换分支
(1)git branch [branchName]
创建分支
(2)git checkout [branchName]
切换分支
(3)git checkout -b [branchName]
创建并切换分支
5.删除分支
git branch -d [branchName] 删除分支
git branch -D[branchName] 强制删除未合并分支
6. 推送分支到远程
git push origin [local-branch-name]:[remote-branch-name]
7.合并分支
git merge [branchName]
合并子分支
8.删除远程分支
git push [remote-name] :[remote-branch-name]
将制定分支置成空
git push [remote-name] --delete [remote-branch-name]
删除远程分支