赞
踩
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。下面是使用步骤
进入注册页面(需要公司的人提供地址)例如: http://xx.xxx.xx.xx:18000/users/sign_in 注册完成,将账号给管理员,开通权限。
下载地址: Git - Downloads 下载完成, 默认安装即可
3.1 随便打开一个文件夹,右键 点击 Git Bach Here (没有安装git客户端是找不到的)
3.2 设置全局变量:例如注册名是 abc; 邮箱是 youxiang@xx.com
git config --global user.name "abc" (加上双引号,不加没有试过)
git config --global user.email "youxiang@xx.com"
3.3 生成ssh key 命令:
ssh-keygen -t rsa -C "youxiang@xx.com" (上面的邮箱地址)
成功的截图:(找到C:Users登录用户名.ssh 目录,里面有两个文件:id_rsa和id_rsa.pub)
执行上面步骤之后,应该就可以拉取代码了;
一些概念:
工作区间: 即我们创建的工程文件, 在编辑器可直观显示;
缓存区: 只能通过git GUI或git shell 窗口显示,提交代码、解决冲突的中转站;
本地仓库: 只能在git shell 窗口显示,连接本地代码跟远程代码的枢纽,不能联网时本地代码可先提交至该处;
远程仓库: 即保存我们代码的服务器,本文以公共版本控制系统:github为例,登录github账号后可直观显示;
找到地址
1.2 新建一个空的文件夹, 使用
1.3 git终端 输入:git clone ssh地址 ;此时提示 yes/no 那么输入 yes (不然很有可能拉取不了代码);
拉取成功,会出现项目的文件夹, cd 到 项目目录,出现master说明当前是在 master 分支上
1. github上新建一个空的远程仓库:
新建完成后会有一个ssh地址: 例如:https://github.com/ImCccc/test001.git
2. 添加ssh key(生成的方法上面已经说明,其实和gitlab添加是一个道理)
输入命令:在本地的项目打开git终端,输入下下面的命令:
git init
git add -A
git commot -m '提交注释'
git remote add origin https://github.com/ImCccc/test001.git
git push -u origin master
`git init ` 表示在当前的项目目录中生成本地的git管理;
`git add -A` :使用-A:将新增、删除、修改的文件改动全保存至缓存区;
`git commit -m "first commit"` :将代码从缓存区保存至本地仓库,实际开发中一般使用`git commit -am "说明的文字"`,使用 -a:如果没文件更改操作(增、删、改名)就可以省略git add指令;
`git remote add origin ssh地址` :将本地仓库与指定的远程仓库创建 联系;
`push -u origin master` 将本地仓库代码推送至远程仓库,实际开发中该指令后需要输入github 账号以及密码。(首次提交注意别遗漏`-u`指定默认主机)
以上指令正常执行后, 本地仓库的代码就提交到远程仓库了:
新建: git branch dev
切换: git checkout dev
新建切换一起: git checkout -b dev
提交到远程仓库: git push origin -u dev
打开浏览器就看到新建的分支了:
git branch
git branch -r -d origin/dev
git push origin :dev
git merge master
git push origin (合并之后提交至远程仓库)
git pull
等于下面2个命令:
git fetch
git merge 分支
看看是否有文件需要`git add`: git status
按顺序执行以下命令:
git add . (添加当前目录的所有代码)
git commit -m '提交留言' (提交在本地的,远程还没有看到)
git push origin -u dev (提交到远程的 dev 分支, 成功之后,浏览器应该会看到提交的代码)
出现以上提示, 说明本次更新代码失败;主要在于本地工作区间跟远程仓库的新代码冲突了, 图解如下:
有两种方式处理冲突: 放弃本地修改或 解决冲突后提交本地修改
放弃本地修改意味着将 远程仓库 的代码完全覆盖 本地仓库 以及本地工作区间
git checkout head .
更新远程仓库的代码就不会出现冲突了:
git pull 或者 git merge dev
将本地修改放入缓存区(成功后本地工作区间的代码跟本地仓库代码会同步), 具体指令:
git stash
从远程仓库获取最新代码,具体指令:
git pull 或者 git merge dev
取出本地修改的代码,冲突的代码就很清晰的展现在我们面前了, 具体指令:
git stash pop
然后手工解决冲突,提交代码:
git add README.md
git commit -am '解决冲突'
git push origin master
回退到上一个版本(上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100):
git reset --hard HEAD^
回调未来版本:
Git提供了一个命令git reflog
用来记录你的每一次命令:
回到未来:git reset --hard 97e962c
现在总结一下:
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。git log
可以查看提交历史,以便确定要回退到哪个版本。git reflog
查看命令历史,以便确定要回到未来的哪个版本。git checkout -- readme.txt
git checkout -- readme.txt
意思就是把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令
如果要修复一个bug,不过当前正在dev上进行的工作只进行到一半,还没法提交,Git还提供了一个stash
功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash
首先确定要在哪个分支上修复bug,假定需要在master
分支上修复,就从master
创建临时分支:
git checkout master
git checkout -b issue-101
修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:
git checkout master
git merge issue-101
现在,是时候接着回到dev分支干活了!
git checkout dev
恢复现场:
git stash pop
下载安装: Visual Studio Code - Code Editing. Redefined
vscode 集成 git 无需安装 扩展插件,下面是使用vscode 提交代码的说明(前提是完成gitLab相关的配置,未完成请参考gitLab教程)
提交代码的流程是: 拉取 -> 暂存 -> 提交 -> 推送
1) 查看修改文件
2) 拉取
拉取的意思是同步服务器上的最新代码,为了防止代码冲突,推送之前需要先拉取代码,操作如下:
3) 暂存更改
单文件暂存:
暂存所有更改:
4) 放弃更改
意思是将修改的文件还原为服务器上的版本;
和暂存更改的操作一样,选的时候选择放弃更改即可;
5) 取消暂存更改
暂存更改之后,会显示已经暂存的文件,可以取消暂存修改:
取消之后,文件在更改列表中:
6) 提交
提交的意思是将代码提交在你本地的分支上,提交成功,服务器上是没有你的提交记录的,必须推送之后才有,操作如下:
7) 推送
推送的意思是将代码推送到分支上,成功之后,服务器上就有你的提交记录,别人就可以拉取到你提交的代码,操作如下:
1. 先找到需要合并的commit的代号,一般是一个很长的字符串,可以在gitLab找到,如下图
2. 终端执行命令:git cherry-pick ff476ddb3535f6c6af8576c3be98530b584c9b2d
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。