Git是什么?
Git是目前世界上最先进的分布式版本控制系统。
目录
一、git简介
1.安装后的首次配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
注意
git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2.创建版本库
1.创建一个空目录
2. 通过git init
命令把这个目录变成Git可以管理的仓库
$ git init
3.把文件添加到版本库
$ git add <file>
$ git commit -m <message>
git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录
每次修改,如果不用
git add
到暂存区,那就不会加入到commit
中。
二、版本控制
1. 版本回退
$ git reset --hard commit id //版本回退 可用HEAD^ 回退
$ git log //查看提交历史,以便确定要回退到哪个版本
$ git log --pretty=oneline //单行显示
$ git reflog //查看命令历史,以便确定要回到未来的哪个版本
2.撤销修改
$ git status //查看状态
$ git checkout -- file //丢弃工作区的修改
$ git reset HEAD <file> //撤销暂存区的修改
1.没有
git add
时,用git checkout -- file
2.已经
git add
时,先git reset HEAD <file>
回退到1,再按1操作3.已经
git commit
时,用git reset
回退版本4.推送到远程库?
3.删除文件
$ rm file //删除工作区文件 手动删除效果相同
$ git rm file //从版本库中删除该文件
$ git commit -m "move file" //提交修改
删除文件可用 $ git checkout -- file 恢复
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!
三、远程仓库
1.通过SSH连接远程仓库
步骤:
1.本地电脑生成ssh秘钥——公钥私钥
//打开git bash 默认目录,输入下面命令生成email的ssh秘钥
ssh-keygen -t rsa -C "youreamil"//根据git bash 的回复的秘钥目录找到id_rsa和id_rsa.pub
复制公钥 id_rsa.pub内容与git仓库设置中绑定ssh key
2.在第三方git仓库绑定SSH秘钥——如gitee(码云) github
2.添加远程库
$ git remote add origin git@server-name:path/repo-name.git //关联远程仓库
$ git push -u origin master //第一次推送到远程仓库
要关联一个远程库,使用命令
git remote add origin git@server-name:path/repo-name.git
;关联后,使用命令
git push -u origin master
第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令
git push origin master
推送最新修改;
3. 从远程库克隆
$ git clone https/ssh
4.拉取和推送
$ git push //推送到远程库
$ git pull //从远程库拉取
5.关联多个远程库
git 可以同时关联多个远程库,比如同时关联 github 和 gitee ,需要进行以下配置:
$ git remote -v //查看远程库信息 默认名为origin
$ git remote rm origin //删除已有的远程库
$ git remote add github https/ssh //关联GitHub的远程库
$ git remote add gitee https/ssh //关联Gitee的远程库
$ git push github master //推送master分支到GitHub
$ git push gitee master //推送master分支到Gitee
四、分支管理
1.创建与合并分支
$ git branch //查看分支
$ git branch <name> //创建分支
$ git branch -d <name> //删除分支
$ git merge <name> //合并分支
$ git checkout <name> || $ git switch <name> //切换分支
$ git checkout -b <name> || $ git switch -c <namr> //创建+切换分支
2.解决冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用
git log --graph
命令可以看到分支合并图。
3.分支管理策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master
分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev
分支上,也就是说,dev
分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev
分支合并到master
上,在master
分支发布1.0版本;
你和你的小伙伴们每个人都在dev
分支上干活,每个人都有自己的分支,时不时地往dev
分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
Git分支十分强大,在团队开发中应该充分应用。
合并分支时,加上
--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并。
五、标签管理
1.创建标签
$ git tag <tagname> //新建一个标签,默认为HEAD,也可以指定一个commit id
$ git tag <tagname> <commit id> //对指定commit新建标签
$ git tag -a <tagname> -m "describe" //指定标签信息
$ git tag //查看所有标签 按字母排序
$ git show <tagname> //查看标签信息
2.标签操作
$ git push origin <tagname> //推送一个本地标签;
$ git push origin --tags //推送全部未推送过的本地标签;
$ git tag -d <tagname> //删除一个本地标签;
$ git push origin :refs/tags/<tagname> //删除一个远程标签。
六、自定义Git
1.忽略特殊文件
忽略某些文件时,需要编写
.gitignore
;
.gitignore
文件本身要放到版本库里,并且可以对.gitignore
做版本管理!
2.配置别名
$ git config --global alias.co checkout