Git flow

Git工作流

Flow

for ( =>local-code => 
        submit to local-repository => 
        submit to server-repository => 
        from remote-repository update code => 
    )

Detail

localfolder -> git Stage -> git local -> git remote

本地工作文件夹 -> 索引区 -> 本地库 -> 远程库(服务器端)

基础配置

  • git init 初始化

  • git config -l 查看配置信息

  • git config --global user.name "XXX"

  • git config --global user.email "xxx@zz.com"

  • git config --help 查看帮助信息

  • git help config

  • git help commit

  • git help ...

提交本地仓库

创建本地仓库

  • mkdir mygit 建立本地工作文件夹
  • cd mygit 进入文件夹

git init

  • git init 初始化git库

更新仓库内容

  • nano 文件名 编辑本地文件,比如 nano test.htm

git status

  • git status 查看本地文件夹状态

    当前状态为 红色 提示文件未添加到索引区

git add FN

  • git add 文件名 添加文件到索引区,比如 git add test.htm

    提交成功再次查看状态为绿色,成功添加到索引区

git commit -m “RI”

  • git commit -m "备注信息" 将索引区内容提交至本地仓库

git log

  • git log 查看提交日志

查看提交日志

  1. 首先修改下原有文件内容 nano test.htm

  2. 查看状态

  3. 添加到索引区

  4. 提交到本地库

  5. 查看日志

  6. 在以后日志必定会越来越多,就可以用以下方法查看

git log -[number]

  • git log -1 后面的数字代表最近的几条记录

git log –oneline

  • git log --oneline 将日志信息缩短为一行显示 ; ID号也缩短为前7位了

git log -p

  • git log -p 查看更改的详细信息

git log -p -[number]

  • git log -p -1 和数字组合用法,查看最近一次更改的详细信息

git log -p -[number]

  • git log -p -1 --online 加上oneline,对比上图可见头部信息缩短了

git log –stat

  • git log --stat 对每次的提交的内容进行统计的信息

git log –help

  • git log --help 查看其他命令用法

工作状态回退

未添加到索引区

  1. 修改文件内容

  2. 查看状态

git checkout – [FN]

  1. git checkout -- 文件名 突然不想要已修改的部分内容了,状态回退一下

  2. 查看源文件,刚才修改内容已经被回退

已添加到索引区

  1. 修改内容然后添加到索引区

git reset HEAD [FN]

  1. git reset HEAD 文件名 将添加内容从索引区回退

  2. 接着继续按照 未添加到索引区 的步骤即可回退到文件未修改状态

  • git add . Git 不同版本的用法区别

比较修改内容

git diff

  • git diff 比较工作文件夹

git diff –cached

  • git diff --cached 比较索引区

文件操作

  1. 执行多个操作(修改内容,添加文件)

  2. 查看状态并添加到索引区

git mv OldFN NewFN

  1. git mv 旧文件名 新文件名 修改文件名

    修改前缀认为添加新文件,修改后缀认为重命名

    同时修改认为添加新文件

git rm –cached FN

  1. git rm --cached 文件名 从索引区删除

  2. 查看下日志

忽略管理

设置Git忽略的文件,这些文件不参与Git库的提交和管理。(动态文件,比如Node.js的 node_modules 文件夹)

  1. 新建两个文件;ingnore.tmp为需要被忽略的文件, .gitignore为配置文件

  2. 查看状态

    目前状态为两个文件都将被Git管理

  3. .gitignore 中添加 *.tmp 忽略这类文件:即使是在同级目录文件夹内的.tmp 都会被忽略

  4. 查看状态

    .tmp 已被忽略 ;

更新最后的提交记录

在上次提交过一次记录,后来发现内容有误,需要修改下内容但是又不想再提交一条修改记录,而是添加到上次提交的记录中去。

  1. 在.gitignore 中再添加一条信息

  2. 查看状态

  3. 添加到索引区

git commit –amend

  1. git commit --amend 提交到最后的一条记录中去

版本回退/切换

git reset –hard HEAD

  • git reset --hard HEAD 回退到最新提交版本

  • git reset --hard HEAD~ 回退到最新提交的上一次版本

  • git reset --hard HEAD~n 回退到倒数第N版本

  • git reset --hard 版本ID号 回退到指定版本号

  1. 先提交几次记录

  2. 回退到上个版本

  3. 回退到最新版本,指的是此刻版本头HEAD指向的版本

  4. 根据版本ID号回到指定版本 ; 通过头指针指向我们需要的版本,其他在头部之上的版本只是未显示而已,但仍在库中。

git reflog -[number]

  1. git reflog -4 要是忘记的版本号,可执行该命令查询之前版本切换的操作信息,从而确定需要切换的版本号

分支使用⭐

以上的操作都是在主分支上执行的,但是在实际应用中不应该多次在主分支操作。

在项目中每个人都有自己的要执行的任务,每个人执行的任务都不同,那么就需要在主分支上建立自己的分支,在自己的分支上不断的完善后再向主分支进行合并。

git branch BN

  • git branch 分支名 建立新分支

git checkout BN

  • git checkout 分支名 切换分支

Detailed Process

  1. 查看下当前已有分支情况

  2. 建立分支,切换分支

    建立的分支拥有的内容 与 在建立分支的那个时刻的主分支(被分支的分支)的内容一致

  3. 添加文件,提交记录

  4. 查看当前分支日志

  5. 切换到主分支,查看日志

  • 在分支修改后没有提交的情况下,是不允许切换分支的

分支文件存储位置

  • 通过git在本地创建仓库,切换分支时另外一个分支的内容在哪里?

      项目文件都保存在.git目录下,始终存在,包括历史的各种版本,只不过不能从文件名字搜索到,因为Git是Content Addresing的。每次切换到一个分支,或者是check out一个历史版本,Git就从数据库(就是.git目录)中把这个版本的文件和目录都找出来,Copy一份放这当前的项目目录下。

合并分支

git merge BN

  • git merge 分支名 先得切换到主分支,再进行合并

git branch BN

  • git branch -d 分支名 删除分支

分支冲突

git checkout -b BN

  1. git checkout -b 分支名 建立分支并切换到该分支

  2. 修改文件内容,提交

  3. 切换分支,继续修改同样文件的内容,提交

  4. 在主分支上合并开发分支

    有冲突,需要手动修改

    打开有冲突的文件

    这是VSCode的功能(当前所处分支|被合并分支|两者都要|比较)

  5. 修改完毕后,回到主分支,查看状态并提交

使用Tag标签

简单了解版本号

  • 版本号: 1.1.4 (NNN.abc.xxx)

  • 有些为四位数 1.1.4.2356 最后的数字为编译次数等其他信息

    • NNN:大版本号
    • abc:每次做出的小更新时,发布的版本号
    • xxx:每次bug修正时发布的版本号

git tag VersionNumber

  1. git tag 版本号 把当前代码状态作为一个版本发布

  2. 修复bug,再次发布新版本

  3. 新功能追加,再次发布新版本

  4. 查看版本

使用别名

在Git中可以将经常使用的命令以别名缩写的方式简化使用,根据个人习惯或者开发组规范吧。

git config --global alias.别名 原命令名

例如:

  • git config --global alias.co checkout
  • git config --global alias.br branch
  • git config --global alias.cm commit
  • git config --global alias.st status
  • ...

GitHub

  1. 创建Github仓库

  2. 克隆仓库到本地

  3. 进入仓库查看状态

  4. 向仓库添加内容后,查看状态,提交到本地仓库

  5. 查看当前状态,所处分支

  6. 查看要推送的URL,然后推送到远端

  7. 进入GitHub查看,推送成功!

常用命令

  • git branch -a 查看全部分支情况
  • git branch 分支名1 remotes/origin/分支名2 以远程分支名2为依据建立本地分支名1 (这两个是同一个东西来的)
  • git remote -v 查看获取和推送的URL
  • git push origin 分支名 推送到指定分支
  • git pull 拉取远端内容

Remark

文章中用到的简写:

  • RI ==Remark Information
  • FN == FileName
  • BN == branchName
< - 僕らは知らない - >