GitLab简介
GitLab是类似于GitHub的仓库管理系统,和GitHub一样,它能够提交/拉取代码,不同的是,GitLab可以部署在自己服务器上,数据库等信息是自己掌握的,适合团队内部协作开发。可以理解为个人版本的GitHub。
记录一下Git拉取 和提交文件到GitLab的命令。
前提
- 下载安装Git
- 在GitLab上有账号
- 更改Git Bash的起始位置:右键属性,改为自定义文件夹workspace,作为本地git仓库
- 在GitLab上配置SSHKey。目的是使客户端和服务端建立信任,每次操作就不需要再重复输入密码。
具体操作: 首先需要在电脑上生成SSHKey,使用命令:ssh-keygen -t rsa -C "xxx@xxx.com"
(引号内填自己的邮箱)一路默认回车,最后就在.ssh目录下得到了两个文件:id_rsa(私有密钥)和id_rsa.pub(公有密钥),把id_rsa.pub的内容复制到GitLab的SSH key中。
上述命令和以下所有命令均在GIt Bash中执行。
拉取命令
-
git clone + 项目地址
(项目地址:在GitLab中打开项目后直接复制"Clone with SSH") -
git pull
由于已经关联了地址,之后更新可以用git pull直接更新到最新。
提交命令
提交新项目(未初始化Git仓库)
git init
使用cd命令进入到工程目录下,即进入工作区,把仓库变为可管理的git仓库,得到一个.git文件夹git add .
将仓库下的所有内容添加到暂存区,如果只是个别内容就把“.”改为文件名git commit -m "注释内容"
将暂存区的内容提交到本地版本库。(参数-m很重要)git remote add origin + 远程仓库的地址
(在GitLab上复制项目地址)把本地仓库和远程仓库关联
如果出现 fatal:remote origin already exists
那么输入命令:git remote rm origin
然后再重复:git remote add origin + 远程仓库的地址
git push -u origin master
把当前分支master推送到远程仓库。参数-u的意思是,只要本地做了提交,以后就可以直接用git push
代替原命令进行推送
普通提交(已初始化Git仓库)
-
git add .
添加到暂存区(特别是工作区有新文件的时候必须要先添加到暂存区) -
git commit -m "注释内容"
会对修改的文件进行注释,提交到版本库 -
git push
由于第一次关联过地址,所以不用再执行上述第四步,直接推送到GitLab
提交到分支
使用IDEA提交/拉取:右键Git–>Commit File–>Repository–> push/pull;
使用IDEA切换分支
git checkout -b + 分支
遇到的问题
- fetch first
- 这个问题是说远程仓库的版本和本地仓库不一致,要先fetch first,但是fetch比较麻烦,我选择用git pull拉取最新版本merge到本地,命令如下:
git pull --rebase origin + 分支
- non-fast-forward
- 错误原因:文件冲突。远程仓库和本地仓库文件数量不一致(远程仓库有的文件在本地仓库中没有,或者不是在远程仓库文件基础上修改的。)这个时候就强制push就对了:
git push origin + 分支 -f