Gitlab简单使用指南

Gitlab简单使用指南

    • Gitlab简单使用指南
      • 一在gitlab的网站创建一个project
      • 二安装git之后本机的操作
        • 1git global setup
        • 2完善新建的项目
        • 3本地项目与远程服务器项目之间的交互
      • 三关于ssh key的设置
        • 1 设置Git的 user name 和email如果是第一次的话
        • 2 生成密匙
        • 3 添加密匙到ssh-agent
        • 4 登陆gitlab添加ssh
      • 四版本穿梭
        • 1版本回退
      • 五git分支管理
        • 1创建与合并分支
        • 2解决冲突

一、在gitlab的网站创建一个project


定一个项目名,选定相关的项目设置,private,public等

项目创建成功后,得到项目[email protected] 的地址,可用于将project从远程pull下来或者push上去。

二、安装git之后本机的操作

2.1git global setup

设定本机用户名,绑定邮箱,让远程服务器知道机器的身份

git config --global user.name "limengqin"
git config --global user.email "[email protected]"

2.2完善新建的项目

  • 如果你没有最新的代码,希望从头开始,下面展示在你希望pull过来的文件夹下Create a new repository
git clone [email protected] //这里是项目的地址(可从项目主页复制),将远程服务器的内容完全复制过来
cd BGBInspector_V01  //clone 之后进入该项目的文件夹
touch README.md     //新建readme文件
git add README.md   //将新的文件添加到git的暂存区
git commit-m ‘Its note:add a readme file // 将暂存区的文件提交到某一个版本保存下来,并加上注释
git push -u origin master //将本地的更改提交到远程服务器
  • 如果你已经有一个新版代码,希望直接把本地的代码替换到远程服务器,下面是Existing folder or git repository
cd existing_folder //进入代码存在的文件夹,或者直接在该文件夹打开git bash
git init  //初始化
git remote add origin [email protected]  //添加远程项目地址(可从项目主页复制)
git add . //添加该文件夹中所有的文件到git的暂存区
git commit -m ‘note’//提交所有代码到本机的版本库
git push -u origin master //将本地的更改提交到远程服务器

git 中clone过来的时候,git不会对比本地和服务器的文件,也就不会有冲突,建议确定完全覆盖本地的时候用clone,不确定会不会有冲突的时候用git pull,将远程服务器的代码download下来

2.3本地项目与远程服务器项目之间的交互

//几个常用的git 命令
git init //初始化
git add main.cpp //将某一个文件添加到暂存区
git add .          //将文件夹下的所有的文件添加到暂存区
git commit -m ‘note’ //将暂存区中的文件保存成为某一个版本
git log             //查看所有的版本日志
git status          //查看现在暂存区的状况
git diff            //查看现在文件与上一个提交-commit版本的区别
git reset --hard HEAD^ //回到上一个版本
git reset --hard XXXXX //XXX为版本编号,回到某一个版本
git pull origin master //从主分支pull到本地
git push -u origin master //从本地push到主分支
git pull                //pull默认主分支
git push                //push默认主分支
...

如果出现了conflict,则需要按照提示更改冲突再提交方可。git通过以下符号分割冲突的两部分

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

详细参考链接http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

三、关于ssh key的设置

3.1 设置Git的 user name 和email(如果是第一次的话)

git config --global user.name "limengqin"
git config --global user.email "[email protected]"

3.2 生成密匙

这里输入你的邮箱,生成一个与邮箱相对应的key

ssh-keygen -t rsa -C "[email protected]"

连续三个回车,如果不需要密码的话。
最后得到两个文件:id_rsa和id_rsa.pub
SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录

3.3 添加密匙到ssh-agent

确保 ssh-agent 是可用的。ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。

 # start the ssh-agent in the background
    eval "$(ssh-agent -s)"
    Agent pid 59566

添加生成的 SSH key 到 ssh-agent。

 $ ssh-add ~/.ssh/id_rsa

3.4 登陆gitlab,添加ssh

将id_rsa.pub文件中的内容复制到



参考链接:https://segmentfault.com/a/1190000002645623

四、版本穿梭

4.1版本回退

在Git中,我们用git log命令查看:

每一个提交的版本都唯一对应一个commit版本号,
现在,我们要把当前版本回退到上一个版本,就可以使用git reset命令:

git reset --hard HEAD^

这个时候,最新的版本就被上一个版本覆盖了,继续用git log就找不到了。这个时候,如果想恢复到原来的版本,只要找到原来的commit版本号就可以了。

git reflog //查看命令历史,以便确定要回到哪个版本
git reset --hard commit_id //比如git reset --hard 3628164(不用全部输入,输入前几位即可)

五、git分支管理

5.1创建与合并分支

我们创建dev分支,然后切换到dev分支:

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git branch dev
git checkout dev

然后,用git branch命令查看当前分支,
git branch命令会列出所有分支,当前分支前面会标一个*号

git branch
* dev
  master

然后,我们就可以在dev分支上正常提交.

git add readme.txt
git commit -m "branch test"

dev分支的工作完成,我们就可以切换回master分支:

git checkout master

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变

现在,我们把dev分支的工作成果合并到master分支上:

git merge dev

git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。

合并完成后,就可以放心地删除dev分支了:

git branch -d dev

删除后,查看branch,就只剩下master分支了.

5.2解决冲突

准备新的feature1分支,继续我们的新分支开发:

 git checkout -b feature1

修改readme.txt最后一行,改为:
Creating a new branch is quick AND simple.
在feature1分支上提交:

git add readme.txt 
git commit -m "AND simple"

切换到master分支:

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.

Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。
在master分支上把readme.txt文件的最后一行改为:
Creating a new branch is quick & simple.

$ git add readme.txt 
$ git commit -m "& simple"

现在,master分支和feature1分支各自都分别有新的提交,变成了这样:

这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件;
我们可以直接查看readme.txt的内容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改后保存再提交:

$ git add readme.txt 
$ git commit -m "conflict fixed"
[master 59bc1cb] conflict fixed

现在,master分支和feature1分支变成了下图所示:

最后,删除feature1分支:

$ git branch -d feature1
Deleted branch feature1 (was 75a857c).

你可能感兴趣的:(Gitlab简单使用指南)