一.git了解
分布式版本控制系统
(1)之前用过svn版本控制系统,他们的区别是:
a.git是分布式的,svn不是
b.git把内容按原数据方式存储,而svn是按文件
c.git分支与svn的分支不同
d.git没有一个全局的版本号,而svn有
e.git的内容完整性要优于svn
(2)集中式vs分布式
集中式版本控制系统,版本库是集中存放在中央服务器的,干活的时候用自己的电脑,每次先要去中央服务器取得最新的版本,然后干活,完了再提交到中央服务器
特点:需要联网才能工作
分布式版本控制系统:没有中央服务器,每个人的电脑都是一个完整的版本库
特点:不需要联网,安全
二.git安装配置
1.安装地址:https://git-for-windows.github.io/
2.配置:
(1)用户信息:用户名称和邮件
$ git config --global user.name "runoob" $ git config --global user.email test@runoob.com
如果用了global,那么更改的配置文件就是位于你用户主目录下的那个,以后所有项目都会默认使用这里配置的用户信息
(2)查看配置信息
git config --list
三.创建版本库
1.选择合适的地方,创建一个空目录
2.git init把这个目录变成可以管理的仓库
四.工作区和暂存区
电脑里能看到的目录,叫做工作区
暂存区:git add把文件添加到暂存区,git commit就是往master分支上提交更改.
五.常见命令
git status 查看仓库当前的我状态
git diff 查看差异
git add a.txt 将文件添加到暂存区
git commit -m "描述" 提交
git reset --hard ^/commit id 回退
git log 查看提交历史
git reflog 查看命令历史
git checkout -- a.txt 可以丢弃工作区的修改或者恢复被删除的文件 / 其实使用版本库里的版本替换工作区中的版本,无论工作区是修改还是删除,都可以一键还原
git rm 用于删除一个文件
六.远程仓库
1.创建ssh key
ssh-keygen -t rsa -C "email"
2.登录github,添加ssh key,将id_rsa.pub复制到ssh key文本框里面
先有本地库,后有远程库
1.在github添加远程库 create a new repo
2.在本地的learngit仓库下运行命令:
git remote add origin git@github.com:xueYaFang/learngit.git
3.推送:第一次 git push -u origin master
以后:git push origin master推送最新修改
先创建远程库,再从远程库克隆
git clone git@github.com:xueYaFang/first.git
七.分支管理
(1).常用命令
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b<name>
合并某分支到当前分支:git merge<name>
删除分支:git branch -d <name>
查看分支合并图:git log --graph
(2)无法自动合并分支时,必须人工解决冲突,解决冲突后再提交
(3)分支管理策略:master分支稳定,仅用来发布新版本,创建新分支dev干活,小团队在分支dev干活,每个人在dev上都有自己的小分支,往dev上合并即可
合并分支时,加上--no-ff参数就可以用普通模式合并,合并的历史有分支可以看出来,如果用fast forword合并就看不出来曾经做过合并
(4)bug分支:
git stash 可以将当前工作现场"储藏"起来,等以后恢复现场后继续工作
git stash pop修复后回到工作现场
(5)开发一个新feature,可以通过git branch -D<name>强行删除
八.标签管理
创建标签:
git tag<name>用于新建一个标签,默认为head,也可以指定一个commit id
git tag -a<tagname> -m "标签信息" 可以指定标签信息
git tag -s<tagname> -m "PGP签名" 可以用PGP签名标签
git tag 可以查看所有标签
创建的标签都只存储在本地,不会自动推送到远程,所以打错的标签可以在本地删除
git push origin<tagname>推送某个标签到远程
git push origin --tags 一次性推送全部尚未推送到远程的本地标签
删除远程的标签:
(1)删除本地的
git tag -d <tagname>
(2)删除远程的
git push origin:refs/tags/<tagname>
九.怎么参与开源项目的开发
用自己账号fork这个 项目->推送修改->发起pull request
十.码云
与github差不多,命令中github改为了gitee
十一.自定义git
git config --global color.ui true
忽略某些文件时,需要编写.gitignore
.gitignore文件本身要放到版本库里,并且对.gitignore做版本管理
配置别名 git config --global alias st status
小知识:win7下怎么图形化界面创建隐藏文件
将文件名改为.ssh.即可显示文件名为.ssh