Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。
git add 添加文件到暂存区
git commit 提交文件到本地仓库
git pull 从远程仓库拉取项目到本地
git push 将本地仓库的新的改变推送到远程仓库
git clone 将远程仓库复制到本地
git fetch 抓取
git merge 合并
git clone:是在本地没有版本库的情况下,从远程仓库克隆一份到本地,是一个本地版本库从无到有的过程
git pull:是在本地仓库已经存在的情况下,将远程最新的commits抓取并合并到本地版本库的过程
git fetch: 从远程版本库抓取最新的commits,不会进行合并
git merge:合并
所以git pull = git fetch + git merge
push之前一定要进行本地更新操作。使用git pull命令或者使用git fetch和git merge的命令组合。这时候,可能会出现版本冲突,如果出现的话,需要解决完冲突再进行代码push。
开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。
特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。
创建一个bug分支,然后进行bug处理,处理完毕后,合并到review分支,组长review成功后才能够合并到master,合并完成之后删除bug分支,回到dev分支继续开发。
在公司开发忘记提交到github托管,在家里又继续开发新的功能,然后到公司昨天的代码跟你的新功能合并的时候可以用git fecth ---> git rebase,那么他的提交记录就不会出现分叉,保持了提交记录的整洁.
用的是github,因为公司比较小,所以没有自己搭建gitlab,
但是用github的时候代码一定要用保密的,9$(美元)建立一个仓库。
1)解决冲突文件时,会先执行git stash,然后解决冲突;
2)遇到紧急开发任务但目前任务不能提交时,会先执行git stash,然后进行紧急任务的开发,然后通过git stash pop取出栈区的内容继续开发;
3)切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换;
查看分支的提交历史记录:
命令git log –number:表示查看当前分支前number个详细的提交历史记录;
命令git log –number –pretty=oneline:在上个命令的基础上进行简化,只显示sha-1码和提交信息;
命令git reflog –number: 表示查看所有分支前number个简化的提交历史记录;
命令git reflog –number –pretty=oneline:显示简化的信息历史信息;
相同点:git和svn都是版本控制系统,两者都有自己的服务器。
区别:
1.git是分布式,svn不是分布式。
2.git把内容按元数据方式存储,而svn按文件。
3.git分支和svn分支不同。
4.git没有一个全局版本号,svn有。
5.git版本号要优于svn
解决冲突有三种选择:
A.放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决)
B.放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。
C.手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。