Java_005_版本控制

版本控制

跟踪和管理代码的变更

  • 反悔的补救
  • 代码的备份
  • 不同版本变更的跟踪和合并管理

开发协作

  • 不同版本、不同开发任务的并行开发
  • 发布版本的跟踪和移动
  • 代码 diff 和 review

git基本原理

基本概念:文件三种状态

  • 变更、未跟踪
  • 跟踪
  • 已提交

变更的基本单位——提交 commit

  • 变更的 hash 值作为 id

分支

  • 不同变更链条的集合

仓库

  • 常说的代码库
  • 所有变更和分支的集合

git基本操作

  • 合并 和 rebase
    1
    2
    3
    4
    5
    合并会生成新的提交
    但是rebase 从不同的提交里再次从新提交一遍到当前分支同时针对每一个提交的冲突进行冲突处理,处理一个冲突

    rebase之后的提交是 流线性的没有merge交叉的情况
    用 rebase最好
1
2
3
4
5
6
7
假设开发流程如下,
master: 0 -> 1 -> 2 -> 6
branch: 3 -> 4 -> 5
其中序号代表开发顺序
那么执行rebase之后就变成了
0 -> 1 -> 2 -> 6 -> 3 -> 4 -> 5
而merge的话则是会对2、5、6三个状态节点进行一个合并,然后生成7这么一个新的节点
  • 撤销更改

Git 安装

Windows安装git

  1. 从官方网站下载Git: https://git-scm.com/download/win
  2. 按照默认选项点击下一步进行安装
  3. 在开始菜单选择 Git Bash, 双击打开命令行窗口,即可执行git命令

推荐可选客户端

  • Cmder: Windows下的命令行模拟器
  • sourcetree: Windows和Mac下的git图形客户端
  • IntelliJ 自带git支持

Mac安装Git

方法一: Homebrew

安装Homebrew, 具体参见Homebrew官方安装文档
运行命令: brew install git 安装git
运行命令: git version 确认安装成功

方法二: Xcode Command Line Tools

1
2
运行命令: xcode-select --install, 然后在弹出窗口中选择安装. 根据网络速度等待大约30分钟, git和xcode相关的开发工具会被成功安装
运行命令: git version 确认安装成功

Ubuntu安装Git

1
2
运行命令: sudo apt-get install git 安装git
运行命令: git version 确认安装成功

其他可选客户端

  • Cmder: Windows下的命令行模拟器
  • sourcetree: Windows和Mac下的git图形客户端
  • IntelliJ自带的git支持

Git 配置

配置用户名

运行以下命令配置用户名和邮箱, 把名字Alex和alex@example.com换成你的名字和邮箱

1
2
3
$ git config --global user.name "Alex Shi"
$ git config --global user.email alex@example.com
运行命令 git config --list 查看修改之后的配置信息

配置文件

配置用户名之后git会在用户目录下面创建一个配置文件 .gitconfig. 例如我们运行上面的命令更改了用户名和邮箱, 则配置文件类似如下:

1
2
3
[user]
name = Yang Shi
email = kid7st@gmail.com

Windows

一般在目录 $HOME 目录下, 注意, HOME是系统变量, 保存的是用户的目录. 运行以下命令则可以找到用户目录:

echo $HOME

####Mac和Linux

配置在用户目录: ~/.gitconfig

推荐配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[user]
name = {Name}
email = {Email}
[alias]
st = status
cm = commit
br = branch
co = checkout
df = diff
rt = remote
lg = log --color --graph --pretty=format:'%C(yellow)%h%Creset -%Cred%d%Creset %s %C(bold blue)(%cn %cr)%Creset'
ll = log --color --graph --pretty=format:'%C(yellow)%h%Creset -%Cred%d%Creset %s %C(bold blue)(%cn %cr)%Creset' --no-merges --stat
up = push origin master
pr = pull --rebase
[core]
excludesfile = /Users/Kid7st/.gitignore_global

Git

Git 官方文档

Git基础

Git分支(branch)

Git工作流

完成如下经典问题

  1. Git常用命令及其功能: git init, git add, git status, git commit, git branch, git rebase, git merge, git push, git pull
  1. 简述”基于Git分支的工作流程”, 其中步骤和使用到的命令是什么?
  1. 请使用Git分支的工作流程
  1. git merge 和 git rebase的差别
1
2
3
4
5
6
7
假设开发流程如下,
master: 0 -> 1 -> 2 -> 6
branch: 3 -> 4 -> 5
其中序号代表开发顺序
那么执行rebase之后就变成了
0 -> 1 -> 2 -> 6 -> 3 -> 4 -> 5
而merge的话则是会对2、5、6三个状态节点进行一个合并,然后生成7这么一个新的节点
  1. 用Hexo在github上搭建自己的博客系统