前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git进行版本控制管理

git进行版本控制管理

作者头像
李才哥
发布2019-07-10 15:57:12
1.2K0
发布2019-07-10 15:57:12
举报
文章被收录于专栏:李才哥

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

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

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

git clone 远程代码库链接

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

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

(2) 拉取远程master的代码

git pull

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

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

  • (1) 第一步,先在gitLab的Issues中找到需要开发的新功能(或者自己添加新的Issues),然后打开找到如下内容(分支名可以根据功能进行命名,例如这里命名为72-banner)。(2) 第二步,先查看先查看所有分支中,有没有该分支(如果有该分支,则直接切换分支即可;如果没有,就先创建再切换)。
代码语言:javascript
复制
git branch -a

  • (3) 如果有所需分支,则之前切换分支即可。(一般情况下是没有的,则直接看4)
代码语言:javascript
复制
git checkout 72-banner

  • (4) 如果没有,则先创建再切换。(Ⅲ是对Ⅰ、Ⅱ的简写方式)

Ⅰ、创建分支

代码语言:javascript
复制
git branch 72-banner

Ⅱ、切换到72-banner分支

代码语言:javascript
复制
git checkout 72-banner

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

代码语言:javascript
复制
//同时创建本地分支和远程分支,并切换本地分支为72-banner

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

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

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

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

代码语言:javascript
复制
git status

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

代码语言:javascript
复制
//git add .  的作用是把所有文件添加到仓库中
git add .

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

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

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

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

代码语言:javascript
复制
git push

四、分支合并到master

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

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

五、删除本地开发分支

代码语言:javascript
复制
git branch -d 72-banner

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

在要发版的分支上打tag

代码语言:javascript
复制
git tag v2.11.20    //git tag 发版的版本号(方便以后查找)

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

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

代码语言:javascript
复制
git tag -d v2.11.20    //本地删除tag

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

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

代码语言:javascript
复制
git tag    //可以查看tag列表

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

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

代码语言:javascript
复制
git fetch origin branchname:branchname    //git fetch origin 本地分支:远程分支

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

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

代码语言:javascript
复制
//首先确保在想要拉去的分支上,如branchname
git pull origin branchname:branchname    // git pull origin 本地分支:远程分支

七、拉取特定tag处的代码

代码语言:javascript
复制
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. 安装完还需要进行最后一步配置,在命令行中输入:
代码语言:javascript
复制
//使用--global参数,则表示你电脑上当前用户都会使用这个配置信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

结束啦。

一、git status

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ git log --pretty=oneline    //查看日志仅一行显示

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

五、git reset

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

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

HEAD is now at e475afc add distributed    //(回退成功) 当前所在版本号为 e475afc  该版本的commit描述

代码语言:javascript
复制
//如果回退的版本比较远,可以使用版本号进行回退操作:
$ git reset --hard 1094a    //git reset --hard 需要回退到的版本号

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

六、git reflog

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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
git rebase b    // 将b分支合并到当前分支

二、git merge

代码语言:javascript
复制
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 代码如下:

代码语言:javascript
复制
[
  {
    "$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,此时惊人的事情发生了,直接跳过了注册页面,打开了软件。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 李才哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、获取远程版本库最新代码
  • 二、本地切换到自己的开发分支
  • 三、开发功能完成后,提交代码
  • 四、分支合并到master
  • 五、删除本地开发分支
  • 六、如果需要上线,则需要给发版的代码打tag
  • 六、从远程拉取想要的分支到本地
  • 七、拉取特定tag处的代码
  • 下载安装
  • 一、git status
  • 二、git diff
  • 三、git commit
  • 四、git log
  • 五、git reset
  • 六、git reflog
  • 一、git rebase
  • 二、git merge
  • 一、下载
  • 二、安装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档