git学习(廖雪峰学习网站)
参考中文教程
https://git-scm.com/book/zh/v2
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
一、git的安装
yum install git
二、创建git本地库
1、git init hellogit
2、mkdir hellogit
cd hellogit
git init 或者git init . #后面有个点表示当前目录创建版本库
git init --bare demo 创建一个裸库
三、git的时光穿梭机(时间线)
1、版本回退
git add . #将文件添加到暂存区
git commit -m "myfirst commit" #将暂存区中所有文件提交到版本库中
git log # 查看日志
git log --pretty=oneline # 查看日志,单行显示
git reflog #查看引用日志
git reflog --pretty=oneline #查看引用日志, 单行显示
git reset --hard HEAD^ #将HEAD指针指向前1次的提交(时间线)
git reset --hard HEAD^^ #将HEAD指针指向前2次的提交(时间线)
git reset --hard HEAD~1 #将HEAD指针指向前1次的提交(时间线)
git reset --hard HEAD~2 #将HEAD指针指向前2次的提交(时间线)
git reset --hard HEAD~100 #将HEAD指针指向前100次的提交(时间线)
2、工作区和暂存区
工作区work directory
暂存区 stage
版本库 repository
放弃(丢弃)工作区的所做的更改
git checkout
git checkout -- readme.txt
将暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD readme.txt
##可以查看工作区和版本库里面最新版本的区别:
git diff HEAD -- HelloWorld2.java
3、删除文件
1、添加文件、删除、提交。
git add test.txt
git commit -m "add test.txt file" #提交修改
rm -rf test.txt
git add/rm test.txt
git commit -m "delete test.txt file" #提交修改
2、误删除文件,只有文件被添加到了暂存区就可以用git使其恢复。
git add test2.txt
rm -rf test2.txt
git checkout -- test2.txt #撤销某文件工作区所做的修改
git reset HEAD test2.txt
(
还记得如何丢弃工作区的修改吗?
git checkout -- readme.txt
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
git reset HEAD readme.txt
)
注意:如果一个文件创建后没有被add到暂存区,则git无法使其恢复。
三、分支创建和切换
git branch dev 创建分支
git checkout dev 切换分支
git checkout -b dev 创建并切换分支
切换到dev分支后,在dev上进行创建新文件、修改新文件内容,并提交到dev分支。
git checkout master #切换回master分支
git merge dev #当前处于master分支上,将dev分支的新文件(新修改)合并过来
(git merge命令用于合并指定分支到当前分支。)
将dev的代码合并到master后,我们就可以删除dev分支了
git branch -d dev #删除dev分支
准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:
$ git merge --no-ff -m "merge dev to master" dev
#Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash # 存储一个stash
git stash list #查看stash 列表
git stash pop # 恢复最近一个stash,并删除这个stash
git stash apply stash@{0} #恢复指定的stash
git stash drop stash@{1} # 丢掉stash@{1} 删除stash
查看比较差异
git diff 查看工作区与暂存区的差异
git diff --cached [
...] 查看暂存区与本地最新版本库的差异
git diff HEAD [...] 查看工作区与本地最新版本库的差异
四、远程仓库的使用、分支的使用
git clone -b 1.3.x https://github.com/mybatis/spring.git (克隆远程仓库)
git remote add origin git@github.com:michaelliao/learngit.git 将本地仓库关联到远程的一个空仓库
##推送分支到远程
git push -u origin master
git push orgin master
#查看日志
git log --pretty=raw
#初始化一个裸库 远程仓库
git init --bare share.git
git cat-file -t c4d898 # 查看对象类型
git cat-file -p c4d898 # 查看对象内容
git cat-file -s c4d898 # 查看size 大小
git mv oldfile newfile #git重命名文件
查看git命令帮助
git help branch
git branch --help
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master:master #将本地master分支推送到远程master分支上
删除bug分支、特性分支
git branch -d issue-110 #-d删除分支
git branch -D feature-1 #-D强制删除
git clone git@github.com:michaelliao/learngit.git
git checkout -b dev origin/dev #将远程仓库的dev分支检出到本地的dev分支
git branch --set-upstream-to=origin/dev dev #指定本地dev分支与远程origin/dev分支的链接
git pull # 再执行git pull ok了。
git remote show origin #查看远程仓库信息
git remote rename pb paul
$ git remote
2.查看远程分支
git branch -r
3.查看所有的分支
git branch -a
git checkout -b master origin/master
git checkout -b 1.2.x origin/1.2.x #检出远程仓库的1.2.x分支到本地的1.2.x分支
五、tag的使用
git checkout master #切换到master分支
git tag v1.0 #在master的最新提交上打一个tag,tag名称为v1.0
git tag #查看本地有哪些tag
git log --pretty=oneline --abbrev-commit
#使用指定的commit_id来打标签
git tag v0.9 f52c633
#查看tag详情、查看某个commit的详情
git show v0.9
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
git tag -d v0.1 #删除标签
如果要推送某个标签到远程,使用命令git push origin :
$ git push origin v1.0
$ git push origin v1.0:v1.0
切换到tag
git checkout v1.0
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
$ git tag -d v0.9 #先删除本地tag
$ git push origin :refs/tags/v0.9 #推送 删除远程tag
### 删除远程分支和本地分支
git push origin -d Chapater6 # 删除远程分支
git branch -d Chapater8 #删除本地分支
( -d 就是--delete ,而-D是 --delete --force)
需要配置一下git的接收配置,执行如下命令即可正确提交:
git config receive.denyCurrentBranch ignore
## .git/config中配置用户账号信息
[user]
name = user1
email = user1@163.com
## 以alibaba的dubbo项目为例子
git clone https://github.com/apache/incubator-dubbo.git #克隆dubbo的源码
##版本时光穿梭机 可以在多个tag中来回切换、穿梭
git reset --hard dubbo-2.6.4
git reset --hard dubbo-2.6.5
git reset --hard dubbo-2.6.6
git reset --hard dubbo-2.7.0
git reset --hard dubbo-2.7.1
git checkout -b dubbo-2.7.x tag_name
#获取了tag_name的临时快照
git checkout tag_name
#基于某个指定tag签出一个新分支
git checkout -b branch_name tag_name
例如 git checkout -b dubbo-2.6.6 dubbo-2.6.6 切换到新分支dubbo-2.6.6分支上基于tag dubbo-2.6.6。
六、git的命令别名
配置一个git last,让其显示最后一次提交信息:
$ git config --global alias.last 'log -1'
这样,用git last就能显示最近一次的提交:
$ git last
七、gitlab的搭建
在centos7.5系统中安装gitlab