gitlab相关操作及命令

不羁岁月 提交于 2020-01-26 10:07:54

网上很多关于git的操作及命令,很散,新人很难看得懂也很难上手,于是我整理了一下大家的成果在一起,做了一个傻瓜式的教学。
如果需要下载到本地,请点击:
https://download.csdn.net/download/m0_46098242/12060488

一、git初始化配置

1.配置自己的git名字和邮箱

git config --global user.name "your name"
git config --global user.email "email@example.com"

2.创建文件夹

创建一个想用来存放git文件作为版本库的本地文件夹

mkdir gitFile

3.进入文件夹

cd gitFile

pwd 可以查看当前路径

4.Git init

在该文件夹内 git init,把这个目录变成git可以管理的仓库
路径下多了一个 .git隐藏文件
ls -a 可以查看所有文件,包括隐藏文件

5.生成shh key

ssh-keygen -t rsa -C "email@example.com"

之后一路回车,可以看到多了一个 ~/.ssh文件,该路径下有秘钥

6.将公共秘钥拷贝到平台上

cd ~/.ssh

拷贝id_rsa.pub中所有内容

7.Clone项目到本地

git clone 项目地址

8.切换到自己的开发分支

切换到自己的开发分支,可以在feature分支新建本次开发分支:

git checkout -b feature/add-new-xxxx

9.将修改提交到自己的开发分支

详见五、提交代码流程

10.测试

测试的时候最好merge之前提pr(pull resquest)

11.冲突

如果本地分支和develop出现冲突,新建一个分支(详见二、创建分支并关联远程分支)

git checkout -b hotfix/add-new-xxxx

将develop分支最新的内容都拉下来,将feature分支合并到hotfix分支,然后在feature分支解决冲突,解决完冲突后,将hotfix分支合并到develop分支。此时,feature分支上的内容是最新且没有冲突的,并且feature上的内容都来自master,不会被develop污染

12.合并

测试完成没有问题后,将feature分支merge到master分支上(详见三、git合并分支)

13.删除

最后,删除开发中用到的feature/add-new-xxxx、hotfix/add-new-xxxx分支(详见三、git合并分支-5.分支操作-(2)删除分支)

二、git 创建分支并关联远程分支

从master分支,重新拉取出一个新的分支,名字为dev,具体命令如下:

1.切换到被copy的分支(master),从服务器拉取最新版本

git checkout master 
git pull

2.从当前分支copy出新的开发分支 命名dev分支

git checkout -b dev
Switched to a new branch 'dev'

3.把新建的分支push到远端

git push origin dev

4.拉取远端分支

git pull

There is no tracking information for the current branch. Please
specify which branch you want to merge with. See git-pull(1) for
details. git pull If you wish to set tracking
information for this branch you can do so with: git branch
–set-upstream-to=origin/ dev pull时发现,当前的分支并没有和本地分支关联,根据提示进行下一步:

5.关联

git branch --set-upstream-to=origin/dev

6.再次拉取 验证

git pull

三、git合并分支

假如我们现在在dev分支上,刚开发完项目,执行了下列命令:

git add .
git commit -m '提交的备注信息'
git push -u origin dev

想将dev分支合并到master分支,操作如下:

1.首先切换到master分支上

git checkout master

2.如果是多人开发的话 需要把远程master上的代码pull下来

git pull origin master

如果是自己一个开发就没有必要了,为了保险起见还是pull

3.然后我们把dev分支的代码合并到master上

git merge dev

4.然后查看状态及执行提交命令

git status

On branch master Your branch is ahead of ‘origin/master’ by 12
commits. (use “git push” to publish your local commits) nothing to
commit, working tree clean

上面的意思就是你有12个commit,需要push到远程master上
最后执行下面提交命令

git push origin master

5.分支操作

(1)查看分支
1)查看本地分支
git branch

2)查看所有分支

git branch -a

3)查看远程分支

git branch -r
(2)删除分支
git branch -d 分支名

1)删除本地分支
2)删除远程分支

git push origin --delete 分支名
(3)更新远程分支列表
git remote update origin --prune

四、git拉取其他分支并且合并代码

dev1为自己的分支 dev2为想要拉取的分支

1.先提交代码 为后续切分支准备

git add .
git commit -m '注释'
git push origin dev1

2.然后git切换到所要拉取的分支dev2拉取该分支代码

git checkout dev2
git pull origin dev2

或者

git fetch origin dev2

3.切回自己的分支

git checkout dev1
git merge dev2

五、代码提交流程

git status 查看工作区代码相对于暂存区的差别
git add . 将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录
git commit -m ‘注释’ 将缓存区内容添加到本地仓库
git pull origin master先将远程仓库master中的信息同步到本地仓库master中
git push origin master 将本地版本库推送到远程服务器
origin是远程主机,master表示是远程服务器上的master分支和本地分支重名的简写,分支名是可以修改的

1.Git status

(1)git status

查看工作区代码相对于暂存区的差别

2.Git pull

(1)git pull

下拉代码

3.Git add

(1)git add [参数] <路径>

作用就是将我们需要提交的代码从工作区添加到暂存区,就是告诉git系统,我们要提交哪些文件,之后就可以使用git commit命令进行提交了。
为了方便下面都用 . 来标识路径, . 表示当前目录,路径可以修改,下列操作的作用范围都在版本库之内。

(2)git add .

不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除
1)git add -u .
-u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
2)git add -A .
-A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。

4.Git commit

(1)git commit

主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,
commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里.
1)git commit -m ‘message’
-m 参数表示可以直接输入后面的“message”,如果不加 -m参数,那么是不能直接输入message的,而是会调用一个编辑器一般是vim来让你输入这个message,
message即是我们用来简要说明这次提交的语句。
2)git commit -am ‘message’-am等同于-a -m
-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区,
注意: 新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。

5.Git push

在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构。
git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名。第一个master是本地分支名,第二个master是远程分支名。

(1)git push

提交到远程仓库,如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
1)git push origin master
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
2)git push origin :refs/for/master
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin –delete master
3)git push origin
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
4)git push -u
-u参数可以将本地的master分支和远程的master分支关联起来,以后可以直接git pull或git push

6.关于 refs/for:

refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要

六、其他

1. git log

查看所有提交过的版本日志,一般用于revert到指定版本时使用

(1)git reflog

查看当前工作区日志,可以显示更加简洁,最近三次提交

(2)git log --pretty=oneline -3(数量)

查看当前工作区日志,可以显示更加简洁,最近三次提交

2.git reset

(1)git reset --hard HEAD^

回滚到上一个版本

(2)git reset --hard HEAD^^

回滚到上上一个版本

(3)git reset --hard 1094a

回滚到指定版本
git submodule

(1)git submodule init

初始化子仓库

(2)git submodule update --remote

更新所有子仓库代码

整理资源来自:
https://www.jianshu.com/p/26d050497abb
https://www.jianshu.com/p/2e1d551b8261
https://www.cnblogs.com/ampl/p/11000042.html
如果需要下载到本地,请点击:
https://download.csdn.net/download/m0_46098242/12060488

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!