在Linux下搭建Git服务器

在Linux下搭建Git服务器,第1张

众所周知,版本系统在开发环境中是必不可少的,但是我们可以把代码免费的托管到GitHub上,如果我们不原意公开项目的源代码,公司又不想付费使用,那么我们可以自己搭建一台Git服务器,可以用Gitosis来管理公钥,还是比较方便的。

搭建环境:

服务器 CentOS66 + git(version 1831)

客户端 Windows10 + git(version 2111windows1)

1 安装Git相关软件

Linux是服务器端系统,Windows作为客户端系统,分别安装Git

安装客户端:

下载 Git for Windows,地址:>这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的
大致分为下面2种情况:
1没有push
这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令
reset
git reset [--soft | --mixed | --hard
上面常见三种类型
--mixed
会保留源码,只是将git commit和index 信息回退到了某个版本
git reset 默认是 --mixed 模式
git reset --mixed 等价于 git reset
--soft
保留源码,只回退到commit 信息到某个版本不涉及index的回退,如果还需要提交,直接commit即可
--hard
源码也会回退到某个版本,commit和index 都回回退到某个版本(注意,这种方式是改变本地代码仓库源码)
当然有人在push代码以后,也使用 reset --hard <commit> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突
所以,这种情况你要使用下面的方式
2已经push
对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致你要用到下面的命令
revert
git revert用于反转提交,执行evert命令时要求工作树必须是干净的
git revert用一个新提交来消除一个历史提交所做的任何修改
revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新(这里不会像reset造成冲突的问题)
revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
通常,前几位即可
git revert c011eb3
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit
看似达到的效果是一样的,其实完全不同
第一:
上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突但是revert 并不会
第二:
如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里但是revert 方向提交的commit 并不会出现在历史分支里
第三:
reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的

代码提交
代码提交一般有五个步骤:
1查看目前代码的修改状态
2查看代码修改内容
3暂存需要提交的文件
4提交已暂存的文件
5同步到服务器
1 查看目前代码的修改状态
提交代码之前,首先应该检查目前所做的修改,运行git status命令
a) 已暂存 (changes to be committed)
new file //表示新建文件
modified //表示修改文件
deleted //表示删除文件
b) 已修改 (changed but not updated)
modified //表示修改文件
deleted //表示删除文件
另外,git 给出了可能需要的 *** 作命令,git add/rm, gitcheckout --
c) 未跟踪 (untracked files)
2 查看代码修改的内容
git diff <file>
比较某文件与最近提交节点的差异。
注意:如果该文件已暂存,那么应该使用git diff –cached<file>
git diff <hashcode> <hashcode> <file>
比较某文件在提交节点a,节点b的差异。
技巧:如果省略后面一个hashcode,则默认表示与上一提交节点比较。(也可以利用^运算符)
3 暂存需要提交的文件
如果是新建的文件
则git add <file>
如果是修改的文件
则git add <file>
如果是删除的文件
则 git rm <file>
4 提交已暂存的文件
git commit
注意注释填写规范。
git commit --amend
修改最近一次提交。有时候如果提交注释书写有误或者漏提文件,可以使用此命令。
5 同步到服务器
同步到服务器前先需要将服务器代码同步到本地
命令: git pull
如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。
命令:git checkout -- <有冲突的文件路径>
同步到服务器
命令: git push origin <本地分支名>
如果执行失败,一般是没有将服务器代码同步到本地导致的,先执行上面的git pull命令。

1、前期准备
服务器上配置好的git
git客户端
11
在服务器上安装git (本机所使用的linux是ubuntu)
在服务器输入命令:sudo apt-get install git即可 然后创建名字为git的用户组和用户
12
下载客户端 在浏览器地址栏输入:>首先确保你的本地git工作目录下已经增加了远程分支了 使用 git remote -v 查看。 如果没有则先使用 git remote add 命令添加一个(假设名为origin,分支为master)。

1 git clone git@19268475:traceAnalyzergit;
2 如果要建立二者的信任关系,这里需要在client机器上生成公钥,然后,放到服务器上,具体如下:
20 在服务器上配额新的代码仓库
通过ssh登录git所在服务器,user/passwd = peach/peach
ssh peach@19268475
21 在git clone的过程中,有可能需要输入git的密码,那么,这里就需要输入ssh-key,从而建立起信任关系
用户要从代码库中克隆,用户所在机器必须具有访问权限,下面以scallop用户所在机器192168571为例介绍添加流程。
scallop登录192168571机器,生成SSH Key:
scallop@scallop-PC:~$ ssh-keygen -t rsa
连按三次回车即可。
将生成的密钥pub文件交给git管理员。
管理员拿到密钥后,复制到gitolite-admin目录下keydir目录中。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10265592.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-07
下一篇2023-05-07

发表评论

登录后才能评论

评论列表(0条)

    保存