git 使用简易指南

张顺 -
git 使用简易指南

层级关系

工作区(add) --> 暂存区(commit) --> 本地库(push) --> 远程库

1.从远程库获取最新代码合并到本地
//查询当前远程的版本
$ git remote -v
//获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])
$ git fetch origin master  [示例1:获取远端的origin/master分支]
$ git fetch origin dev [示例2:获取远端的origin/dev分支]
//查看版本差异
$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差异]
$ git log -p dev..origin/dev   [示例2:查看本地dev与远端origin/dev的版本差异]
//合并最新代码到本地分支
$ git merge origin/master  [示例1:合并远端分支origin/master到当前分支]
$ git merge origin/dev [示例2:合并远端分支origin/dev到当前分支]
2.本地创建分支,并同步远程分支的内容
$ git branch --track master origin/master [示例: 本地建立master分支,并下载/关联远程orgin/master]
3.Git 基础 - tag

每一个提交都有一个commitID,但是每次记录commitID都很复杂,使用git tag可以在一些重要的版本和修改中加入一个标识,可以很快速的找到我们需要的版本。

tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如 已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以 检出 v2.0 的代码作为一个 branch ,然后作为开发分支。

Git 基础 - 打标签

4.合并多条commit由于开发中各种修改,本地分支多次commit。最后提交master后,会看到乱七八糟的所有增量修改历史。
$ git rebase -i [startpoint] [endpoint]
- -i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作。
- [startpoint] [endpoint]则指定了一个合并的区间。
- 如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit。

示例:现需要合并三个commit(first、second、third)

image.png

执行 git rebase -i f123956 进入交互界面。

image.png

根据我们的需求,我们将commit内容编辑如下:

pick 4d32374 first commit
s b10e9fc second commit
s 99a0294 third commit

上面的意思就是把第三次、第二次提交的commit合并到第一次的提交上。

wq保存后,进入注释修改界面:

image.png

删除之前的commit注释,添加合并后的注释,最终编辑效果如下:

image.png

查看 log 已经合并了

image.png

5.Git命令行操作5.1本地库初始化

进入文件夹

git init
注意:生成的 .git 目录中存放的是本地库相关文件,不要删除
5.2设置签名

项目(仓库)级别仅在当前本地库有效

git config user.name tom  #设置用户名tom
git config user.email liu@qq.com #设置用户邮箱

系统用户级别仅在当前登录的操作系统用户有效

git config --global user.name tom
git config --global user.email liu@qq.com

仅仅加了一个 --global

优先级别:项目级别 > 系统级别

信息保存位置: ~/.gitconfig 文件

5.3基本操作5.3.1 状态查看
git status   #查看工作区、暂存区状态
5.3.2 添加
git add fileName  #指定文件
git add . #所有
说明:将工作区的文件添加到暂存区
5.3.3 提交
git commit -m 'commit message' fileName
说明:将暂存区内容提交到本地库
5.3.4 查看历史记录
git log 
git reflog  #常用
git log --greph #图形显示,更直观
git log --pretty=oneline #漂亮一行显示
git log --oneline #简洁显示
说明:HEAD@{移动到当前版本需要多少步},HEAD表示当前位置
5.3.5 前进后退

基于索引值推荐

git reset --hard 指针位置
例子:git reset --hard a6ace91 #回到这个状态
说明:通过git relog查看历史记录
5.3.6 reset的三个参数比较
soft: 
  - 仅本地库移动HEAD 指针
mixed:
  - 在本地库移动HEAD指针
  - 重置暂存区
hard:
  - 在本地库移动HEAD指针
  - 重置暂存区
  - 重置工作区
5.3.7 删除文件并找回相当于建立一个快照,虽然删除了,但只要添加到暂存区,就能找回
git reset --hard 指针位置
5.3.8 文件差异比较
git diff 文件名
git diff 哈希值 文件名  #和历史中的一个版本比较
git diff  #不带文件名,则比较多个文件
5.4 分支管理

fixmasterfeature/xfeature/y

5.4.1 什么是分支管理在版本控制中,使用推进多个任务5.4.2 分支的好处同时并行推进多个功能开发,提高开发效率某一分支开发失败,不会对其它分支有任何影响5.4.3 分支操作创建分支
git branch 分支名
查看分支
git branch
git branch -v 
切换分支
git checkout 分支名
git checkout -b 分支名   #创建分支并直接切换到该分支
合并分支相当于把修改了的文件拉过来
git merge xxx
注意:合并分支的时候要明确谁谁合并
    我在a分支里面修改了。要合并到master,就先切换到master,然后合并a
删除分支
git branch -d 分支名
5.4.4 解决冲突冲突的表现

冲突的解决

第一步:编辑,删除特殊标记<<<===第二步:修改到满意位置,保存退出第三步:添加到缓存区 git add 文件名第四步:提交到本地库git commit -m '日志信息' 注意:后面一定不能带文件名6.Git 结合Github

别名 分支名

6.1 创建远程库地址别名
git remote -v  #查看远程地址别名
git remote add 别名 远程地址 
例子:git remote add origin https://xx
6.2 推送

开发修改完把本地库的文件推送到远程仓库前提是提交到了本地库才可以推送

git push 别名 分支名
git push -u 别名 分支名    #-u指定默认主机
例子:git push origin master
6.3 克隆

完整的把远程库克隆到本地克隆下来后不要在主分支里面做开发clone进行一次,从无到有的过程,更新用pull

git clone  远程地址
例子:git clone https://xx
6.4 拉取

本地存在clone下来的文件 就用pull更新

pull = fetch + merge
    git fetch 别名 分支名
    git merge 别名 分支名
git pull 别名 分支名
6.5 解决冲突

注意:解决冲突后的提交是不能带文件名的

如果不是基于远程库最新版做的修改不能推送,必须先pull下来安装冲突办法解决

6.6 rebase

提交记录简洁不分叉没学懂,感觉有点鸡肋混眼熟

git rebase -i 索引号
git rebase -i HEAD~3  #合并最近三条记录
说明:在vim编辑里面改成s
6.7 beyond compare

用软件解决冲突

1.安装 :
   beyond compare 
2.配置:
   git config --local merge.tool bc3  #合并名称
   git config --local mergetool.path '/usr/local/bin/bcomp' #软件路径
   git config --local mergetool.keepBackup false  #False不用保存备份
3.应用:
   git mergetool
说明:--local指只在当前操作系统有效
6.8 跨团队合作

代码review之后合并

适用于个人

邀请成员:Settings --> Collaborators -->填写用户名 -->打开链接接受邀请

企业创建一个组织方便管理

review

组织做review通过Pull request

给开源社区共享代码

点击别人仓库的fork 到自己的仓库 -- > 然后clone下来 修改后推送到远程库 --> 点击Pull Request请求 --> Create pull request发消息

6.9 Tag标签

为了清晰的版本管理,公司一般不会直接使用commit提交

git tag -a v1.0 -m '版本介绍'   #创建本地tag信息
git tag -d v1.0            #删除tag
git push origin --tags   #将本地tag信息推送到远程库
git pull origin --tags    #拉取到本地

git checkout v.10    #切换tag
git clone -b v0.1 地址   #指定tag下载代码
6.10 SSH 免密登录输入:ssh-keygen -t rsa -C GitHub邮箱地址进入.ssh目录,复制id_rsa.pub文件内容登录GitHub。Settings --> SSH and GPG keys --> New SSH Key 回到git通过ssh地址创建。git remote add 别名 SSH地址 7.Git工作流7.1 概念
在项目开发过程中使用Git的方式
7.2 分类7.2.1 集中式工作流
像SVN一样,集中式工作流有一个中央仓库,所有的修改都提交到了Master分支上
7.2.2 GitFlow工作流 *

主干分支master 开发分支develop 修复分支hotfix 预发布分支release 功能分支feature

GitFlow 有独立的分支,让发布迭代过程更流畅。
7.2.3 Forking 工作流
在 GitFlow 基础上, 充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。 
安全可靠地管理大团队的开发者

3fff7af34841aeef3caeeb28fa485035.jpg

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

git

扩展阅读

加个好友,技术交流

1628738909466805.jpg