git服务器创建,冲突解决,远程仓库获取指定文件

时间:2021-11-19 20:49:58

1、git服务器创建

在公司多人协作开发的情况下,不能简单地使用github,因为github是互联网公开的,这种情况公司的代码的保密性就会丧失了。这种情况下,需要创建git服务器。

登录服务器,使用git init --bare xx.git创建空的git版本库,这个版本库比较特别,和tree不是一回事,在这个目录下也没法运行git命令。

git服务器创建,冲突解决,远程仓库获取指定文件

之后在工作的机器上,clone此版本库。

多人clone以及pull、push就可以实现协同开发。

git服务器创建,冲突解决,远程仓库获取指定文件

然后本地的操作方法就都和一般使用git一样了,只不过ip不是对应github而是自己的git服务器。

2、冲突解决

多人协同开发的时候,如果两个人改了同一个文件,其中A提交了并push了改动。

这种前提下,B先pull,发现冲突,此时必须解决冲突才能提交。

此时有一种可能,B只需获取更新,覆盖自己的改动即可。

这时可运行命令

git fetch --all
git reset --hard origin/master
git pull

如果B既需要获取更新,还需要把自己的改动提交,那就先保存自己需要提交的文件,然后使用上述方法覆盖本地,之后再将之前保存的需要提交的文件提交即可。

3、还有一种常见需求,那就是一个项目,并不是所有文件都需要上传,也并不是所有文件本地都需要获取。例如,一个项目IDE自动生产的项目配置文件和编译生成的文件。

这种情况,需要commit指定文件。

获取时,不能直接pull,而应先fetch,然后采用 git diff HEAD FETCH_HEAD查看远程仓库与本地的差别,最后使用git checkout origin/master -- /path/file的命令更新指定文件到本地。

如下图所示,一个用户A上传到远程仓库两个文件1.txt和2.txt,另一个用户B若只需更新1.txt:

git服务器创建,冲突解决,远程仓库获取指定文件

查看目录只获取到1.txt。