Git 简单总结(一)

简介

  • 什么是git?
1> git 是一款开源的 分布式 版本控制工具  (我们常用的svn 是一种集中式版本控制工具).
2> git 在世界上所有的分布式版本控制工具中,git 是最简单\最快\最六次那个的.
  • git的起源
作者是 linux 之父,作者用了10天就写完了 👍
  • 集中式 与 分布式 图解


  • git 和 svn 的简单对比

1> 速度方面: git 提交速度在多数情况下比svn 快.(git 在本地有本地的仓库)
2> 结构: svn 集中式,git 分布式
3> 其他:svn 使用分支比较笨拙,git 可以轻松拥有多个分支,svn 联网 才能用,git本地不联网也可以提交.
4> 旧版本的svn 会在每个目录下放置一个.svn 文件, git 只会在根目录下放置一个 .git 目录.

  • git 的工作流程
git工作流程.png
  • 分布式和集中式 最大的区别:
1> 在分布式下,开发者可以本地提交.
2> 每个开发者机器上有一个服务器的数据库.
git 命令行的演练
  • 初始化git仓库
> cd   仓库目录
> git init (仓库初始化)
  • 配置git 的邮箱和用户名
    使用git的前提: 必须给git 配置一个'邮箱'和'用户名' 告诉这个Git 现在是谁在使用
> 配置单独Git仓库用户名和邮箱: 
      git config user.name "mango"
      git config user.email "690852195@qq.com"
      注意,在配置用户名和邮箱时,时没有任何提示的,如果有提示说明配置时 有地方可能出错了

> 查看单独Git仓库配置的git的用户名和邮箱:
  直接进入当前git 根目录的 .git 目录,找到config 文件打开即可看见.


>配置电脑上git 的全局邮箱和用户名:
    git config --global user.name "mango"
    git config --global user.email "690852195@qq.com"
> 查看全局Git仓库配置的git的用户名和邮箱:
  个人 -> .gitConfig 查看

配置全局邮箱和用户名的好处,当本地仓库没有设置邮箱和用户名时 可以默认使用全局的用户名和邮箱,如果本地仓库有配置邮箱和用户名的化就使用本地的用户名和仓库

  • git 的常用操作
1> 查看git 文件状态
git status   
红色文字表示该文件被修改或添加但没有提交到git 本地的暂缓区
绿色文字表示该文件被提交到git 本地的暂缓区,但没有提交到本地仓库

2> 提交文件到暂缓区
git add . 

3> 提交暂缓区的文件到本地的代码仓库
git commit -m  '提交文件描述'
文件从暂缓区提交到本地仓库后,git 会清空暂缓区

4> 给命令行取别名(alias)
 git  config alias.st  "status"  
 意思是个 status 取一个别名 st ,此后可以使用 st 代替 status
 如: git status  ==  git st

 git config alias.xxyy  "commit -m"  
 别名配置后可以在 .git 的config 文件中查看和 个人的.gitConfig 文件中查看当前配置了的别名

5> 删除文件
 git rm person.m   将person.m 文件删除
 git commit -m     '删除文件描述'

6> 查看版本信息
 git log     版本号是一个由 sha1 算法生成的40 位哈希值
 git reflog  也可以查看版本号(更强大),可以查看所有版本回退的信息

7> 版本回退
  - 本地回退
  git reset --hart   HEAD 强制恢复(回退没有提交的代码)
  git reset --hard HEAD^ 回退到上一个提交版本
  git reset --hard HEAD^^  回退到上上一个提交版本
  git reset --hard HEAD~10  回退到前10个提交版本
  git reset --hard    12345               版本号(前5位) 通过git log 查看到的版本号



git 的工作原理
  • git 的几个核心概念
> 工作区(working directory): 根目录里面除了 .git 目录 外的内容
> 版本库(Repository):   .git 目录  ,用于存储记录版本信息
  暂缓区: (stage)
  分支(master): git 自动创建的第一个分支
  HEAD指针(游标): 用于指向当前的分支

> git add 和 git commit 的原理
  git add 把修改或者新添加的文件(从工作区文件目录)添加到暂缓区
  git commit: 把暂缓区的文件内容提交到当前分支(HEAD 指向的分支,比如master分支)

原理图

git工作原理.png

共享版本

  • git 服务器的搭建非常的繁琐(需要使用 linux)
  • 可以把版本托管到 github和oschina
  • 一个文件夹
  • 一个U盘
一个文件夹作为一个共享版本库
1.将一个文件夹作为一个共享版本
  cd 目录
  git init --bare    生成的这个仓库是没有.git 这个文件夹的(说明是一个共享版本库),其实也可以查看config 文件,共享版本库的 bare 属性是true,.git 文件内的 config 内的bare 是false.

2.将共享版本库的所有内容下载到本地(初始化项目)
  git clone 共享版本库地址

3.删除忽略文件(在项目开发中 有些文件是不需要的)
  cd 本地目录
  touch .gitignore   生成一个 忽略文件
  .gitignore 中填写的具体内容可以在 github 中搜索 ignore 找到粘贴即可


4.在对应的目录下创建工程即可 合作开发
  git add .
  git commit -m '初次创建工程'
  git push origin master

  • git 冲突的处理
1> git reset --hard HEAD^   回退到上一个版本(指的是本地仓库) eg: 1.0.1
2> git push -f   强制上传到共享版本库(相当于的更新远程仓库)  eg: 1.0.1
3> git pull
版本备份

以下是一个简单的备份示例流程:

1> 1.0 版本开发完毕,将1.0 版本上传到商店,对1.0 版本进行备份(打标签).
   git tag -a  1.0.0 -m '1.0版本上线'    本地打标签
  (也可以简写 git tag '1.0.0' )
   (顺便提下:git tag -d 1.0.0  删除本地标签)

2> 需要将标签 push 到共享版本库
   git push origin 1.0.0      上传本地的1.0.0 标签到 共享版本库(上传单个标签)
  (也可以使用命令:git push --tags  上传所有的本地标签)
  (顺便提下:git push origin :1.0.0  删除远程标签)

3> 开始2.0 版本的开发
   2.0 开始编码 并提交版本到 共享版本库

4> 发现1.0 版本有bug,在  xxx 的电脑下面创建一个文件夹,用于修复bug,将共享版本库clone.
   git clone xxx 地址     当前clone下来的代码是 正在开发的2.0 版本(包含完整的1.0.0 的代码)

5> 将当前的2.0ing 代码转为1.0标签,    创建分支并切换到分支.
   5.1> git checkout  1.0.0               将当前的2.0 的版本切换到1.0.0 分支(2.0 新增的代码将会被自动删除)
   5.2> git checkout -b 1.0.0fixBug     这时就将 1.0.0 切换到了一个新的分支

6> 在分支中修复bug.将修复好的代码打上tag,并上传到共享版本库.
   git add .
   git commit -m  '修复了1.0.0 的bug 的1.0.1 版本'
   git tag -a  '1.0.1' -m  '修复了1.0.0 的bug 的1.0.1 版本'
   git push origin 1.0.1  提交对应的标签到远程仓库

7> 根当前正在开发的2.0 版本进行合并.
   将 1.0.1 的代码 pull 到 2.0 ing 中

8> 删除分支
   git branch   查看当前分支
   git branch -r  查看本地版本库分支
      
   git checkout master   从当前的分支切换到master 分支
   git branch -d  1.0.0fixBug   删除 1.0.0fixBug 本地分支
   git branch -r -d  origin/1.0.0fixBug   删除本地版本库分支
   git push origin --delete  1.0.0fixBug  删除共享库中的1.0.0fixBug 分支

9> 补充:
   git push 403 错误
   原因:本地缓存了用户名和密码
   解决方法:重新设置用户名和方法:
   以远程仓库https://github.com/TangChangTomYang/h264.git 为例
   step 1:   git remote set-url origin https://ayngrui@github.com/TangChangTomYang/h264.git
   step 2: 这时push时就会提示 输入用户名 yangrui 对应的密码即可

 
新人共享版本库
将代码托管到github 上
  • SSHKeys 认证
1> 公钥: 存在github 上 用来解密的
2> 私钥: 存在本地的一个 .ssh 隐藏文件(个人 -> .ssh)里使用来加密的
  • 通过终端查看当前电脑是否存在 sshkeys
ls -al ~/.ssh
  • 通过终端生成SSHkey
1> 打开终端
2> ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
3> 一般来说直接回车 直到出现一个奇怪的图案 就可以了, 在 .ssh 中查看即可

git简单总结(二)版本操作相关 https://www.jianshu.com/p/7ab413165eb3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容