git分支指针移动问题
使用git之前,我们必须git init初始化本地库,才能使用git命令
文件没有提交的时候是没有指针指向的
还有一点是,文件必须先添加到暂存区在添加到本地库
在提交到本地库
提交完了之后,就会创建一个指针比如上面是master第一次提交,指针指向了30f8956
现在我们创建test分支
Git branch可以查看当前处于什么分支
很明显可以看到创建分支之后,并且切换到新的分支之后,新的分支指针还是指向了最新提交的文件位置指针
如果我们在test分支在创建一个文件hello1.txt,添加到暂存区,提交到本地库
我们很明显可以看到test分支上,指针已经移动到最新提交的位置
切换到master分支看看指针在什么位置
它指向了在这个分支最新提交的位置,而且它看不见在test分支上面创建的文件,也就是下面的hello1.txt文件
上面就是整体指针移动过程:每个分支永远指向他最新修改的文件指针
假如两个分支共有一个文件,比如上面的hello.txt文件
现在master去修改了,并且已经提交到了本地库
它的指针自然是指向最新修改的位置
我们去看一下test分支,它的分支明显是还是指向它最新修改提交的位置。与其他分支无关
每一个分支只能查看到自己所处分支的文件
说一下文件merge的问题
如果你不知道你的文件被修改之后,有没有提交到本地库,那么就git status查看一下当前的文件状态,如果有修改没有被提交,就会爆红
现在就是master与test都修改了这个文件 ,合并就会冲突
上面合并的意思就是,当前处于test分支上面,我们就git merge 另外合并分支的名字
上面很明显就是冲突了,我们可以用git status查看哪一个文件冲突了,然后合并过来之后,多的文件是什么
这里很明显提示,多了m1.txt文件,然后冲突文件是hello.txt,我们直接去修改
这里冲突文件,整体是长下面这个样子
上面特殊符号可以全部删除
这样就解决冲突了
一张图说明git
分支之间的操作
这个 框里面的linux命令都可以用
操作开始:
在master分支里面创建了一个hello.txt,并且放入了一些数据进去
这个去查一下日志
问题:当你放入了暂存区,你去查看日志会报错
一个分支这个指针head永远会指向新提交的文件位置。
上面这个解释一下:
head->master 指向最新的提交版本的地址,也就是第三次提交的 hello1.txt
之前还提交过两次hello和两次hello1
现在我做这样一件事儿,我把hello1.txt 恢复第一次提交的版本
下面我们来创建另外一个分支pxx1
当你创建了一个分支之后,这个分支会默认指向这个本地仓库最新修改的文件。
分支创建之后,我现在是pxx这个分支,如果在这个分支我去修改了hello1.txt
然后我们去master分支
两个分支内容明显不一致
下面进行一个分支合并
我们要让这两个文件内容一直,就是helllo1.txt的内容
上面就是把pxx分支合并到master上面
这里pxx改过,master没动,所以,直接会把pxx覆盖过去
但是我们如果把master分支改动呢
下面就是这两个文件都走了改动,并且提交到了本地库
这个时候因为文件都做了改动,所以会造成冲突
我们要去修改如下这个文件
上面就已经把pxx中文件内容给合并过来了
Git团队协作机制
下面说一下git的工作流程
Github远程库操作
自己去注册个账号使用
注意现在这里要用token密码登录
讲一下如何从github上面clone一个项目下来
团队协作往一个库推送代码需要注意的问题
比如我是之前是pxx520pxx创建这个远程库,那么我来推送当来是没有问题的,那么如果换一个用户来向我这个库进行推送可以吗?肯定不是说,只要是一个用户来推送都是可以。这里如下操作
好像不管从本地文件什么位置进行push都可以上传到某个库里面
只不过如果我们从这个远程库中添加了一个collaborators合作者,那么就会在合作者远程的仓库看到我们添加者的这个远程库,并且可以上传代码
下面说一下关于文件从远程仓库push的问题
从仓库push ,很容易造成文件冲突问题,也就是说如果你在仓库改动了某个文件,又在本地库改动某个文件,在进行push的时候是肯定会造成问题的
IDEA集成git
这个文件是已经创建好的
下面去写一个git.ignore,这里面写上我们要忽略上传的文件后缀
大体内容如下
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
文件的
后缀名必须叫.ignore
搭建自己的代码托管平台gitlab
先克隆一台虚拟机出来
下面修改一下ip与主机地址
去参考一下e\linux这是我资料存放的地方
这里贴一篇文章
下面去Windows下面配置一把
IP与主机名的一个映射
下面我们写一个shell脚本来执行这个安装程序
gitlab-install.sh
sudo rpm -ivh /opt/module/gitlab-ce-13.10.2-ce.0.e17.x86_64.rpm
sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh
sudo yum install -y postfix
sudo service postfix start
sudo chkconfig postfix on
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-
ce/script.rpm.sh | sudo bash
#这段脚本可以不要,因为我们已经下载了rpm包
sudo EXTERNAL URL="http://gitlab.example.com" yum -y install gitlab-ce
rpm -e MySQL-server-5.6.25-1.el6.x86_64 --nodeps
在安装中会出现如下问题
软件包在安装过程中出现冲突
服务启动问题出错
默认创建一个root账户,我们需要自定义密码