GIT搭建使用以及冲突处理

本文详细介绍了从零开始搭建Git服务器的过程,包括在虚拟机上安装Git、创建及初始化仓库,以及如何通过Windows客户端进行文件的pull与push操作。此外,还深入探讨了在多人开发环境下如何处理代码冲突,包括冲突的产生原因、如何解决冲突以及stash暂存的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人在公司一直用的是svn,现在学习git的使用。

一、git服务器搭建。

一般使用git会用github托管代码,或者国内的gitee来托管,我这边为了学习测试,用虚拟机部署git服务。

首先yum源安装git:yum install -y git

安装完成后创建git用户

提示我密码太短太简单,不管他。

服务器端开始创建git仓库,以项目名+.git结尾。注意我是在user/local路径下创建的多层文件夹

[root@hadoop1 local]# mkdir -p git/xltest.git

 开始初始化git仓库

会生成一系列文件

最后一步,将xltest.git修改为git用户

[root@hadoop1 git]# chown -R git:git  xltest.git/

到这git的服务端仓库已经搭建完成了。远程仓库的地址是这样命名的:

<用户名>@<服务器地址>:<仓库全路径>

我这边的虚拟机就是  git@192.168.48.144:/usr/local/git/xltest.git

 二、客户端pull push文件

好了,现在我们在windows电脑上随便创建一个文件夹。右键点击GIT Bash Here打开Git命令终端(前提是你先下载安装好git)

打开git命令行键入命令git clone + 远程git仓库地址,这边需要输入密码,我这只是为了先实现功能,没有使用ssh的公钥去连接,以后会加上的。 

这时我的文件夹就会多了一个名为xltest的文件夹,xltest下面还有一个.git文件夹。说明clone成功了。

创建一个txt文件,写上x=1。

使用git输入git status

就是未被跟踪的文件,需要你使用git add命令去跟踪,也就是提交到缓存。(git提交文件有三步,1、add存入缓存,2、commit提交到本地仓库,3、push传入远程仓库)。

(PS也可以使用git status -s查看状态码。)

我们使用add将其存入缓存。

这时就说是一个新的文件,没有commit,让你commit到本地仓库中去。

git commit -m '注释' 添加注释

我们提交成功以后,git status查看状态说没有需要提交的文件了,干净的工作目录。就是提交本地仓库成功了。我们现在将其push到远程仓库中去。

还是需要密码,因为没有做ssh免密。如上图已经push成功了。

 

测试:

我们重新建立一个文件夹去检测一下,顺便为下面的解决冲突做准备。

跟上述步骤一样,新建文件夹后打开Git Bash Here命令行,clone远程仓库。

clone成功后,我们在新文件夹中也发现了刚刚提交的文件,说明提交成功了

 

 三、冲突处理

我们在开发过程中,经常会遇到冲突conflicts,多人开发团队不可避免。

看一下在git中如何处理冲突。

我们使用文件夹2中的temp修改x=2,并提交到仓库。

提交成功,此时我在文件3中也修改为x=3。然后push到远程仓库。

遇到了问题,先让你在push之前先pull一下。

 pull之后日志显示有temp.txt 有conflict。日志中有句话“Automatic merge failed; fix conflicts and then commit the result.”合并失败,修复冲突以后再commit结果。我们看下文件。

原因是你已经将代码commit过了,git认为你的代码同样很重要,于是就自动合并出结果,让你手动处理。

我们修改完这个文件后add,commit,push就可以了,因为已经合并过了,可以直接提交。

还有第二种情况:

第一步是一样的,git服务器上是x=1,在新建文件2中修改x=2,push到了服务器。在文件夹3中修改成了3,但是并没有进行到commit操作,先了进行pull。会报另一个错。

说是本地的文件将会被合并来覆盖,先commit或者stash。也就是说如果要合并,需要commit或者stash。commit就是上面那种情况,所以我们开始看stash来如何处理:

1、先git stash 暂存本地代码

git stash list查看多次存储内容,然后形成一个列表。stash@{0}是我们刚才暂存的标记

我们对temp.txt的修改被暂存到缓存中,本地文件被revert到上一版本,就是x=1。

现在执行pull命令,将git上最新的代码pull下来,注意(这里使用pull是不会报错的,因为你的修改被stash到缓存中,本地文件会回滚到上一版本,执行pull是不会报错的)。

于是现在的文件夹3中的temp.txt文件是git中最新的,也就是x=2。

开始执行合并操作

查看合并后的temp.txt文件

本地修改的3在stashed changes里面,上面的updated upstream是服务器上的版本。

于是你修改后就可以add,commit,push到远程仓库了。

记住要清一下刚刚的缓存,git stash drop 标记。(git stash clear清除所有,慎用)

 

本片关于git的使用到这里就结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值