什么是Git?
Git是一个分布式版本控制软件,可以有效、高速的处理从很小到非常大的项目版本管理。
分布式相比于集中式的最大区别在于开发人员可以提交到本地,每个开发人员通过克隆命令,在本地机器上拷贝一个完整的Git仓库。
下图是经典的Git开发过程。
git图片.jpgGit有什么用?
从一般的开发人员角度来看,git有以下功能::
-
从服务器上克隆完整的Git仓库(包括代码和版本信息)到本地。也可以克隆项目的其它版本
-
在本地根据不同的开发目的,创建分之,修改代码。
-
在本地自己创建的分之上提交代码。
-
在本地合并分之。
-
可以将服务器上最新的项目版本pull下来,与自己的主分支进行代码合并。
-
可以生成补丁(patch),将补丁发送给主开发者。
-
看主开发者的反馈,如果主开发者发现两个一般开发人员之间代码有冲突
,就会要求他们先解决冲突,然后再由其中一人提交。如果主开发人员可以自己解决,或者没有冲突,就通过。
-
一般开发者之间解决冲突的方法,使用pull命令解决冲突,解决完冲突之后在向主开发人员提交补丁。
从主开发人员的角度(假设他不用谢代码)看,git有以下功能:
-
查看邮件或通过其他方式查看一般开发人员的提交状态。
-
打上补丁,解决冲突(可以自己解决,也可以要求开人员解决,如果项目是开源的,还要决定哪些补丁有用,哪些补丁不用)
-
向公共服务器提交结果,然后通知所有开发人员。
Git的优点:
适合分布式开发、强调个体、公共服务器和数据量都不会太大,速度快、灵活,任意两个开发者之间可以很容易解决冲突、可以离线工作。
开发中常用的Git命令有哪一些?
git命令速查.jpg基本指令
命令 | 解析 |
---|---|
git init | 初始化文件夹,新建git仓库 |
git clone <url> | 将服务器上的项目(仓库)克隆到本地 |
git add <filename> | 将本地文件仓库文件放入缓存区 |
git add . | 将所有文件放入缓存区 |
git reset --hard HEAD | 撤销工作目录中所有未提交文件的修改内容 |
git reset --hare 版本号 | 回到指定的版本 |
git commit -m 'commit message' | 将缓存区中的内容全部提交到git本地仓库中 |
git revert <commit> | 撤销指定的提交 |
git checkout HEAD <filename> | 让工作区中的指定文件,回到上次提交时的状态 |
git status | 查看状态 |
git log | 查看日志 |
git remote add <remote> <url> | 关联远端仓库 |
git push <remote> <branch> | 上传代码并且快速合并 |
git在初次使用时需要配置提交代码的用户信息:
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]”
# --global 表示在全局配置配置
在使用git fetch时,它是将远端服务器的最新内容拉到本地,并不会自动合并而使用git pull命令在远端服务器拉代码会自动合并,相当于git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决
怎么避免冲突:不要发生多个分支对同一个文件在同一个版本下进行修改(和同伴确认和商量)
分之管理
命令 | 解析 |
---|---|
git branch [-a] | 查看本地所有分之 |
git branch<branch name> | 创建新的分之 |
git checkout <branch> | 切换分之 |
git checkout -b <branch> | 创建分之并切换分之 |
git merge <branch> | 让当前分之和指定分之进行合并 |
git diff <branch1><branch2> | 查看两个分之之间的差异 |
注意:在执行切换分支、push、pull,这些操作前需要保证工作区clean
网友评论