git进行版本控制管理

之前一直用svn,这次入职新公司,用的是git,对于之前没用过git的我来说,简直是有些不知所措。不过幸好,部门老大不辞辛劳,给我们进行了多次讲解与培训,现在终于算是入门了。为了以后不会再出现低级错误,赶紧发篇文章,记录一下,压压惊。

一、获取远程版本库最新代码

1、如果之前没有下载过此版本库代码,则需要执行以下命令:

git clone 远程代码库链接

2、如果之前下载过此版本库代码,那么只需要拉取最新的代码即可。

  • (1) 首先,将本地分支切换到master分支上。(如果现在本地分支就是在master上,则跳过该步骤,直接进行下一步)
git checkout master

(2) 拉取远程master的代码

git pull

二、本地切换到自己的开发分支

1、获取远程最新代码后,则需要从本地master分支切换到开发分支。(此处我们以每个新功能为一个新的开发分支)

  • (1) 第一步,先在gitLab的Issues中找到需要开发的新功能(或者自己添加新的Issues),然后打开找到如下内容(分支名可以根据功能进行命名,例如这里命名为72-banner)。(2) 第二步,先查看先查看所有分支中,有没有该分支(如果有该分支,则直接切换分支即可;如果没有,就先创建再切换)。
git branch -a
  • (3) 如果有所需分支,则之前切换分支即可。(一般情况下是没有的,则直接看4)
git checkout 72-banner
  • (4) 如果没有,则先创建再切换。(Ⅲ是对Ⅰ、Ⅱ的简写方式)

Ⅰ、创建分支

git branch 72-banner

Ⅱ、切换到72-banner分支

git checkout 72-banner

Ⅲ、直接创建的同时切换分支(对Ⅰ、Ⅱ的一种简写方式,只需要一个命令就可解决)

//同时创建本地分支和远程分支,并切换本地分支为72-banner

//下面这条代码有问题,暂不适用
/*git checkout -b 72-banner origin/72-banner*/

//先使用这种方法吧
git checkout -b 72-banner    //先在本地创建分支并切换过去
git push origin 72-banner    //将代码push到远程的72-banner分支。

三、开发功能完成后,提交代码

1、先查看一下当前文件的状态。

git status

2、此时如果之前没有进行过add,则此时会看到很多红色的代码,而仔细看,会发现这些红色的代码都是一些自己修改过的文件。现在就是要将这些文件提交,首先add

//git add .  的作用是把所有文件添加到仓库中
git add .

//当然如果只有1、2个文件,那么可以分别添加
//git add file1.txt
//git add file2.txt

3、将文件加入到暂存区后,再使用git status看一下。会发现所有之前红色的代码全部变成绿色啦。说明已经加入到了暂存区中,接着我们要将代码commit(提交)到当前分支。

//可以对本地commit的代码功能进行描述,方便代码管理,以及版本回退
git commit -m "本次commit的描述"

4、commit之后,然后将本地本开发分支代码push到远程对应分支。

git push

四、分支合并到master

1、此时远程的72-banner分支代码已经是最新的代码啦,这时,由于我们的账号没有合并到master主分支的权限,需要在gitLab上发起合并请求(merge request)

2、需要有合并权限的人员,进行同意,即可将该分支的代码合并到master主分支上,同时可以删除该分支。

五、删除本地开发分支

git branch -d 72-banner

六、如果需要上线,则需要给发版的代码打tag

在要发版的分支上打tag

git tag v2.11.20    //git tag 发版的版本号(方便以后查找)

//然后将tag 推到远程版本库中
git push --tags

如果tag打错了,怎么办?那自然要删掉啦

git tag -d v2.11.20    //本地删除tag

//本地tag删除后,执行下面命令可删除远程版本库中的对应tag
git push origin :refs/tags/v2.11.20

如果想知道现在都打了多少tag,可以使用git tag查看

git tag    //可以查看tag列表

六、从远程拉取想要的分支到本地

1、当想从远程仓库里拉取一条本地不存在的分支时

git fetch origin branchname:branchname    //git fetch origin 本地分支:远程分支

//拉取之后,还需要手动切换到对应分支
git checkout branchname    //git checkout 本地分支

2、当本地分支里有和远程分支一样的分支,可以这样拉去该远程分支到本地:

//首先确保在想要拉去的分支上,如branchname
git pull origin branchname:branchname    // git pull origin 本地分支:远程分支

七、拉取特定tag处的代码

git checkout -b branchname tag    // git checkout -b 新分支的名称 要拉取的tag

// 例如: git checkout -b 300-bug v3.0

下载安装

本人比较穷,买不起高大上的mac,linux也是半吊子,还是老老实实地玩我的windows吧。本篇主要针对win用户。其他用户请略过。

  1. 下载git官网下载在这里,网速慢的请移步国内镜像
  2. 然后就是像其他软件一样安装即可。
  3. 安装完,在桌面点击右键,打开"Git"->“Git Bash”,跳出一个类似命令行的窗口,即为安装成功。
  4. 安装完还需要进行最后一步配置,在命令行中输入:
//使用--global参数,则表示你电脑上当前用户都会使用这个配置信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

结束啦。

一、git status

$ git status    //git status命令查看仓库的当前状态。以下是执行该命令后出现的结果之一。

//在git add之前使用该命令,会出现以下结果
On branch master    //显示当前所在分支(例如:此处显示当前分支为mater主分支)
Changes not staged for commit:    //在进行commit之前,有部分改变还没有加入暂存区,可以利用以下命令进行操作
  (use "git add <file>..." to update what will be committed)    //git add 文件名---将该文件先添加到暂存区
  (use "git checkout -- <file>..." to discard changes in working directory)    //git checkout --文件名---将文件移除

    modified:   readme.txt    //标明发生改变的文件名(或者文件列表)

no changes added to commit (use "git add" and/or "git commit -a")




//在git add之前使用该命令,如果有新文件添加到工作区,则会出现以下结果
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

Untracked files:    //从未添加过的文件列表(新增加的)
  (use "git add <file>..." to include in what will be committed)    //可以通过git add 该文件夹名 -----将文件添加到暂存区

    LICENSE

no changes added to commit (use "git add" and/or "git commit -a")





//在使用git add之后,使用该命令,会出现以下结果
On branch master    //显示当前所在分支(例如:此处显示当前分支为mater主分支)
Changes to be committed:    //已经做好commit准备
  (use "git reset HEAD <file>..." to unstage)    //可以通过git reset HEAD 文件名---将该文件移出堆栈

    modified:   readme.txt    //标明发生改变的文件名(或者文件列表)




//执行git commit后,使用该命令,会出现以下结果
On branch master    //显示当前所在分支(例如:此处显示当前分支为mater主分支)
nothing to commit, working tree clean    //没有任何需要commit的,工作目录已经清空

二、git diff

$ git diff readme.txt    //git diff 文件名---查看该文件修改了什么内容(以下结果暂时不太懂,稍后注释)

diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

三、git commit

$ git commit -m "add distributed"    //git commit -m "本次提交的描述信息",以下是执行命令后的可能结果

[master e475afc] add distributed    //[master(当前所在分支) 版本号] 本次提交的描述信息
 1 file changed, 1 insertion(+), 1 deletion(-)    //1个文件改变,1行增加,1行删除

四、git log

$ git log    //git log 查看从最近到最远的提交日志

commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)    //commit提交的版本号 (HEAD -> 当前所在分支)
Author: Michael Liao <askxuefeng@gmail.com>    //该commit的作者
Date:   Fri May 18 21:06:15 2018 +0800    //该commit提交的时间

    append GPL        //该commit的描述

commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

如果觉得上面打印的日志内容太多,可以加上–pretty=oneline

$ git log --pretty=oneline    //查看日志仅一行显示

1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL    //版本号 (HEAD -> 当前所在分支) 该commit的描述
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file

五、git reset

先通过git log找到自己需要回退的版本

//如果回退到距离最近比较近的版本,可以使用以下命令:
$ git reset --hard HEAD~1    //git reset --hard HEAD~回退数(从当前版本回退到上一个版本,则为1,回退上上个版本,则为2,以此类推)

HEAD is now at e475afc add distributed    //(回退成功) 当前所在版本号为 e475afc  该版本的commit描述
//如果回退的版本比较远,可以使用版本号进行回退操作:
$ git reset --hard 1094a    //git reset --hard 需要回退到的版本号

HEAD is now at 83b0afe append GPL    //(回退成功) 当前所在版本号为 83b0afe  该版本的commit描述

六、git reflog

如果回退了版本后,又后悔了,想要重新返回之前的版本怎么办?这个时候就要用到reflog,找到需要回退的版本号,然后执行上面的git reset操作就可以啦

$ git reflog    //git reflog查看命令操作历史

e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

一、git rebase

git rebase b    // 将b分支合并到当前分支

二、git merge

git merge b      // 将b分支合并到当前分支

在项目开发中,遇到多人协同合作的情况,就需要利用版本控制工具来汇总大家的代码,之前一直使用svn,后来git火了之后,就学习了一下,对于命令行操作不熟练的童鞋,自然有些头大,那么GUI工具必然成为了大家的首选。下面就是介绍一款GUI工具————SourceTree。

一、下载

https://www.sourcetreeapp.com/自行下载安装。

二、安装

安装软件想必做开发的人自然不用多说,选择安装目录后,一路next。

但是, 安装过程中,会有一步让注册之类的,那么如果没有翻墙的用户,自然注册不了的。那有没有跳过注册的方法,自然是有的,且继续看、

1、安装到注册页面时,如图。此时,安装页面什么也不要操作,直接去打开“我的电脑”。

2、进入C盘,打开当前电脑用户的文件夹,进入AppData这个文件夹(注意: 如果此时你没有看到该文件夹,可能是你电脑设置了默认隐藏了该文件夹,此时你需要设置显示隐藏的文件夹),继续进入Local文件夹,接着进入Atlassian这个文件夹,找到SourceTree并进入,看看有没有 accounts.json 这个文件。如果有,直接打开,并将以下代码进行替换。如果没有的话,自己手动创建一个,然后将以下代码写入文件并保存。

3、accounts.json 代码如下:

[
  {
    "$id": "1",
    "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
    "Authenticate": true,
    "HostInstance": {
      "$id": "2",
      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
      "Host": {
        "$id": "3",
        "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
        "Id": "atlassian account"
      },
      "BaseUrl": "https://id.atlassian.com/"
    },
    "Credentials": {
      "$id": "4",
      "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
      "Username": "",
      "Email": null
    },
    "IsDefault": false
  }
]

4、上述步骤全部操作完毕后(桌面可能会多一个快捷启动方式),然后重新启动sourceTree,此时惊人的事情发生了,直接跳过了注册页面,打开了软件。

接下来,你就可以愉快地玩耍啦

原文发布于微信公众号 - 李才哥(liqi13695515224)

原文发表时间:2019-03-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券