一张图说明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团队协作机制
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账户,我们需要自定义密码