Git 原理简介 Git 是一种分布式版本控制系统 每个克隆的仓库都包含有整个仓库的所有数据 任何修改先提交在本地, 再推送到服务器 创建和切换分支 合并修改相当方便而且快速 本文档中第一次出现的术语将以蓝色斜体标出 术语的含义是单一的 明确的 不可替代的 1

Similar documents
What is Version Control? What is Git?

nbqw.PDF

<313031A4C9BEC7C160BA5DB3E A457BAF4A4BDA769AAA9292E584C53>

Microsoft Word - FPKLSC_21.docx

内容概要 1 Git 简介 2 基本用法 3 SVN 转 Git 4 协同开发 5 在线浏览 6 相关技巧 7 相关资料 Hello, The Git World 2013 年 6 月 1 日 2 / 35

Ø Ø Microsoft Project Ø Zou Zhige VLSI 2

历 史 上 的 大 家 MASTER 109 鲁 本 斯 抢 夺 萨 宾 妇 女 油 画 cm 现 藏 伦 敦 国 家 画 廊 这 个 关 乎 人 类 终 极 思 考 的 哲 学 命 题, 鲁 本 斯 显 然 早 早 有 了 想 法 鲁 本 斯 选 择 了 从 艺 这 条 道 路, 与

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

版本控制的史前时代 用存储介质拷贝代码 diff & patch 代码相互覆盖, 不知道哪个版本是正确的 搞错了无法恢复, 需要定期手工备份 1991~2002, Linux 内核 能看到文件之间的差异, 知道哪里修改了 更改历史需要手工维护 GNU diff 不支持二进制文件

Git 教程

Subversion - 用户指南

Git教程

Git自下而上方法[译]

1 GitLab 开发版本管理服务器 GitLab, 是一个利用 Ruby on Rails 开发的开源应用程序, 实现一个自托管的 Git 项目仓库, 可通过 Web 界面进行访问公开的或者私人项目 它拥有与 Github 类似的功能, 能够浏览源代码, 管理缺陷和注释 可以管理团队对仓库的访问,

<4D F736F F D20BCDAAC77AEC8B943AA60B74EA8C6B6B55FA7B9BEE3AAA95F2E646F63>

最佳实践

先来一个段子, 来自于王垠, 新鲜热辣 : h&p://

Microsoft Word - mail.gf.com.cn

_Drupal多人協作.key

使用JF代码库进行项目代码管理

Microsoft Word - 青年祈周2012.doc

一 人 民 醫 院 的 針 灸 專 家 門 下 做 學 徒 井 燕 老 師 來 做 減 肥, 於 是 我 們 就 相 識 了 陸 華 : 從 剪 裁 然 後 到 針 灸 然 後 再 轉 到 NU SKIN 這 個 平 台, 是 什 麼 讓 你 放 棄 前 面 兩 個 而 最 終 做 NU SKIN

Docker 开源社区初探 希云 csphere 希云 csphere 企业级私有容器云平台

書 籍 導 讀 遊 戲 活 動 第 五 項 修 練 啤 酒 遊 戲 經 歷 過 一 系 列 的 電 影 欣 賞 後, 透 過 書 中 對 常 見 9 個 系 統 基 模 做 討 論 以 期 在 未 來 工 作 上 遇 到 問 題 時, 可 以 透 過 團 隊 的 系 統 思 考, 找 出 根 本 解

如 何 判 斷 過 去 地 形 的 變 化 7 0 a b c g e f c d a b e d c b a b

OO

WTO WTO WTO

Microsoft Word 放网上

手持夜视摄录仪




用户指南

Pro Git

目 錄 簡 介 器 官 捐 贈 為 何 如 此 重 要? 我 們 所 面 對 的 事 實 腎 臟 移 植 成 功 率 很 高 甚 麼 是 活 體 腎 臟 移 植? 誰 人 可 捐 贈 腎 臟? 活 體 腎 臟 移 植 的 好 處 如 何 成 為 活 體 器 官 捐 贈 者? 捐 贈 活 體 器 官

校园之星

谦卑地走进自然

股票代码:430011

图书馆主馆之旅

1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT

Pro Git

Pro Git

Pro Git

0書名頁


PowerPoint 演示文稿

SVN 客户端用户使用手册 该文档将逐步教您如何在软件开发过程中使用 svn 客户端环境模拟现有项目名称 :test 服务端版本库 :test URL: 开发人员 :deva,devb 版本库目录结构 : test Doc(word 文档 ) So

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

用户指南

untitled

Microsoft PowerPoint - 022建構管理EGIT2017_66.pptx

首都师范大学2007年招收

前言

效率云软件开发流程指南 本文将介绍使用百度效率云进行软件开发的基本流程, 包括产品规划 需求生成 迭代排期 代码开发 测试以及发布等环节 用户可以选取适合的环节进行参考, 对于百度效率云的 具体操作手册, 请访问帮助中心的其他文档 一产品规划 角色 : 产品经理 业务方 项目经理 时间 : 产品开发

精通 Git

Openmoko

1 通 过 利 君 国 际 的 联 动 效 应 来 带 动 非 输 液 产 业 : 公 司 控 股 的 利 君 国 际 的 抗 生 素 业 务 主 要 以 红 霉 素 产 品 为 主, 其 主 要 原 料 为 硫 氰 酸 红 霉 素, 我 们 预 计 目 前 西 安 利 君 制 药 的 硫 氰 酸

Git 魔法

二 範 例 與 問 題 討 論 中 國 傳 統 神 話 中, 用 了 好 幾 個 故 事, 拼 湊 出 天 地 創 生 的 面 貌 盤 古, 一 個 似 乎 是 卵 生 的 人 物, 漫 漫 長 覺 醒 來 手 一 劈 腳 一 你 們 看 蹬, 就 分 開 了 混 沌 據 說 他 死 後 左 眼 化

4.2 ================================================================================= WFMC Task Task 4 5

員工規則

Microsoft Word Improve the Intergovernmental Transfer from Central to Local Government in China -Zhihua Zhang- in Chines




Pro Git

经 无 数 次 的 提 取 和 提 纯, 最 终 得 到 一 小 匙 东 西 这 种 东 西 在 显 微 镜 下 呈 现 出 针 状 晶 体 的 形 状, 在 水 中 溶 解 后 得 到 一 种 带 乳 光 的 汁 液 当 他 将 少 许 溶 液 涂 抹 健 康 烟 叶 上 几 天 后, 这 烟 叶

2

Pro Git 中文版

Git Community Book 中文版 The open Git resource pulled together by the whole community 社区精华尽入囊中

最佳实践

<4D F736F F D BCB6C8CBB2C5C5E0D1F8B7BDB0B82D3031BBFAB5E7D2BBCCE5BBAFBCBCCAF52E646F63>

ebook 96-16

PowerPoint 演示文稿

untitled

Microsoft PowerPoint - Big Data rc Sharing掃盲時間.ppt [相容模式]

介绍 + Nick + 宋国徽 + + 研究方向 + 应用安全 + 逆向工程 + 漏洞挖掘 + 渗透测试 + 情报分析 + 产业研究 + 主要经历 年至今, 上海八六三信息安全产业基地 年至今,OWASP 中国区, 上海地区负责人 +

Version Control with Subversion

自由軟體教學平台

水晶分析师

台灣科學工業園區科學工業同業公會

自由軟體教學平台

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

鍐滆



管道建模基础.ppt

自由軟體教學平台

艺 文 圆 桌 MASTER 老 一 代 传 承 人 王 祖 德 正 教 授 年 轻 的 80 后 画 匠 学 习 桃 花 坞 年 画 工 艺 2 新 一 代 年 画 传 承 人 乔 兰 蓉 3 新 一 代 年 画 传 承 人 乔 兰 蓉 3

CCAI 2015 中国人工智能大会 活动总结

第二場

计算机网络实验说明

A9RF716.tmp

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

07_機械設備與安全 [相容模式]

PowerPoint 演示文稿

中外合作办学国(境)外学历学位认证系统

Oi Hip indd

Transcription:

Git 原理简介 Git 是一种分布式版本控制系统 每个克隆的仓库都包含有整个仓库的所有数据 任何修改先提交在本地, 再推送到服务器 创建和切换分支 合并修改相当方便而且快速 本文档中第一次出现的术语将以蓝色斜体标出 术语的含义是单一的 明确的 不可替代的 1

Git 仓库结构举例 git@my.server:bob/my.git master A B C 2

Git 仓库结构 相对本地已克隆的仓库而言, 公共的 Git 仓库称为 remote 可以用专门的服务器软件管理 也可以直接存放在本机目录中, 这样的仓库称为 bare repository SVN 必须使用专门的服务器软件管理 每一个仓库是一系列 commit 的集合 每一个 commit 都有一个 SHA-1 作为唯一标识符 类似 SVN 的 revision 记录了作者, 提交时间, 提交日志, 所有变更数据等 每一个 commit 都记录了 parent commit 允许非单线提交历史 3

Git 仓库结构 Git 仓库中也有 branch, tag 等等 branch 实际是指向一个 branch 中最后的 commit tag 指向某一个 commit 选取某一个 commit 的语法称为 ref 可以用 SHA-1 指定单个 commit 也可以用 branch 或 tag 4

git clone git@my.server:bob/my.git git@my.server:bob/my.git master A B C master A B C master A B C HEAD C 5

本地 Git 仓库结构 远程分支 ( remote branch ) ref: origin/master 是 remote 中同名分支的镜像 push 或 fetch 时会自动更新 本地分支 ( local branch ) ref: master 只在本地存在, 可自由创建或删除 可以有一个 upstream branch, 表示是该分支将要与谁同步 6

HEAD HEAD 是一个表示工作区内容基点的 ref 如果 HEAD 指向某个 local branch, 进行 commit 或 reset 操作会令该分支指向新的 commit 这种情况下我们说 HEAD 指向的分支为 当前分支 否则, 进行 commit 或 reset 操作不影响本地分支 这种状态称为 detached HEAD 7

进行修改并提交 git@my.server:bob/my.git master A B C master A B C master A B C HEAD C 8

git commit git@my.server:bob/my.git master A B C master A B C master A B C m n HEAD n 9

git push git@my.server:bob/my.git master A B C m n master A B C m n master A B C m n HEAD n 10

如果远程仓库被其他人更新了 git@my.server:bob/my.git master A B C H I master A B C master A B C m n HEAD n 11

git fetch git@my.server:bob/my.git master A B C H I master A B C H I master A B C m n HEAD n 12

git merge origin/master git@my.server:bob/my.git master A B C H I master A B C H I master A B C m n r H I HEAD r 13

git push git@my.server:bob/my.git master A B C H I r m n master A B C H I r m n master A B C m n r H I HEAD r 14

Git 非单线提交历史 Git 允许多个不同分支合并成为同一条 优点 不同分支中的所有 commit 的校验和不变 数字签名也不变 各自的提交历史被全部保留 不会发生 重写历史 的行为 缺点 版本回退困难, 难以追踪问题 15

Git 非单线提交历史 16

如何保持单线提交历史 git@my.server:bob/my.git master A B C H I master A B C H I master A B C m n HEAD n 17

git rebase origin/master git@my.server:bob/my.git master A B C H I master A B C H I master A B C H I m' n' HEAD n' 18

git push git@my.server:bob/my.git master A B C H I m' n' master A B C H I m' n' master A B C H I m' n' HEAD n' 19

撤销本地 commit git@my.server:bob/my.git master A B C master A B C master A B C m n HEAD n 20

git reset HEAD~1 git@my.server:bob/my.git master A B C master A B C master A B C m HEAD m 21

混乱的 git checkout git checkout dev1 令 HEAD 指向 dev1, 即切换到 dev1 分支 指定 - 可以切换回上次切换以前的分支 git checkout -b dev1 基于当前 HEAD 创建新的本地分支 dev1 git checkout -- dev1 从 HEAD 中提取文件 dev1 覆盖工作区中的对应文件 22

基于远程分支创建本地分支 git@my.server:bob/my.git master A B C master A B C master A B C m n HEAD n 23

git checkout dev-1 git@my.server:bob/my.git master A B C master A B C master A B C m n HEAD E 24

基于 HEAD 创建本地分支 git@my.server:bob/my.git master A B C master A B C master A B C m n HEAD n 25

git checkout -b dev-2 git@my.server:bob/my.git master A B C master A B C master A B C m n dev-2 m n HEAD n 26

git push origin dev-2 git@my.server:bob/my.git master A B C dev-1 D E dev-2 m n master A B C dev-1 D E dev-2 m n master A B C m n dev-2 m n HEAD n 27

git push origin dev-2:master git@my.server:bob/my.git master A B C m n dev-1 D E dev-2 m n master A B C m n dev-1 D E dev-2 m n master A B C m n dev-2 m n HEAD n 28

删除分支 删除本地分支 git branch -d dev-2 删除远程分支 本质是推送一个空分支到远程仓库 git push origin :dev-2 更新本地仓库, 并删除远程仓库中不再存在的分支 git fetch --prune origin 29

git checkout master git@my.server:bob/my.git master A B C m n dev-1 D E dev-2 m n master A B C m n dev-1 D E dev-2 m n master A B C m n dev-2 m n HEAD n 30

git branch -d dev-2 git@my.server:bob/my.git master A B C m n dev-1 D E dev-2 m n master A B C m n dev-1 D E dev-2 m n master A B C m n HEAD n 31

git push origin :dev-2 git@my.server:bob/my.git master A B C m n master A B C m n master A B C m n HEAD n 32

提取其它分支中的 commit git@my.server:bob/my.git master A B C m n master A B C m n master A B C m n HEAD n 33

git cherry-pick D E git@my.server:bob/my.git master A B C m n master A B C m n master A B C m n D' E' HEAD E' 34

git push git@my.server:bob/my.git master A B C m n D' E' master A B C m n D' E' master A B C m n D' E' HEAD E' 35