赞
踩
问题描述:
解决问题的关键:使用版本管理工具。GIt是版本管理工具的一种,而且比较常用。属于分布式版本控制工具。
SVN是集中式版本控制系统,版本库是集中放在中央服务器的.
工作流程如下:
1.从中央服务器远程仓库下载代码
2.修改后将代码提交到中央服务器远程仓库
优点: 简单,易操作
缺点:所有代码必须放在中央服务器
1.服务器一旦宕机无法提交代码,即容错性较差
2.离线无法提交代码,无法及时记录我们的提交行为
Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:本地仓库和远程仓库
工作流程如下
工作流程图:
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。
设置用户名信息: (–global表示全局配置,就是说配置所有的本地仓库的用户名都是同一个),不使用–global表示设置当前仓库的用户名)
git config --global user.name “dadao”
git config --global user.email “dadao@qq.com”
# 查看所有的配置信息:
git config --list
# 查看用户名信息:
git config user.name
git --version
// 不行就试一下git -V
# 初始化仓库带工作区
git init
# 初始化仓库不带工作区
git init --bare
什么是git的工作目录:就是本地仓库中,除了.git目录,其它都是工作目录。
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。
上图的状态之间的转换:
添加所有到暂存区:
git add .
或者
git add 文件名
比如:git add a.txt
添加:
修改:
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
切换到dev01分支:注意工作目录的变化(少了个.gitignore文件)
在dev01分支上新创建了一个文件file02
此时的master分支的情况:
合并分支:(一般都是把其他分支合并到master分支上的)第一步切换到master分支上;第二步执行合并分支的命令。合并之后,在dev01创建的文件,在master分支上也可以看见了。
不能删除当前分支,只能删除其他分支
强制删除分支的使用场景:当一个分支还没有合并到master分支时,我们在master分支上不能直接使用 git branch -d 删除该分支,只能使用git branch -D强制删除该分支。
制造冲突的过程:
原始状态:
创建一个新的分支dev,并切换到该分支上:
在dev分支上修改a.txt文件:
然后切换到master分支,又对a.txt文件进行修改,且修改的是同一处地方:
然后合并dev分支到master分支上:(然后会发现合并失败)
打开a.txt就是产生冲突的文件:
合并之后:
老师的版本:
gitHub( 地址:https://github.com/ )
是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub码云(地址: https://gitee.com/ )
是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快GitLab (地址: https://about.gitlab.com/ )
是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服。
仓库路径的获取:
克隆:
在本地仓库进行一次提交并推送到远程仓库
在克隆仓库里面进行操作:把上面的本地仓库上传到远程仓库的文件拉取到克隆仓库的本地仓库中:
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同
(即暴力修改,直接留下需要的内容即可)合并冲突演示:
一开始两边的状态都是一样的
然后在本地仓库进行修改file66.txt文件,并把它commit进本地仓库,然后再推送到远程仓库
然后在克隆仓库也对file66.txt文件进行修改,修改完成后commit到它的本地仓库
继续在克隆仓库中操作(为啥不直接使用git push操作,是为了方便查看中间的过程),(fetch)抓取远程仓库的内容,然后再执行merge(这里可以不执行merge,直接执行git pull,它不会再执行fetch操作,直接执行merge操作),然后会发现合并失败了,因为远程仓库的修改,和我本地仓库的修改产生冲突了,然后就进行暴力修改,把远程分支和克隆的本地分支合并起来了,最后再把克隆分支push到远程仓库。
最后本地仓库再把远程仓库的内容拉取出来,然后两边仓库(本地仓库和克隆的本地仓库)就一致了
1. 创建远程仓库
2、在idea中初始化本地仓库,并把数据提交到本地仓库
3. 设置远程仓库,并把数据推送到远程仓库
先把创建好的远程仓库的地址复制好
在配置远程仓库
然后点击ok,再点击push,就推送成功了。就可以在远程仓库那里看到刚刚提交的数据了。(因为是第一次提交到远程仓库,所以会直接在远程仓库创建一个新的分支master)
切换分支也是差不多的操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。