1.单机版git
2.github上建立远程仓库
3.克隆远程仓库
4.git分支管理
- 本地分支管理
- 远程分支管理
5.标签管理
6.git别名
一.单机上使用git
#安装git:
yum install -y git
mkdir /data/git
cd /data/git
git init //初始化
初始化之后,目录下面会生成文件:
drwxr-xr-x 7 root root 4096 Nov 21 14:04 .git //里面有一些配置文件
把代码发布到本地仓库:
echo "werwrw222" > 222.txt //测试用的文件
#给代码文件做标记
git add 222.txt
#推送到仓库
git commit -m "add 222.txt"
#查看
git log //从下往上是最新的,上面最新版本
#或者
git log --pretty=oneline //它会以最简约的方式查询
查看仓库状态:
git status //显示缓存区的状态
回退版本:
#这里有两个版本
git log --pretty=oneline
e866832b0a64b514434ac77f950312392a4a944d chanbe 111.txt
651630933e0f435c5818c526666da3eedda18fda add 111.txt
#回退到上一个
git reset --hard 651630933e0f435c5818c526666da3eedda18fda //可以不用写全
假如回退错了,又想原来的了,可以:
#查看git 记录
git reflog
#还原
git reset --hard 651630933e0f43
假如删除了代码文件,想还原只需要把仓库里的代码文件checkout,因为仓库里的并没有删除:
rm -f 111.txt
git checkout -- 111.txt
怎么去除代码文件标记,撤出缓存区的更改:
git add 111.txt
git status
#撤出缓存区
git reset HEAD 111.txt
删除仓库文件:
git rm -f 111.txt
git commit -m "delete 111.txt"
恢复:
git reset --hard 标记
二.github上建立远程仓库
windows使用之前最好先绑定一下host,这样不会出现访问失败的问题:
首先到github创建一个账号,建立好了之后:
建立完成之后,建立公钥,用在服务器上ssh登入github远程仓库
在服务器上操作:
ssh-keygen //生成公钥
可以一直回车。
公钥存放的路径:
把里面的内容粘贴到github的key里面,sshkey完成。
进入到你最开始创建的项目里面:
服务器上执行这些命令之后,测试一下最终结果:
ssh -T [email protected]
如果没有报错就表示完成,如果出现ssh 22号端口访问失败的问题,可以:
在存放公钥的目录下,新建config文件:
vim /root/.ssh/config
Host github.com
User jiangyouren //User后面是自己的github的账号名,其他可以不变
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
测试一下,应该是可以了。
三.克隆远程仓库
在服务器上操作:
git clone https://github.com/jiangyouren/ligenstat.git //后面是自己想要克隆的链接
进入到克隆的目录:
cd ligenstat/
在服务器上更改自己在github上的项目,就要先克隆下来,然后:
#假如你更改了代码文件
vim README.md
#标记,commit
git add README.md
git commit -m "change readme.md"
#上传到github
git push //因为你是用密钥认证的,所以不用输入用户名,密码
此时,你在github上已经可以看到更改后的代码文件了。
如果之后又在github上更改了文件,服务器上怎么更新呢:
服务器上执行:
git pull
四.分支管理
git最重要的部分之一,用于协同编写大项目,各个分支互不影响,分支完成之后可以合并。
- 本地分支管理
#分支查询
git branch //查询结果中带有*号的分支就是当前所在的分支
#分支的创建
git branch aaa //aaa是创建的分支名字
#切换分支
git checkout aaa
注意:新创建的分支它默认会生成master已经存在的代码文件,各个分支代码文件互不影响
#分支的合并
#合并分支有一个原则,那就是要把最新的分支合并到旧的分支
#切换到目标分支下
git checkout master
#把aaa分支合并到master
git merge aaa
分支合并的冲突:
分支有互不相同的内容合并就会有冲突(a属于b或者b属于a不会)
模拟一下冲突:
#分支master和abc都包含文件222.txt
#两个分支都更改222.txt,更改内容不同
git checkout abc
echo "lsjls" >> 222.txt
git add 222.txt
git commit -m "change 222.txt"
echo "jffsslllll" >> 222.txt
git add 222.txt
git commit -m "change 222.txt"
#把abc分支合并到master
#切换到master分支
git merge abc
#结果,报错:
CONFLICT (content): Merge conflict in 222.txt
解决办法:
#合并之前先查看哪个版本是你想要的
cat 222.txt
如果abc是你想要的,你就把master改成和abc一样的,再合并。
如果master你是想要的,你就把abc改成master在合并。
删除分支:
git branch -d aaa //删除分支aaa
- 远程分支管理
项目中使用分支原则:
master分支非常重要,用来发布线上的代码,平时开发代码不在这个分支上。
创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master
开发人员则应该在dev的基础上再分支成个人分支,个人分支里面开发代码,然后合并到dev分支。
可以在github上创建分支:
克隆到服务器之后,注意克隆默认只能克隆master分支。
#查看远程分支
git ls-remote origin
#把其他分支克隆下来
git checkout -b dev origin/dev //后面的是远程的分支,此时已经切换到dev分支下了
如果我们在分支dev下更新了代码
echo "jjjj333.txt" >> 333.txt
git add 333.txt
git commit -m "add 333.txt"
#推送到远程仓库
git push origin dev //后面是指定远程分支分支
git push //推送所有分支
假如我们本地又创建了一个远程没有的分支,怎么推送呢:
git branch dev2
git checkout dev2
echo "jjj44.txt" > 444.txt
git add 444.txt
git commit -m "add 444.txt"
git push origin dev2
此时github上已经有dev2了。
五.标签管理
其实就是给当前的版本做个标记,以便回退到此版本。
#查询标签
git tag //按字母顺序排序
#新建标签,默认是以最新commit
git tag -a v1.4 -m 'version 1.4'
-m 标签描述 -a指定标签
#查看标签v1.4信息
git show v1.0
#也可以之间创建
git tag v1.0 //创建了标签v1.0
#针对历史commit打标签
git log --pretty=oneline
git tag v0.5 13dff263d5c //后面是以前更改的commit信息
#删除标签
git tag -d v1.4
#删除远程标签
git push origin :refs/tags/v1.4
#推送指定标签到远程
git push origin v1.0
#推送所有标签
git push --tag origin
在github上查看标签
六.别名设置
#设置别名
git config --global alias.ch checkout
#查看别名
git config --list |grep alias
#取消别名
git config --global --unset alias.ch
配置文件:
/root/.gitconfig