git最佳实践--命令篇

初建项目

第一步:创建项目

一:找到我们需要存放项目的Groups(就是服务器文件夹)

git最佳实践--命令篇_第1张图片

二:新建项目

点进去我们自己的项目,并点击右上角附近的“+”号,然后选择This group下的 New project

git最佳实践--命令篇_第2张图片

git最佳实践--命令篇_第3张图片

三:输入信息

我们进入到如下页面 ,我们按照顺序:填写Project name → 填写说明Project description(optional)→ 下面的框框默认选择Private即可,最后点击Create project

git最佳实践--命令篇_第4张图片

特别注意 :

  1. 当前新项目默认 Jenkins@jenkins为master权限,在jenkins部署也使用此账号拉取。

  2. 必须为Private,其他Internal、pubic等权限表示所有人都可以使用!

四:项目已建好:

git最佳实践--命令篇_第5张图片

五:上传代码:

注意:
首次提交代码并创建master必须由组长账号亲自上传,原因:master为保护项目,只有master权限才可上传。

第一步:创建README文件
创建README.md文件并push到远程创建master分支

// 1.  克隆项目
git clone [email protected]:English/englishPorject-front.git
// 2.  进入我们克隆代码文件夹
cd englishPorject-front
// 3.  创建 README.md文件
touch README.md

// 4.  将README.md文件添加到本地
git add README.md
// 5.  提交README.md文件
git commit -m "add README"
// 6.  Push到我们远程
git push -u origin master

git最佳实践--命令篇_第6张图片

第二步:复制文件到克隆git文件下

将我们需要push到远程的代码放到我们克隆文件夹中(带有隐藏的.git文件同级目录),复制过程中将原先文件夹附带的 .git文件、node_modules文件去除!

git最佳实践--命令篇_第7张图片

第三步:开始push到远程:

// 1. 将所有文件添加到本地
git add .
// 2. 提交到本地
git commit -m "Initial commit"
// 3. push到远程
git push -u origin master

git最佳实践--命令篇_第8张图片
git最佳实践--命令篇_第9张图片

git最佳实践--命令篇_第10张图片

结果如下:

git最佳实践--命令篇_第11张图片

第二步:打Tags(组长)

说明:

1) 我们每次新建项目可以打tag方便我们切换回去,我们每次发版都需要打tag。

2) 只有组长才可以打master中tag,我们tag只打在master分支上即可。

3) 我们使用页面打tag如下:
git最佳实践--命令篇_第12张图片

何时打tags

1) 新建项目

2) 发版项目

3) 可以将往前不需要的tags删除掉:比如说现在已经是第三版运行很久了或者刚刚上线,可以将之前的第一版删除掉,等我们第三版运行可以的时候在删除掉第二版也可。

最佳实践:

查看tag

# 列出所有tag
git tag

在这里插入图片描述

# 查看tag信息
git show 初始项目

git最佳实践--命令篇_第13张图片

删除tag

# 删除本地tag
git tag -d 初始项目

在这里插入图片描述

注意:当前在本地git show见不到了,但是远程还有,我们执行下面

# 删除远程tag
git push origin :refs/tags/初始项目

在这里插入图片描述

新建tag

# 新建一个tag在当前commit
$ git tag dev1.1

在这里插入图片描述

# 将本地所有标签推送到远程分支
git push origin master --tags

在这里插入图片描述

# 新建一个tag在指定commit
git tag dev1.0 a7d9b5899fdde7115505eaaf4c2df7b2197e7547

在这里插入图片描述

# 将指定标签推送到远程分支
git push origin master dev1.0

在这里插入图片描述

第三步:建立分支:

我们建立完项目后我们手动添加分支,进行项目合作,我们通过一个功能建立一个分支即可比方说一个项目组7个人,共开发三个功能,两人一个功能,那么我们基于dev建立三个不同的分支开发,最后合并到dev上即可;

1. 分支说明图

git最佳实践--命令篇_第14张图片

2. 分支流程说明:

  1. 首先我们建立项目的时候已经存在了master分支,此分支为我们最终线上分支,在我们每次开发完毕sprint并测试稳定后合并到master。

  2. 建立开发主分支dev,我们在此基础上建立各自功能的具体开发分支:比如我们sprint1共开发两个功能模块那么我们共需建立两个基于dev子分支即可。

  3. 我们每个开发分支开发完毕立即合并到主开发dev上面并删除此开发分支即可,然后基于dev建立测试分支用来内部测试和解决bug。

  4. 然后我们所有开发分支开发完毕,将所有测试分支合并过来然后建立基于此总开发分支建立测试分支,并且删除此开发总分支即可,我们现在开始提交测试测试组,如果此刻出现了很多bug,我们在此基础上建立不同的功能模块进行解决然后合并到此测试总分支,最终测试组给出合格通告后我们在此基础上进行发布线上。

  5. 经过一段时间基于稳定状态我们合并到master分支,删除原来分支即可,我们当下已经开发完一版sprint了。

3. 分支命名说明:

Sprint版本 + test/dev/prod + 姓名/功能 + 日期

// Sprint1建立开发总分支dev:
SprintV1.0_dev_20191016

// Sprint1建立开发功能分支:E-shop代表我要开发这个功能或者写人
SprintV1.0_dev_E-shop_20191016
SprintV1.0_dev_baiaimin_20191016

// Sprint1建立测试分支
SprintV1.0_test_20191016

// Sprint1建立线上分支:
SprintV1.0_prod_20191016

最佳实践:

  1. 查看分支
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
$ git branch -a

git最佳实践--命令篇_第15张图片

  1. 更新远程分支:
##更新远程分支:
git remote update origin --prune

git最佳实践--命令篇_第16张图片

  1. 建立分支
# 根据当前分支新建一个分支,但依然停留在当前分支,
git branch develop
# 根据其他远程分支创建新分支
git branch develop origin/master
# 根据当前分支新建一个分支,并切换到该分支
git checkout -b develop

在这里插入图片描述
git最佳实践--命令篇_第17张图片
git最佳实践--命令篇_第18张图片

# 建立完分支后必须推送当前新建立分支到远程
git push --set-upstream origin develop

git最佳实践--命令篇_第19张图片

  1. 删除分支

这个时候我们发现我们新建立的分支错误了,我们可以删除掉新建立的分支:

# 切换其他分支以删除当前我们需要删除的分支
git checkout master
# 删除本地分支
git branch -d develop
# 删除远程分支
git branch -r -d origin/develop
git push origin :develop
注意:如果我们想要强制删除分支,只需我们将-d 改为 -D即可。

在这里插入图片描述

git最佳实践--命令篇_第20张图片

  1. 分支合并解决冲突

步骤一:查看可以合并到此分支

我们在合并提交前可以看下我们有哪些需要合并到我们当前的分支

# 查看需要合并到当前的分支
git branch --merged

在这里插入图片描述

步骤二:切换分支

首先我们需要切换到我们需要合并到的地方,比如说我们从develop合并到master,我们就要切换到master上面

# 切换master分支,如果我们切换的时候只显示commit码,我们可以手动切换
git checkout origin/master

在这里插入图片描述

步骤三:合并

# 合并
git merge develop

在这里插入图片描述

步骤四:查看冲突

# 查看冲突地方:
git status

git最佳实践--命令篇_第21张图片

步骤五:修改冲突

这个时候我们最简单的办法就是在代码中进行修改冲突:

git最佳实践--命令篇_第22张图片

注意:

1)如果两者地方都是自己,可以选择第一个接受当前,如果不知道则自己备份一份资料,接受导入,然后将自己的放进去,或者接收两者,这个和冲突方进行核对,当然不管我们选择哪个在提交之前我们都可以撤销的。

2)我们冲突的时候可能会有其他人的代码下载下来,我们这个时候一并提交上去即可。

步骤六: 提交代码

当前我们解决完了重构,没有任何爆红的地方,我们开始再次提交:

# 添加到本地
git add .
# 提交到本地
git commit -m “提交解决 合并冲突”
# 重新下载代码
git pull
# push到远程
git push -u origin master

git最佳实践--命令篇_第23张图片

结束

这个时候我们已经到正常开发了,如果我们开发过程遇到提交错误,需要更改如何解决呢,我们学习下面的git 撤销、回滚、删除等操作!

。。。。。。。。。.。。.。。。.。。.。.。。。。。。。。。。。。。。。。。

项目研发中(项目成员)

撤销保留代码

我们进行了commit,但是我们还想更改我们上次提交的内容:
git最佳实践--命令篇_第24张图片

# 查看日志,找到我们最近提交的下一个,我们要切换到下一个的上面去。
git log

git checkout 54  // 切换到这个上面,然后才可以撤销57的

git最佳实践--命令篇_第25张图片

# 撤销本地提交保留代码,后面commit号选择从上面数第二个,就是我们最近提交的下面那个,意思是我们重新回到这个提交下,撤销了最近一次提交。
git reset --soft 574c01dda6328a14eb49d5a40573d2b3e888a64b

git最佳实践--命令篇_第26张图片

撤销本地最近一次提交:
git reset --hard HEAD~1

撤销不保留代码

如果我们不想要我们的最近提交,我们可以直接执此代码:

# 撤销本地提交不保留代码,此撤销将下面的这个commit_id上面的提交都删除了(慎用!) 
git reset --hard 574c01dda6328a14eb49d5a40573d2b3e888a64b

回滚:撤销远程

当前我们已经提交了此次代码,但是发现我们已经提交错误分支了,我们就需要进行回滚了

# 回滚远程当前提交代码
git revert HEAD

git最佳实践--命令篇_第27张图片

我们点击回车,这个时候又回到我们之前commit状态之前了。如果我们点击了R,就说明退回到了commit完毕状态,我们没有好修改的了,但是远程是有的。

git最佳实践--命令篇_第28张图片

我们现在开始执行进行提交代码

在这里插入图片描述

git最佳实践--命令篇_第29张图片

全部回滚不留代码

我们如果不想要我们最近几次提交的代码,我们直接切换到我们想要的提交上,然后执行下面代码上面所有提交都会删除

git最佳实践--命令篇_第30张图片

# 切换到我们需要的提交上去,执行此代码则将切换的分支以上都删除
git reset --hard a0a77525134aeadda9b6739e1d7220f89fb1daf9
 

git最佳实践--命令篇_第31张图片

#强制提交,如果我们再此打了tag,那我们就需要切换到tag上在回滚。
git push -f origin master
 

git最佳实践--命令篇_第32张图片

删除:可删除远程多次提交

步骤一:找分支

找到我们想删除的分支,并复制此分支下面commit_id

git最佳实践--命令篇_第33张图片

步骤二:执行删除命令

#删除某次提交 
git rebase -i 23bf0218fdd0c5182a8898d7881f9213a263b942

git最佳实践--命令篇_第34张图片

问题:出现以上弹框,我们执行此命令

# 撤销之前删除提交
git rebase --abort

git最佳实践--命令篇_第35张图片

我们继续输入命令:

#删除某次提交 
git rebase -i 23bf0218fdd0c5182a8898d7881f9213a263b942
 

git最佳实践--命令篇_第36张图片

步骤三:在此Vi中进行修改

第一步:我们根据上下左右键选择到需要修改的地方然后输入:“i”

第二步:将找到ID这一行前面的pick改为drop,修改完后我们按下“ESC”表示不能修改了

git最佳实践--命令篇_第37张图片

第三步:按下esc后我们直接桥接键盘:“:wq" (:wq!)然后enter即可,表示保存退出

在这里插入图片描述

步骤四:推送远程

接着我们push到远程即删除了,在push之前本地是有的。

#强制push到远程
git push -f origin develop

git最佳实践--命令篇_第38张图片

git最佳实践--命令篇_第39张图片

Git log日志(项目成员)

任何时候我们都可以查看log日志,如果按下git log退步出来,请按下键盘Q键。
查看近几次提交

# 查看最近提交的2次
Git log -2

git最佳实践--命令篇_第40张图片

查看某个人提交

# 查看某个人最近提交前2次,去掉-2表示全部
git log --author baiaimin -2

git最佳实践--命令篇_第41张图片

查看整条线

# 查看一条线整个提交历史最近5条 ,去掉-5表示整个历史记录
git log --graph -5

git最佳实践--命令篇_第42张图片

查看提交名

# 查看简洁的最近3条记录提交,去掉-3表示所有的提交
git log --oneline -3

在这里插入图片描述

Git 修改host的URL(项目成员)

如何修改远程URL地址(组长)

步骤一:找到如下General

git最佳实践--命令篇_第43张图片

步骤二:找到General下的Advanced settings

git最佳实践--命令篇_第44张图片

步骤三:修改Project name 和 Path 点击Rename project

git最佳实践--命令篇_第45张图片

效果如下:

git最佳实践--命令篇_第46张图片

修改本地的URL地址(项目成员)

问题:ssh地址变更

当我们远程修改后,我们本地更新不了代码,效果如下:说明远程ssh地址变更了,我们复制此红线框部分

git最佳实践--命令篇_第47张图片

方法一:通过代码修改

# 一:查看当前url地址:
git remote -v

在这里插入图片描述

# 二:修改本地仓库当前url地址:复制上面红框下来即可
git remote set-url origin  git@git.dmsd.tech:English/englishProject-mobileTest.git

git@git.dmsd.tech:English/english_mobile_vue.git
修改html:
git remote set-url origin https://github.com/TGB-Duke/ftdp_project_front.git

git最佳实践--命令篇_第48张图片

我们继续pull代码即可了:
在这里插入图片描述

修改后问题:如果不能正常拉去代码的话,我们点击下刷新即可。

git最佳实践--命令篇_第49张图片

方法二:修改本地文件(慎用!)

修改项目目录下的.git目录下的config文件,把里面的ip地址替换成新的ip地址就可以了,慎用直接修改配置文件!

git最佳实践--命令篇_第50张图片

git最佳实践--命令篇_第51张图片

Git diff 比较

说明
在我们需要提交或者想查看最近更改的时候方便查看提交内容和远程的区别,避免冲突。

工作区与暂存区

# 查看修改
git diff

git最佳实践--命令篇_第52张图片

暂存区与最后提交

# 查看工作区与缓存区
git diff --cached 

git最佳实践--命令篇_第53张图片

工作区与最近提交

# 查看工作区与最近提交
git diff HEAD 

git最佳实践--命令篇_第54张图片

暂存区与指定提交

git diff --cached 3dd4999ffdcc0bfd9ba98744f665cd8c5347ac

git最佳实践--命令篇_第55张图片

工作区与指定提交

git diff 8d9338023885329f7320131f8f6f58c220c89318

git最佳实践--命令篇_第56张图片

两次提交比较

git diff b4c8b533f666aa88db08bacd619d415058b505e3  
8d9338023885329f7320131f8f6f58c220c89318

git最佳实践--命令篇_第57张图片

比较两个分支区别

git diff master develop

git最佳实践--命令篇_第58张图片

Git diff 参数详细说明:

git diff --ignore-all-space 忽略空白字符,等同于 git diff -w

git diff --ignore-space-at-eol 忽略行尾的空格

git diff --ignore-space-change 忽略空格差异,例如有些人间距使用 tab 键,有些使用4个空格,使用 --ignore-space-change 参数来忽略这种差异

git diff --ignore-blank-lines 忽略空行的差异

git diff --stat 按文件来显示统计信息,显示每个文件的增加删除,修改的行数 git diff --shortstat 只显示统计信息,统计所有增加删除,修改的文件数

git diff --diff-filter=D 只显示给定状态的改动,D 表示只显示删除的文件(可选的参数值包含:ACDMR,分别表示:ADD Copied Delete Modified)

git diff –G <regex> 只显示满足条件的改动

名词说明:

Group:仓库,就是我们项目最外面的文件夹,每个项目组初建立时候创建且只能有一个。

Project:就是我们项目中的一个小项目,比如大米英语的前端v1.0版本在git中就是一个项目。

工作区:就是我们正在敲代码的地方,即我们创建的工程文件, 在编辑器可直观显示。

暂存区:就是我们执行git add . 或者点击左侧边栏“+”号的地方就是放进了暂存区它只能通过git GUI或git shell 窗口显示,提交代码、解决冲突的中转站 

本地仓库:当我们提交后就进入了本地仓库,它是连接本地代码跟远程代码的枢纽,不能联网时本地代码可先提交至该处

远程仓库:就是我们push后就到了我们远程仓库,即保存我们代码的服务器。

你可能感兴趣的:(#,【GitLab】)