一:Git简介
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Git 是 Linus Torvalds 林纳斯·托瓦兹(Linux之父) 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
1,Git与SVN的区别
SVN是一个开放源代码的集中式版本控制系统。其优点有:易于管理,安全性更高,代码一致性非常高。
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。缺点:无法分布式开发,工作时必须联网,速度慢。
Git 优点:可以分布式开发,可以离线工作,速度快、灵活。
2,Git 与 Github 和 Gitlab 的关系
Github:使用Git做版本控制的代码托管平台。
Gitlab:是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
二:Git 工作区、暂存区与版本库
Git把管理的文件分为了两个区域四个状态。


在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本可以写成HEAD~100。
三:Git分支及管理策略
Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。

Git创建一个分支很快,因为除了增加一个dev指针,改变HEAD的指向,工作区的文件都没有任何变化!

在dev分支上提交—>合并分支—>删除dev分支图示


Git管理策略:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
每个开发者创建了属于自己的分支,在自己的分支上写代码,写完后将自己的分支合并到dev分支(或dev-review分支)上;
开发新功能时,会创建新的feature分支,然后在该feature分支上工作;
修复bug时,会通过创建新的bug分支进行修复,然后合并,最后删除。

四:Git配置
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
第一次提交文件前需要配置个人的用户名称和电子邮件地址:
git config --global user.name "hua" git config --global user.email @.com
git config –list 查看已有的配置信息
五:Git bash常用命令
git rm
从版本库中删除该文件
git diff
查看文件修改情况
git checkout
放弃对指定文件的修改
git checkout -b
创建并切换分支
git merge
将指定分支合并到当前分支,可能会出现冲突
git merge –abort 合并时发生冲突,可执行此命令放弃合并
git branch -d
删除分支
git branch -D
删除一个还没被合并过的分支
git rebase可以把本地未push的分叉提交历史整理成直线;rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
六:Git连接远程库
git clone
克隆远程库,在当前文件夹下生成一个本地库,默认只提取到master分支的数据
git clone -b
克隆远程库的指定版本
git clone -b
克隆远程库的指定分支
git checkout -b dev origin/dev 在本地创建和远程分支对应的分支
git branch –set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联
git pull origin
从远端仓库提取指定分支的数据并尝试合并到当前分支,一定要注意:不要在master分支执行该操作,否则会把其它分支的数据合并到master分支!

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
七:Git标签管理tag
Git的标签是版本库的快照,其实质是指向某个commit的指针。
Git 的tag对应于Github上的 releases。
git tag
在当前分支创建一个新标签,默认标签是打在最新提交的commit上的,注意这里有分支的区别;如 git tag v1.0
git tag 查看当前分支的所有标签
git tag
在指定commit上打标签
git show
查看标签信息
git tag -a v0.1 -m “version 0.1 released” 1094adb 创建带有说明的标签,用-a指定标签名,-m指定说明文字
git push origin
创建的标签都只存储在本地,不会自动推送到远程。使用此命令推送指定标签
git push origin –tags 一次性推送全部尚未推送到远程的本地标签
git tag -d
删除指定标签
git push origin :refs/tags/
删除远程仓库标签,注意,需要先将本地该标签删除
八:解决冲突及其他补充
冲突解决办法:
两个分支修改了同一个文件,合并时会产生冲突。解决办法就是手动把有冲突的地方进行修改,使用git status 可以查看冲突的文件,然后提交。
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。解决冲突后,再提交,合并完成。
补充:
1,分支合并
2,git stash
3,添加可忽略文件
vim .gitignore 添加可忽略文件,这些文件不会加入git版本库;Github上提供了各种开发语言相关的 .gitignore 文件
4,Github上给开源项目贡献代码
fork –> clone 到本地库–> 写代码并push到Github仓库 –> New pull request
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214573.html原文链接:https://javaforall.net
