git使用规范

Git操作文档

安装

  1. Git官网进行下载

  2. 按默认选项进行安装

  3. 安装完成后可以在开始菜单里找到"Git"->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

  4. 设置用户名和邮箱

    相当于“自报家门”,提交的时候让中控机知道是谁提交的

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"
  1. 使用如下命令查看是否设置成功
  2. 使用如下命令查看是否设置成功
    $ git config --list

创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  1. 创建版本库
    $ mkdir repository
    $ cd repository
    $ pwd
    /g/repository

如果使用的是windows系统,为了避免一些问题,请确保目录名(包括父目录)不包含中文。

  1. 通过如下命令,将这个目录修改为Git可以管理的仓库
    $ git init
    Initialized empty Git repository in G:/repository/.git/

可以发现该目录下出现了一个 .git 目录

如果没有看到 .git 目录,那可能是因为这个目录是隐藏的,使用 ls -ah 命令可以看见

Git基本流程

  1. 把文件添加到版本库
    所有版本控制系统只能跟踪文本文件的改动,但图片、视频这种二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能知道文件的大小变了,但无法知道具体修改了哪里。
    使用windows系统的时候要注意,不能用windows自带的记事本编辑任何文本文件,因为会产生编码问题,建议使用Notepad++来代替,并且把NotePad++的默认编码修改为UTF-8 without BOM

  2. 编写一个 readme.txt 文件,内容如下:

        Git is a version control system
        Git is free software
    
  3. 使用 git add 告诉Git,把文件提交到仓库 :

        $ git add readme.txt

执行完之后没有任何显示,就表示添加成功

  1. 用命令 git commit 告诉Git,把文件提交到仓库:
     $ git commit -m "A readme file"
    [master (root-commit) 2a00c8b] A readme file
    1 file changed, 2 insertions(+)
    create mode 100644 readme.txt   

其中的内容是 1 file changed ,一个文件被修改, 2 insertions(+) ,插入了两行内容

  1. 继续工作,修改 readme.txt 中的内容

    Git is a distributed version control system.

    Git is free software.

  2. 运行 git status 命令查看状态

$ git status

On branch master

Changes not staged for commit:

(use “git add …” to update what will be committed)

(use “git checkout – …” to discard changes in working directory)

modified: readme.txt

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

上面的命令输出告诉我们, readme.txt 被修改过了,但是没有提交。

如果想查看提交的具体内容,可以使用 git diff 命令

    $ git diff
    diff --git a/readme.txt b/readme.txt
    index 09e8d4d..d5512c0 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -1,2 +1,2 @@
    -Git is a version control system
    +Git is a distributed control system
     Git is free software
    \ No newline at end of file
  1. 提交

$ git add readme.txt

依然没有任何输出,在提交之前使用 git status 查看状态

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD  <file>..." to unstage)

            modified:   readme.txt

git status 告诉我们,修改即将被提交的包括: readme.txt

提交

    $ git commit -m "add distributd"
    [master 8a282b1] add distributd
     1 file changed, 1 insertion(+), 1 deletion(-)

一种较为简单的方法是,在工作区对文件修改之后运行 git commit -am " " 命令 或 git commit -a -m " " 命令 来将 git add filename 和 git commit -m " "合二为一、一步到位。

  1. 使用 git status 查看状态
    $ git status
    On branch master
    nothing to commit, working tree clean   

当前没有药提交的需求,且工作目录是干净的

版本穿梭

  1. 再次修改 readme.txt 文件
    Git is a distributed control system
    Git is free software distributed under the GPL..
  1. 尝试提交
    $ git add readme.txt
    $ git commit -m "add GPL"
    [master 5573b4f] add GPL
     1 file changed, 1 insertion(+), 1 deletion(-)
  1. 查看历史提交记录

到目前我们已经提交了三次记录,可以利用 git log 来查看提交的历史记录

    $ git log
    commit 5573b4fd56ef86cc836924098d99f1968b81c531 (HEAD -> master)
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 18:48:54 2019 +0800

        add GPL

    commit 8a282b123b2661f553fc7c49274cbc95ab4e4887
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 18:32:19 2019 +0800

        add distributd

    commit 2a00c8b6367b225f472550e4e36905e0d4ef1ada
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 16:50:05 2019 +0800

        A readme file

还有一种查看记录的方式是 git log --pretty=oneline

    $ git log --pretty=oneline
    5573b4fd56ef86cc836924098d99f1968b81c531 (HEAD -> master) add GPL
    8a282b123b2661f553fc7c49274cbc95ab4e4887 add distributd
    2a00c8b6367b225f472550e4e36905e0d4ef1ada A readme file

前面一大串的内容是 commit id (版本号),版本号用16进制表示,且每次都不同。

  1. HEAD
    在Git中,使用HEAD表示当前版本,用HEAD表示上一个版本,用HEAD^表示上上一个版本

  2. 正式开始版本穿梭

现在我们要把当前版本( add GPL )穿梭到上个版本( add distributd ),使用 git reset 命令

    $ git reset --hard HEAD^
    HEAD is now at 8a282b1 add distributd

git reset 命令有三个参数

  1. –mixed 参数: 这个参数可以省略,在直接输入 git reset commit_id 的时候即代表 git reset --mixed commit_id 。该参数可以回退版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件

  2. –soft 参数:不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件

  3. –hard 参数:清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换

使用 git log 查看提交历史记录,会发现因为回退了版本,所以少了最新的一条记录。

    $ git log
    commit 8a282b123b2661f553fc7c49274cbc95ab4e4887 (HEAD -> master)
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 18:32:19 2019 +0800

        add distributd

    commit 2a00c8b6367b225f472550e4e36905e0d4ef1ada
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 16:50:05 2019 +0800

        A readme file
  1. 撤销版本回退

其实相较于“撤销回退”来说,还是用“穿梭”更为合适,因为这步操作不是前进了一步之后向后退了一步,而是向前进一步之后再进一步,但是为了与上一步形成对比,暂用“撤销回退”。

\1. 使用 commit id 撤销回退

这种方法只建立在当前 Git Bash 窗口没有关闭的情况下,我们可以通过上下翻看命令和命令的输出内容来找到被回退的版本( add GPL )的 commit id ,然后就可以指定回到原来的那个版本

    $ git reset --hard 5573b4
    HEAD is now at 5573b4f add GPL

再次查看提交历史

    $ git log
    commit 5573b4fd56ef86cc836924098d99f1968b81c531 (HEAD -> master)
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 18:48:54 2019 +0800

        add GPL

    commit 8a282b123b2661f553fc7c49274cbc95ab4e4887
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 18:32:19 2019 +0800

        add distributd

    commit 2a00c8b6367b225f472550e4e36905e0d4ef1ada
    Author: xmh  <609692132@qq.com>
    Date:   Mon Mar 18 16:50:05 2019 +0800

        A readme file

查看 readme.txt 中的内容,发现再次改变

    $ cat readme.txt
    Git is a distributed control system
    Git is free software distributed under the GPL..

\2. 使用 git reflog 查看到 commit id 之后撤销版本回退

当关闭了Git Bash窗口之后,如果还想回退到 add GPL 版本的话,就必须找到 add GPL 的 commit id ,Git提供了一个 git reflog 来记录你的每次命令

    $ git reflog
    5573b4f (HEAD -> master) HEAD@{0}: reset: moving to 5573b4
    8a282b1 HEAD@{1}: reset: moving to HEAD^
    5573b4f (HEAD -> master) HEAD@{2}: commit: add GPL
    8a282b1 HEAD@{3}: commit: add distributd
    2a00c8b HEAD@{4}: commit (initial): A readme file

我们可以看到add GPL的 commit id 为5573b4

小结:

    1. HEAD指向的版本就是当前版本
    2. 穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。
    3. 撤销回退时,用 git reflog 查看命令历史,以便确定要穿梭到的哪个版本。

工作区和暂存区

工作区

工作区就是你在电脑中看到的目录,比如我的 repository 文件夹就是工作区,

版本库

工作区有一个隐藏的目录 .git ,这个就是Git的版本库。

版本库中存了很多东西,其中最重要的就是称为 stage (或者叫 index )的暂存区,还有Git为我们自动创建的第一个分支 master ,以及指向 master 的一个指针叫 HEAD 。

暂存区

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用 git add 把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个 master 分支,所以,现在 git commit 就是往 master 分支上提交更改。

其三者的关系如下图所示

在这里插入图片描述

  1. 首先在工作区中添加一个 LICENSE.txt 的文件
    查看状态
    $ git status
    On branch master
    Untracked files:
      (use "git add  <file>..." to include in what will be committed)

            LICENSE.txt

    nothing added to commit but untracked files present (use "git add" to track)

可以看到此时出现了一个未跟踪的(Untracked)的文件 LICENSE.txt

但此时的暂存区是空的

在这里插入图片描述

  1. 将 LICENSE.txt 添加到暂存区
    $ git add LICENSE.txt

查看状态

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD  <file>..." to unstage)

            new file:   LICENSE.txt

在这里插入图片描述

  1. 将 readme.txt 修改为如下内容
    Git is a distributed control system
    Git is free software distributed under the GPL..
    Git has a mutable index called stage.
  1. 查看状态
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD  <file>..." to unstage)

            new file:   LICENSE.txt

    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

此时可以看到有两种分类:

  • “修改即将被提交”的文件: LICENSE.txt
  • “修改即将被分批提交”的文件: readme.txt

5.将 readme.txt 文件提交到暂存区

    $ git add readme.txt

查看状态

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD  <file>..." to unstage)

            new file:   LICENSE.txt
            modified:   readme.txt

可以看到这两个文件都被归类为“修改即将被提交”的文件,此时三者的状态也变为:

在这里插入图片描述

所以 git add 命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行 git commit 就可以一次性把暂存区的所有修改提交到分支。

  1. 提交到 master 分支
    $ git commit -m "To kown how stage works"
    [master 07c1400] To kown how stage works
     2 files changed, 3 insertions(+), 1 deletion(-)
     create mode 100644 LICENSE.txt

查看状态

    $ git status
    On branch master
    nothing to commit, working tree clean

提交之后,如果没有对工作区再进行修改的话,那么此时工作区就是干净的,而且于此同时,三者的状态也变为:

在这里插入图片描述

管理修改

在这个章节,我们首先只要知道,Git跟踪并管理的是修改,而非文件。

  1. 首先在 readme.txt 文件中添加末尾一行
    Git is a distributed control system
    Git is free software distributed under the GPL..
    Git has a mutable index called stage.
    Git tracks changes.
  1. 提交到暂存区
    $ git add readme.txt

查看状态

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD  <file>..." to unstage)

            modified:   readme.txt
  1. 再次修改 readme.txt 文件为以下内容:
    Git is a distributed control system
    Git is free software distributed under the GPL..
    Git has a mutable index called stage.
    Git tracks changes of files.
  1. 提交到 master 节点
    $ git commit -m "第二次修改未提交"
    [master dc74f03] 第二次修改未提交
     1 file changed, 2 insertions(+), 1 deletion(-)
  1. 查看状态
    $ git status
    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

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

在以前,我们每次提交之后,工作区都是干净的,然而这次却提示我们 readme.txt 文件被修改,可以有两个选择,一个是添加到暂存区,另一个是撤销工作区的修改。

回顾一下我们此次操作:

第一次修改 -> git add -> 第二次修改 -> git commit

我们添加到 master 节点的,仅仅是被 git add 操作放到暂存区的内容,而非是 readme.txt 文件

所以这就是Git管理的只是修改的原因

小结:

    每次修改,如果不用git add到暂存区,那就不会加入到commit中。

撤销修改

此章节类似于版本穿梭,但不同的是,版本穿梭时仅利用 commit id 就可以在多个版本之间来回穿梭,撤销修改只能一步一步的回退,是真正意义上的回退。

未提交到暂存区

 在 readme.txt 文件的末尾随便添加一行,如果你发现这句话不合时宜,那么你可以选择手动删除,或者Git给了我们提示:



 查看状态

 ```
     $ git status
     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
 
     no changes added to commit (use "git add" and/or "git commit -a")
 ```

!!#ff0000 use "git checkout – … " to discard changes in working directory !!==> 使用"git checkout – "命令来放弃工作区中的修改

  1. 丢弃工作区的修改
        $ git checkout -- readme.txt

查看是否撤销

        $ cat readme.txt
        Git is a distributed control system
        Git is free software distributed under the GPL..
        Git has a mutable index called 

文档果然恢复了原样。

命令 git checkout – readme.txt 意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是 readme.txt 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是 readme.txt 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。

  • 已提交到暂存区

    1. 将修改后的 readme.txt 文件提交到暂存区
    2. 查看状态
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD  <file>..." to unstage)

            modified:   readme.txt

Git同样告诉我们使用“git reset HEAD ”可以把暂存区的修改撤销掉,重新放回工作区

  1. 将暂存区的修改回退到工作区
    $ git reset HEAD readme.txt
    Unstaged changes after reset:
    M       readme.txt
  1. 丢弃工作区的修改
    $ git checkout -- readme.txt
  • 已提交到本地版本库
    提交到版本库之后就要利用版本穿梭,来进行修改。

  • 已提交到远程版本库
    无法再本地进行修改

删除文件

首先在工作区创建一个 test.txt 的文件,添加到工作区后再提交到版本库

为了模拟删除文件的场景,我们首先把工作区中的 test.txt 文件删除,此时将面临两个情况

查看一下状态

    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add/rm  <file>..." to update what will be committed)
      (use "git checkout --  <file>..." to discard changes in working directory)

            deleted:    test.txt

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

Git提示我们:

  1. 可以使用"git add/rm "命令来删除版本库中的 test.txt 文件
  2. 可以使用"git checkout – "命令来撤销工作区的修改,也就是恢复 test.txt 文件

确实要删除test.txt文件

使用 git add/rm filename 命令

    $ git add test.txt
  1. 查看状态
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD  <file>..." to unstage)

            deleted:    test.txt

Git告诉我们,如果提交的话,就会删除 test.txt 文件

  1. 使用 git commit -m " " 来提交到版本库
    $ git commit -m "delete test.txt"
    [master ba751d5] delete test.txt
     1 file changed, 0 insertions(+), 0 deletions(-)
     delete mode 100644 test.txt

误删除test.txt文件

使用 git checkout – test.txt 命令就可以将被删除的 test.txt 文件恢复到工作区

git checkout – filename 命令就相当于将版本库中的内容同步到工作区

关于使用 git log --graph --oneline 命令时,所输出内容的括号中的信息,即下图红色框选择的部分

在这里插入图片描述
括号中的分支名表示这个分支停留在对应的commit_id,可以看到我们当前在dev分支下,如果我们切换到master分支:

在这里插入图片描述
可以看到mater分支仍然指向 919086c 提交点,而dev分支却不见了,这是因为dev分支超前master分支一个提交,所以自然看不到dev分支的状态

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 随着软件研发公司的发展,代码管理和版本控制变得越来越重要。Git是目前最受欢迎的代码版本控制系统之一,是许多软件研发公司使用的首选工具。而要确保一个团队使用Git时不产生混乱,需要制定Git使用规范。以下是软件研发公司Git使用规范的几个关键点: 1. 分支管理 在团队开发中,Git 的分支管理功能可以使开发人员轻松地协作,同时确保代码合并到主分支时不会出现不可预料的问题。因此,开发团队应该确立一个分支合并政策,并在项目启动时详细讨论和确定。 2. 提交规则 Git的提交规范可以使团队更好的管理和控制代码,提高代码质量。开发团队应该制定提交信息模板并遵循一定的格式,例如使用 type(scope): subject 的格式。 3. 代码审查 代码审查可确保代码更加健壮且易于维护,同时它也会帮助开发人员更多地获取他人的专业知识。开发团队可以设立代码审查流程,并确保每个提交都得到同行的确认。 4. 版本管理 如上所述,一个好的Git使用规范可以帮助项目开发人员更好的管理代码,特别是版本控制。开发团队应该在代码库中设置标签,并确保所有代码的历史版本都得到备份。 综上所述,Git使用规范对软件研发公司非常重要。它可以使开发团队更好地管理代码,避免团队成员之间的混乱,同时确保代码的质量和安全。通过严格遵守这些规范,软件研发公司可以确保开发出的软件更加可靠和高效。 ### 回答2: 软件研发公司Git使用规范需要遵循以下原则: 1.分支策略:应该使用Git Flow分支管理工作流,将开发、测试和发布过程分开,并建立主分支和开发分支。 2.Commit信息:每个commit都应该有有意义的注释。清楚地描述了变更的内容。 3.Merge流程:使用rebase的方式进行merge,保持commit的线性。 4.Pull Request审查:对所有分支合并进行审查,确认是否应该合并进产品或特性分支。 5.版本控制公开:将代码仓库公开,使用标签对代码版本进行版本控制,并正确地管理文件和文件夹结构。 6.频繁地推送:推送代码到远程代码库,确保所有人都在同一个页面上,并及时解决冲突。 7.测试:在主分支前进行单元测试,并及时修复Bug。 8.使用releases:代表具体版本的标记的归档分支。 9.合并冲突:如果出现冲突,要明确已经冲突的部分,采用最好的方法解决。 在软件开发的整个过程中,遵循严格的Git使用规范可以帮助开发团队更加高效地合作,减少几个层面的风险。 ### 回答3: 软件研发公司git使用规范需要遵循以下几点: 一、版本控制 1、在开发新功能或修复bug前,应该从远程仓库中将最新代码拉取到本地,并确保本地仓库与远程仓库同步。 2、开发新功能或修复bug时,应该创建新分支进行开发或修复,不应该直接在主分支(如master)上进行修改。 3、在开发过程中,应该频繁进行代码提交,确保代码的可追溯性。 二、分支管理 1、在创建新功能或修复bug的分支时,应该遵循命名规范,名称应该描述清楚该分支的作用,如“feature/login”、“bugfix/login”。 2、当功能或修复完成后,应该将该分支合并到主分支上进行代码同步。 3、删除无用的分支,以免造成仓库杂乱不堪。 三、代码规范 1、遵循团队的代码规范使用已定制好的代码格式,确保代码风格一致。 2、代码注释应该充分、清晰明了,便于代码审核和其他开发人员理解。 四、实时同步 1、所有开发人员应该时刻保持远程仓库与本地仓库的同步,避免代码冲突和版本受损。 2、每天结束前,应该将本地代码提交到远程仓库中,确保代码安全。 以上是软件研发公司git使用规范的主要内容,遵循这些规范可以有效地提高代码管理的效率和质量。同时,在实际开发中应该灵活运用这些规范,根据不同项目的需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值