社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
新入职公司,公司使用git作为代码版本控制工具,然后自己搭建私有的gitlab来管理代码。以下记录以下我学习使用gitlab的过程,以及过程中所踩过的坑。
自动生成备份
知道改动的地方
随时回滚
1.git
是一个分布式版本控制系统,在每个使用者的电脑上有一个完整的数据仓库,没有网络依然可以使用git,当然为了习惯及团队协作,会将本地数据同步到git服务器或者github等代码仓库
2. svn
集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法提交或者备份文件
补充 Git、Gitlab与Github区别
- Git 是一种版本控制系统,是一个命令,是一种工具
- Github,Gitlab等产品都是第三方基于git这项技术开发的
- Github 是一个基于git实现的在线代码仓库,包含一个网站界面,向互联网开放
- Gitlab 是一个基于git实现的在线代码仓库软件,你可以用gitlab自己搭建一个类似于github一样的系统,一般用于在企业、学校等内部网络搭建git私服
上面的就是整个Git的工作流程:
其实上面的都是一些GIt的命令,先不管命令是做什么的,这里面有四个大块的东西,他们分别是
Remote远程仓库:
远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的Repository本地仓库:
这里面保存了对象被提交过的各个版本,比起工作区和暂存区的内容,它更旧一些
git commit后同步index的目录树到本地仓库,方便下一步通过git push同步本地仓库与远程仓库的同步index暂存区:
.git目录下的index文件,暂存区会记录git add添加文件的相关信息(文件名、大小),不保存文件实体,通过id指向每个文件的实体,可以使用git status查看暂存区的状态,暂存区标记了你当前工作区中那些内容是被git管理的,当你完成某个需求或者功能后需要提交代码,那么第一步就是通过git add 先提交到暂存区,被git管理workspace工作区:
程序员进行开发改动的地方,是你当前看到的,内容也是最新的,平常我们开发就是拷贝远程仓库中的分支,基于该分支进行开发,在开发的过程就是在工作区的操作总结:
任何对象都是在工作区中诞生和修改的
任何修改都是从进入index区才开始被版本控制的 只有把修改的代码提交到本地仓库,该修改才能在仓库中留下痕迹
与协助者分享本地的修改,可以push到远程仓库来共享
下面这张图很明确的表现了他们的关系
一、如何本地git客户端生成ssh key(使用ssh方法拉取代码要配置ssh秘钥,使用http方法这不需要,但是每次都需要输入重新输入账号密码)
打开本地git bash,使用如下命令生成ssh公钥和私钥对
ssh-keygen -t rsa -C 'xxx@xxx.com' 然后一路回车(-C 参数是你的邮箱地址)
然后打开/.ssh/id_rsa.pub文件(表示用户目录,比如我的windows就是C:UsersAdministrator),复制其中的内容或者直接
cd ~/.ssh
ls(查看目录是否有id_rsa.pub文件)
查看公钥:cat id_rsa.pub 或者vim id_rsa.pub
打开gitlab,找到Profile Settings–>SSH Keys—>Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮
二、基本操作
三、项目管理
四、gitlab简单配置
git config --global user.name "李雁"
git config --global user.email "liyan1907@pconline.com.cn"
五、创建新版本库
git clone git@192.168.244.80:test-group/feedback.git
cd feedback
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
六、已存在的文件夹
cd existing_folder
git init
git remote add origin git@192.168.244.80:test-group/feedback.git
git add .
git commit -m "Initial commit"
git push -u origin master
七、已存在的 Git 版本库
cd existing_repo
git remote rename origin old-origin
git remote add origin git@192.168.244.80:test-group/feedback.git
git push -u origin --all
git push -u origin --tags
1. 从远程仓库clone代码,出现502错误
原因:由于我设置了全局代理,代理地址指向了http:proxy=http://192.168.244.80:8888 而这个地址是指向的之前测试的gitlab地址,现在已经打不开了
设置代理
git config --local http.proxy 127.0.0.1:8580取消代理
git config --local --unset http.proxy参数
–global 全局
–local 当前项目
2. git 出现 fatal: refusing to merge unrelated histories 错误
git pull 失败 ,提示:fatal: refusing to merge unrelated histories
其实这个问题是因为 两个 根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并
具体的方法, 一个种方法: 是 从远端库拉下来代码 , 本地要加入的代码放到远端库下载到本地的库, 然后提交上去 , 因为这样的话, 你基于的库就是远端的库, 这是一次update了
第二种方法:
使用这个强制的方法
git pull origin master --allow-unrelated-histories
后面加上 --allow-unrelated-histories , 把两段不相干的 分支进行强行合并
后面再push就可以了 ,gitlab是别名
git push gitlab master:init
一、使用 Git 命令
二、使用 Git 命令
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!