0
点赞
收藏
分享

微信扫一扫

git的简单介绍和使用

程序小小黑 2023-08-11 阅读 20

git学习

1. 概念

Git是一个免费和开源的分布式版本控制系统。相较于SVN具有便于本地分支等特性。

git和svn的区别和优势

1.1 区别

1.2 git优势

  1. 容易分支;git鼓励创建一个或多个本地分支进行开发且代价极小。与此对应SVN的分支基本上等于将整个项目进行拷贝,成本大。
  2. 速度快;大部分操作都在本地进行,如查看提交记录。但是在拉取的时候会慢,SVN拉取的是最新版本,而GIT会拉取整套版本;
  3. 分布式;与SVN集中式管理相比,GIT每个用户都是主服务的一个完整备份;
  4. 有暂存区;可用于提交部分文件;
  5. 数据安全;每个文件与每次提交都会被验证

2. git的三个状态和三个阶段

  • 三个状态:已修改,已暂存,已提交
  • 三个阶段:工作区,暂存区,仓库

2.1 三个状态:

2.2 三个阶段:

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

3. 常用的git命令

3.1 下面是最常用的命令

序号命令名称描述
1git clone克隆复制远程仓库包含历史版本在内的几乎所有数据至本地仓库。
2 ❤git pull拉取将远程仓库的最新内容数据下载到你的本地仓库并尝试合并
3 ❤git fetch获取将远程仓库的最新内容数据下载到你的本地仓库但不会自动合并
4git checkout检出多用途命令,从Git仓库提取文件、撤销修改、切换分支等。
5git diff比较未暂存文件与最后一次提交的文件或者已暂存文件差异。
6 ❤git add跟踪跟踪新文件并使之处于暂存状态或合并时将冲突文件标识为已解决等。
7 ❤git commit提交将未暂存的或已暂存的文件保存至本地仓库
8 ❤git push推送将文件推送到远程仓库。
9git log查看提交历史。
10❤git branch分支创建或查看分支。
11❤git merge合并合并分支。

3.2 git命令操作流程图如下:

在这里插入图片描述

4. 分支内容学习

4.1 项目远程仓库

共分为两个分支。

  • master分支:主干分支。用于发布生产环境。

  • dev分支:开发分支。(一般我们都是从dev拉取版本)接收本地dev分支的合并。测试无误后才合并至master分支,后续根据情况决定是否建立测试分支。

4.2 项目本地仓库

  • 包括一个dev分支与多个功能及bug修复分支。

  • dev分支用来合并其它功能分支的提交,同时用来推送远程dev分支。

  • 功能分支及bug修复分支是临时分支,用于开发具体功能和修复bug,开发完成合并至本地dev分支后可删除;

    注意线上的bug修改分支需要从远程master分支进行拉取。

4.3 生产环境从远程master分支拉取打包,暂不设置“integration manager”角色,每位开发人员均可以向master分支合并。

5. 具体开发步骤

  1. 拉取远程最新提交的dev分支至本地dev分支,保证本地dev分支代码为最新版本。

  2. 从本地dev分支拉取新的功能分支dev-temp-xxx并在其上进行开发

  3. 本地功能开发分支在开发完成并且自测无误后进行代码提交commit(commit是提交到本地仓库)。

  4. 切换到本地dev分支从远程dev分支拉取最新提交。

  5. 将功能分支dev-temp-xxx合并(merge)到本地dev分支,此过程可能产生冲突,解决冲突。

  6. 推送本地dev分支到远程dev分支。

  7. 将新建的功能分支dev-temp-xxx删除。

个人 具体理解如下:

6. 如何解决冲突

  1. 冲突发生时首先备份自己开发的内容。

  2. 然后用他人的版本解决冲突。

  3. 将自己新开发的内容回添到已解决冲突的文件中。

  4. 提交。

7. 减少冲突的方法

  • 任务分解时功能独立;

  • 开发前拉取代码;(尽量早拉取)

  • 开发测试完成后及时提交代码。(尽快早提交)

8. 关于对冲突和合并的理解

  • 冲突的解决,分支的合并都是在本地的;
  • 本地的dev分支版本,都是高于拉取时远程dev的版本,所以在本地合并(merge)之前得重新拉去最新的远程dev分支

9. 补充其他可能用的命令

命令简要说明
git add添加至暂存区
git add–interactive交互式添加
git apply应用补丁
git am应用邮件格式补丁
git annotate同义词,等同于 git blame
git archive文件归档打包
git bisect二分查找
git blame文件逐行追溯
git branch 分支相关分支管理
git cat-file版本库对象研究工具
git checkout 分支相关检出到工作区、切换或创建分支
git cherry-pick提交拣选
git citool图形化提交,相当于 git gui 命令
git clean清除工作区未跟踪文件
git clone克隆版本库
git commit提交
git config查询和修改配置
git describe通过里程碑直观地显示提交ID
git diff差异比较
git difftool调用图形化差异比较工具
git fetch获取远程版本库的提交
git format-patch创建邮件格式的补丁文件。参见 git am 命令
git grep文件内容搜索定位工具
git gui基于Tcl/Tk的图形化工具,侧重提交等操作
git help帮助
git init版本库初始化
git init-db*同义词,等同于 git init
git log显示提交日志
git merge 分支相关分支合并
git mergetool图形化冲突解决
git mv重命名
git pull拉回远程版本库的提交
git push推送至远程版本库
git rebase分支变基
git rebase–interactive交互式分支变基
git reflog分支等引用变更记录管理
git remote远程版本库管理
git repo-config*同义词,等同于 git config
git reset重置改变分支“游标”指向
git rev-parse将各种引用表示法转换为哈希值等
git revert反转提交
git rm删除文件
git show显示各种类型的对象
git stage*同义词,等同于 git add
git stash保存和恢复进度
git status显示工作区文件状态
git tag里程碑管理

9.1 对象库操作相关命令

命令简要说明
git commit-tree从树对象创建提交
git hash-object从标准输入或文件计算哈希值或创建对象
git ls-files显示工作区和暂存区文件
git ls-tree显示树对象包含的文件
git mktag读取标准输入创建一个里程碑对象
git mktree读取标准输入创建一个树对象
git read-tree读取树对象到暂存区
git update-index工作区内容注册到暂存区及暂存区管理
git unpack-file创建临时文件包含指定 blob 的内容
git write-tree从暂存区创建一个树对象

9.2 数据传输相关命令

命令简要说明
git fetch-pack执行 git fetch 或 git pull 命令时在本地执行此命令,用于从其他版本库获取缺失的对象
git receive-pack执行 git push 命令时在远程执行的命令,用于接受推送的数据
git send-pack执行 git push 命令时在本地执行的命令,用于向其他版本库推送数据
git upload-archive执行 git archive –remote 命令基于远程版本库创建归档时,远程版本库执行此命令传送归档
git upload-pack执行 git fetch 或 git pull 命令时在远程执行此命令,将对象打包、上传

9.3 分支相关命令

9.3.1 git branch 分支管理

git branch 查看本地所有分支

git branch -a 查看所有的分支

git branch -r 查看远程所有分支

9.3.2 git checkout 切换或新建分支

git checkout --track origin/dev 切换到远程dev分支

git checkout dev 切换到本地dev分支

git checkout -b dev 建立一个新的本地分支dev

9.3.3 git merge 分支合并

git merge origin/dev 将分支dev与当前分支进行合并

举报

相关推荐

0 条评论