javaee之git

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这是我资料存放的地方

这里贴一篇文章

centos修改固定IP

下面去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账户,我们需要自定义密码 

猜你喜欢

转载自blog.csdn.net/Pxx520Tangtian/article/details/129052543