分布式版本管理软件git的使用
git基础知识
git:分布式版本管理软件
版本管理:记录文件变更记录
分布式:可以有多个本地版本库,A电脑可以有一份、B电脑也可以有一份,各自独立,通过远程版本库合并协同统一
集中式:只有一个远程版本库(svn,cvs,多人协同需提交至远程版本库)
查看配置信息
- git config –global –list
配置提交的显示的用户名与邮箱
git config –global user.name “显示的用户名”
git config –global user.email “显示的邮箱”
git工作目录划分
一般都有远程仓库,从远程仓库直接克隆即可
- git clone address(远程仓库地址)
本地测试时,也可以初始化本地仓库
- git init
添加文件至暂存区
git add (指定文件)
git add . (.代表所有变更文件)
查看git文件管理状态
- git status
提交文件至本地版本库
- git commit -m
比较文件变更记录
显示暂存区和工作区的差异
- git diff
显示暂存区和上一次提交(commit)的差异
- git diff –cache
显示两次提交之间的差异
- git diff [first-branch]…[second-branch]
查看提交记录
- git log
本地版本库回退至指定版本,具体参数看文档即可
- git reset
查看回退历史记录
- git reflog
放弃工作区修改
- git checkout – file (与切换分支命令一致,多了–)
撤销暂存区修改,回退至工作区
- git reset (命令与版本回退一致)
场景使用案例
1.放弃工作区文件修改 git checkout HEAD
2.放弃暂存区修改 git reset HEAD ,回退至工作区,如需放弃,则参考1
3.本地分支回退,git reset commit_id
远程仓库
添加远程版本库关联
- git remote add origtin(远程版本库别名) address(远程仓库地址)
推送本地版本库至远程版本库
- git push -u origin master(本地主分支)
查看远程版本库信息
- git remote -v
克隆远程版本库
- git clone address(远程仓库地址)
分支管理
创建分支并切换分支
- git checkout -b
创建分支
- git branch dev
切换分支
- git checkout dev
查看分支
- git branch
删除分支
- git branch -d
合并分支
- git merge
当你要切换分支时且工作区已经改动了代码,可先把工作区代码暂时存储下来,保存在堆栈区
- git stash
查看堆栈区暂存信息
- git stash list
从堆栈区恢复
- git stash pop
复制某个提交至当前分支
- git cherry-pick commit_id
拉取远程代码
- git pull address(git地址)
多人协作工作模式
1.git push original
2.若失败,git pull
3.若冲突,解决冲突,git commit -m ‘备注信息’
4.推送,git push
合并多个分支的提交信息
- git rebase
标签管理
创建标签 git tag v1.0
删除标签 git tag -d v1.0
查看标签 git tag
标签明细
git show
忘记打标签,补标签
查看提交版本
git log –pretty=oneline –abbrev-commit
git tag v0.9 f52c633
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
- git tag -a v0.1 -m “version 0.1 released” 1094adb
推送单个标签至远程仓库 git push origin
推送所有标签至远程仓库 git push origin – tags
其他
仓库管理站点:github gitgee
版本库软件:source tree
某些文件不添加至版本库,则把这些文件或目录添加至.gitignore文件中即可
Git Flow 介绍
Production 分支
也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改。
Develop 分支
这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
Master/Devlop 分支
所有在Master分支上的Commit应该打上Tag,一般情况下Master不存在Commit,Devlop分支基于Master分支创建
Feature 分支 feature1 feature2
Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支,毕竟保留下来意义也不大。
Release 分支
Release分支基于Develop分支创建,打完Release分支之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于Develop分支新建Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
Hotfix 分支
hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag。
基本流程
开发代码流程
拉取代码
主分支master 远程分支 master
基于master分支 创建 develop分支
基于develop分支 创建 feature-*分支
feature-*分支开发完 合并至 develop分支
基于develop分支 创建 release分支
release分支测试完 合并至 master分支/develop分支
推送master分支/develop分支
打标签,标签推送至远程
常用命令
帮助
git help 显示某个命令的详细使用文档
git -h 显示某个命令的使用说明
初始配置
git config –global user.name [] 配置用户名
git config –global user.email [] 配置邮箱
git config –global core.editor [] 配置编辑器
创建项目
git clone 克隆远程仓库
git init [project] 初始化本地项目
添加
git add 添加文件到暂存区
git commit -m 将暂存区的内容提交到 HEAD
git commit -am 将 add 和 commit 合并操作
git commit –amend -m 将 add 和 commit 合并操作且合并到上次 commit
显示
git status 显示状态
git diff [HEAD] 显示差异
git log 显示日志
git show 显示某个 commit 的详细内容
git blame 显示文件每行的 commit 信息
撤回
git restore 撤回工作区的修改
git restore –staged 将已提交到暂存区的修改撤回工作区
git reset [–mixed] 将当前版本撤回到某个 commit,保留工作区的修改
git reset –soft 将当前版本撤回到某个 commit, 保留工作区和暂存区的修改
git reset –hard 将当前版本撤回到某一个 commit,不保留工作区的修改
git rm 将文件从工作区和暂存区删除
git mv 将文件从工作区和暂存区移动或改名
分支
git branch [–list] 显示所有分支
git branch -a 显示远程分支
git branch 创建分支
git branch -d|-D 删除分支
git branch -m 重命名当前分支
git switch 切换到已有分支
git switch -c 创建并切换分支
git merge 将某个分支合并到当前分支
git tag 给当前分支打标签
git stash 将工作区的更改存储到脏工作目录中
git stash apply 将脏工作目录中的数据恢复到工作区(不会删除脏工作目录保存的数据)
git stash drop 将脏工作目录中的数据删除
git stash pop 将脏工作目录中的数据恢复工作区并删除脏数据
远程
git remote [-v] 显示远程库
git remote show 显示某个远程库的信息
git remote add 添加远程库链接
git remote rm 删除远程库链接
git remote rename 重命名远程库
git pull [] 拉取远程库到本地库
git push [-u ] 将本地库推送到远程库
git push origin –delete |git push origin :crazy-experiment 删除远程分支
git fetch 从远程库获取到本地库
checkout 该命令职责不明确,不建议使用;
git checkout 丢弃工作区的修改
git checkout -f 强制丢弃工作区和暂存区的修改
git checkout 切换分支
git checkout -b 创建并切换分支
本作品采用《CC 协议》,转载必须注明作者和本文链接