什么是Git
基于文件快照的分布式版本控制工具
Git基础概念
三个重要的工作区:
- 数据仓库:保存了所有Git提交的状态为Commited的文件,相当于集中式版本管理工具中服务器管理的文件数据库,数据仓库文件位于.git目录下
- 工作目录:工作目录就是用于开发的区域,工作目录的内容从数据仓库中检出指定版本进行修改,修改完成后可将修改内容提交到暂存区域。
- 暂存区域:暂存区域保存了工作区域提交的文件,“暂存”的意思就是只是对用户修改后需要提交到数据仓库的文件进行暂存,最后可一次性将暂存的内容提交到数据仓库。
工作流程
将它们看作普通的文件目录,它们的操作看成目录间文件的复制操作更容易理解Git的工作原理,其中git仓库比较特殊会保存每一次复制(提交)的内容,而其它两个目录相同内容会被覆盖。
sequenceDiagram
工作区域->>暂存区域: git add(复制)
暂存区域->>git仓库: git commit(增量复制)
git仓库->>工作区域: git checkout(复制)
TIM截图20181129143636.png
Git In Windows
https://git-scm.com/download/win
基础使用
1.1新建本地仓库
cmd 切换到指定目录 输入git init
Administrator@DESKTOP-O8R77KC MINGW64 /e/WeiWork/Code/OpenCode/DDDStudy
$ git init
Initialized empty Git repository in E:/WeiWork/Code/OpenCode/DDDStudy/.git/
Administrator@DESKTOP-O8R77KC MINGW64 /e/WeiWork/Code/OpenCode/DDDStudy (master)
$
1.2 设置仓库的用户信息
$ git config user.name "liaowei"
$ git config user.email "474623503@qq.com"
注:设置全局信息需要参加 --global 参数
$ git config --global user.name "liaowei"
$ git config --global user.email "474623503@qq.com"
VS 中文件忽略配置 https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
1.3 文件添加到暂存区
$ git add --a
1.4 查看 状态
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: DDDStudy.Cmd/DDDStudy.Cmd.csproj
new file: DDDStudy.Cmd/Program.cs
new file: DDDStudy.sln
Administrator@DESKTOP-O8R77KC MINGW64 /e/WeiWork/Code/OpenCode/DDDStudy (master)
$
1.5 提交代码 到本地仓库
-m 参数 标识提交备注
$ git commit -m "init repository commit"
[master (root-commit) e9d481c] init repository commit
4 files changed, 380 insertions(+)
create mode 100644 .gitignore
create mode 100644 DDDStudy.Cmd/DDDStudy.Cmd.csproj
create mode 100644 DDDStudy.Cmd/Program.cs
create mode 100644 DDDStudy.sln
1.6 查看提交日志
可以看到刚才提交的时间,提交的备注,提交人信息
$ git log
commit e9d481cb36c59c0047d27a6893b35f485be7ceb8 (HEAD -> master)
Author: liaowei <474623503@qq.com>
Date: Thu Nov 29 10:21:07 2018 +0800
init repository commit
git log 文件名
可以查看知道文件提交日志
1.7 文件跟踪 修改 提交
- 新增文件
git add 文件名字
- 提交文件
git commmit -m "提交备注"
- 从git删除文件
git rm 文件
强制删除git rm 文件 -force
1.8 撤销
- 撤销工作区的修改
git checkout --文件名
(已经commit) - 撤销暂存区的文件
git reset 文件名
(还没commit)
1.9 标签
- 打标签
git tag -a v0.1 -m "测试版本0.1"
- 查看所有标签信息
git tag
- 查看标签信息
git show v0.1
2.1 提交本地仓库到远程仓库
在GitHub 或者其余地方新建远程仓库,这里使用的是微软提供的Azure DevOps
git remote add origin https://liaowei1992.visualstudio.com/DDDStudy/_git/DDDStudy
git push -u origin --all
2.2 分支 branch
- 查看当前分支
git branch
- 创建分支
git branch 分支名称
- 切换分支
git checkout 分支名称
- 创建且切换分支
git chechout -b 分支名称
- 合并指定分支到当前分支
git merge 分支名称
(注意当前分支不能是要合并分支) -
git merge --no-ff -m "merge with no-ff" dev
--no-ff 表示禁用Fast forward,不会丢掉分支信息 - 删除分支
git branch -d 分支名称
使用场景: 目前版本V1.X 开发新版本V2.X 建立新版V2.X分支,开发测试完成后,直接合并到主分支。
分支合并时解决分支冲突:
1 修改冲突后 git commit
2 git log --graph
可以查看分支合并图
网友评论