git学习清单
- 什么是git
- git的安装
- git基本使用
- git当前状态查询
- git版本控制
- 添加远程仓库
- 分支管理
- 标签
git简介
git是一个分布式版本控制系统,用于代码管理,是多人合作代码合并解决冲突的一个利器
git安装
直接到官方网站上下载安装即可
git的基本使用功能
这部分先抛去远程仓库,先讲一下本地仓库的使用。步骤如下:
-
创建版本库
首先创建一个空的文件夹,然后初始化版本库
mkdir MyDemo
cd MyDemo
git init
- 编写自己的代码/文件等
- 把文件提交到仓库中
这里的意思就是,虽然在文件夹中是存在了你编写后的文件/代码,但你建立的仓库还没有加进来这些内容,所以要执行提交命令
git add readme.txt
git commit -m “写了一个readme文件”
或者
git add .
git commit -m “提交所有的代码/文件”
执行完这些命令后,后面应该会出现 一些文件被修改的情况
git当前状态查询
git status
该命令会提示有没有已修改/添加的文件等待被add/commit
git diff
该命令提示有哪些代码/文件与上一个版本有什么不同
git版本控制
git log
git log --pretty-oneline //去除其他无用消息,只显示id和注释
使用上面的命令查看之前的版本
git reset --hard HEAD^
回退到上一个版本
git reflog
查看所以版本记录,包括最新版本被回退的信息
找到,之前的新版本ID
git reset --hard ID
返回到新版本
添加远程仓库
注册一个git代码管理网站,常用的有github,码云,coding等
ssh-keygen -t rsa -C "youremail@example.com"
首先使用命令生成密钥,将密钥添加到选择的网站上,密钥一般存储在C:\Users\用户名称.ssh
如:github
建立和你本地项目同名的仓库
复制github仓库地址
git remote add origin https://github.com/xxx/MyDemo.git
建立连接
git push -u origin master
把本地仓库内容推送到远程仓库上,第一次推送需要加**-u**
分支管理
-
master主分支
一般由develop功能集成后合并
-
hotfix维护分支
直接从master分支fork出来的分支,用于bug修复,修复完成后应该马上合并回master分支和develop分支,master分支用新版本号,打上tag
-
develop发展分支
主要开发分支,新功能的分支由它扩展
-
feature功能分支
每个新功能位于自己的一个分支,使用decelop分支作为父分支,新功能完成后,合并回develop
-
预发布测试分支
develop功能集成后,由develop分支fork一个release发布分支,release分支主要用于bug修复,文档生成和其他面向发布的任务,测试完毕后合并到master分支,并分配一个版本号打上Tag
创建分支
创建dev分支,并切换到dev分支
git branch dev
git checkout dev
合并成一句话
git checkout -b dev
查看所有分支
git branch
在dev分支上编写代码,
提交
git push origin [分支名称]
git checkout master
切换到master分支
把dev分支的结果合并到master分支上
git merge dev
合并完成后,删除dev分支
git branch -d dev
解决冲突
在多人合作开发中,master不会只有你自己一个合并更新的,当另一个人更新了master,你再合并的分支的话就会产生冲突
- 如在本地仓库中master和自己的分支产生冲突
Auto-merging readme.txt
CONFLICT (add/add): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
git会把所有修改过的内容都整合在一起,这里需要自己手动修改
上传、提交、删除
git add .
git commit -m “整合”
git push origin master
git branch -d [分支名字]
- 远程仓库和其他人更新同一个分支出现冲突时
git push origin master
error: failed to push some refs to ‘https://github.com/Dream97/GitDemo.git’
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push --help’ for details.
如上,当我想更新master分支时,发现远程的分支早就被别人修改过,抛出错误
我需要把远程的仓库pull下来
git pull
执行到这一步发现我的代码又被合并了,手动修改
git add .
git commit -m “整合”
git push origin master
有时候git pull会失败,是因为没有指定本地分支和远程分支的链接,需要配置远程库和本地的链接
git branch --set-upstream-to=origin/[名字] [名字]
git pull
标签
标签(tag)用于标识版本的的一个快照,指向某个commit的指针,创建和删除标签都是瞬间完成的
git checkout master //切换到要打标签的分支
git tag v1.0 //打新标签
git tag //查看所有标签
也可以把标签打到历史提交的commit上
git log --pretty=oneline --abbrev-commit //查找历史提交
git tag v0.9 [历史commit id]
git tag
查看标签信息
git show v0.9
指定标签信息
git tag -a v0.9 -m “debug version”
推送标签
git push origin v0.9
git push origin --tags //推送全部尚未推送到远程的本地标签
删除本地标签
git tag -d v0.9
删除远程标签
git tag -d v0.9
git push origin :refs/tags/v0.9
参考资料
[2]Git教程(廖雪峰)