### ProGit中文手册知识点概述 #### 一、版本控制概览 **1.1 关于版本控制** - **本地版本控制系统**: 这种系统只在用户的计算机上追踪更改,适用于单机项目。早期的版本控制系统如`RCS`就属于此类。 - **集中化的版本控制系统**: 这类系统拥有一个单一的集中管理服务器,该服务器保存所有文件的修订版,而协同工作的用户通过客户端连至这台服务器,取出最新的文件或者提交更新。如`CVS`、`Subversion`等。 - **分布式版本控制系统**: 每个用户的工作区都会完整地拷贝所有版本的文件和完整的项目历史记录。这种模式使得开发者可以完全独立工作,同时也支持多人协作。Git、Mercurial、Bazaar 和 Darcs 都是此类系统。 **1.2 Git简史** - Git 是由 Linus Torvalds 在 2005 年为 Linux 内核开发设计的,初衷是为了更好地管理 Linux 内核的开发。随着其功能和性能的优势逐渐显现,Git 成为了全球范围内最受欢迎的版本控制系统之一。 **1.3 Git基础** - **直接记录快照,而非差异比较**: Git 记录的是文件快照而不是每次变化的差异,这有助于提高数据的检索速度和准确性。 - **近乎所有操作都是本地执行**: Git 的大部分操作都在本地执行,无需连接到网络或中心服务器,极大提高了效率。 - **时刻保持数据完整性**: Git 使用 SHA-1 散列算法来确保每一次提交的数据都具有唯一性,从而避免数据损坏。 - **多数操作仅添加数据**: Git 的设计哲学倾向于只追加数据,而不是改写或删除。这样可以有效地保护历史数据,减少数据丢失的风险。 - **文件的三种状态**: 工作目录中的每个文件都处于三种状态之一:已提交(committed)、已修改(modified)或已暂存(staged)。这三种状态反映了文件的当前版本相对于最近一次提交的状态。 #### 二、Git安装与配置 **1.4 安装Git** - **从源代码安装**: 对于喜欢自定义编译选项的用户来说,这是一个可行的选择,但过程较为复杂。 - **在Linux上安装**: 大部分Linux发行版都有预编译好的包可供安装。 - **在Mac上安装**: Mac 用户可以通过 Xcode 命令行工具或第三方软件进行安装。 - **在Windows上安装**: Windows 用户可以下载并安装官方提供的安装程序。 **1.5 初次运行Git前的配置** - **用户信息**: 设置全局的用户名和电子邮件地址。 - **文本编辑器**: 配置默认的文本编辑器用于编辑提交消息。 - **差异分析工具**: 可以配置专门的工具来查看差异。 - **查看配置信息**: 使用 `git config --list` 命令可以查看当前的所有配置信息。 **1.6 获取帮助** - 使用 `git help <command>` 或者 `man git-<command>` 可以获得具体的命令帮助文档。 #### 三、Git基本操作 **2.1 取得项目的Git仓库** - **在工作目录中初始化新仓库**: 使用 `git init` 命令。 - **从现有仓库克隆**: 使用 `git clone <repository-url>` 命令。 **2.2 记录每次更新到仓库** - **检查当前文件状态**: 使用 `git status` 查看文件状态。 - **跟踪新文件**: 使用 `git add <file>` 跟踪新文件。 - **暂存已修改文件**: 同样使用 `git add <file>` 来暂存修改。 - **忽略某些文件**: 通过 `.gitignore` 文件指定不需版本控制的文件。 - **查看已暂存和未暂存的更新**: 使用 `git status`。 - **提交更新**: 使用 `git commit -m "commit message"` 提交更改。 - **跳过使用暂存区域**: 直接提交未暂存的修改。 - **移除文件**: 使用 `git rm <file>` 移除文件。 - **移动文件**: 使用 `git mv <oldname> <newname>` 来移动文件。 **2.3 查看提交历史** - **限制输出长度**: 使用 `git log --pretty=oneline` 显示简洁的历史记录。 - **使用图形化工具查阅提交历史**: Git 提供了多种图形化界面工具,如 Gitk、TortoiseGit 等。 **2.4 撤销操作** - **修改最后一次提交**: 使用 `git commit --amend` 修改最后一次提交的信息。 - **取消已经暂存的文件**: 使用 `git reset HEAD <file>`。 - **取消对文件的修改**: 使用 `git checkout -- <file>` 可以丢弃工作目录中文件的改动。 **2.5 远程仓库的使用** - **查看当前的远程库**: 使用 `git remote -v`。 - **添加远程仓库**: 使用 `git remote add <shortname> <url>`。 - **从远程仓库抓取数据**: 使用 `git fetch` 下载远程仓库的变化。 - **推送数据到远程仓库**: 使用 `git push` 将本地更改推送到远程仓库。 - **查看远程仓库信息**: 使用 `git remote show <remote-name>`。 - **远程仓库的删除和重命名**: 使用 `git remote remove <name>` 和 `git remote rename <oldname> <newname>`。 **2.6 打标签** - **列显已有的标签**: 使用 `git tag`。 - **新建标签**: 使用 `git tag <tagname>` 创建标签。 - **含附注的标签**: 使用 `git tag -a <tagname> -m "message"` 创建带有注释的标签。 - **签署标签**: 使用 `git tag -s <tagname> -m "message"` 创建带签名的标签。 - **轻量级标签**: 轻量级标签相当于一个简单的指针,指向某一个特定的提交。 - **验证标签**: 使用 `git verify-tag <tagname>` 验证标签。 - **后期加注标签**: 使用 `git tag <tagname> <commit>` 给之前的提交打标签。 - **分享标签**: 使用 `git push origin <tagname>` 分享标签到远程仓库。 **2.7 技巧和窍门** - **自动完成**: 通过配置 `.bashrc` 文件启用 Git 的自动补全功能。 - **Git命令别名**: 使用 `git config --global alias.<alias> 'command'` 来创建命令别名。 #### 四、Git分支管理 **3.1 何谓分支** - Git 中的分支实际上只是一个指向提交对象的可变指针。通过创建分支,可以在不影响主干的情况下进行实验性的开发。 **3.2 分支的新建与合并** - **分支的新建与切换**: 使用 `git branch <branchname>` 创建新分支,并使用 `git checkout <branchname>` 切换到该分支。 - **分支的合并**: 使用 `git merge <branchname>` 合并分支到当前分支。 - **遇到冲突时的分支合并**: 当两个分支中有相同的文件被修改时,可能会出现冲突,需要手动解决冲突后重新提交。 **3.3 分支的管理** - 使用 `git branch -d <branchname>` 删除分支。 **3.4 利用分支进行开发的工作流程** - **长期分支**: 用于长期维护的功能或修复。 - **特性分支**: 用于短期开发新特性的分支。 **3.5 远程分支** - **推送本地分支**: 使用 `git push origin <local-branch>:<remote-branch>`。 - **跟踪远程分支**: 使用 `git branch --set-upstream-to=<remote>/<branch>`。 - **删除远程分支**: 使用 `git push origin --delete <branchname>`。 **3.6 分支的衍合** - **基本的衍合操作**: 使用 `git merge --strategy=recursive`。 - **有趣的衍合**: 如使用 `git mergetool` 来辅助解决冲突。 - **衍合的风险**: 衍合可能导致不必要的复杂度和混乱。 #### 五、服务器上的Git **4.1 协议** - **本地协议**: 适用于本地文件系统的交互。 - **SSH协议**: 通过 SSH 协议进行远程仓库的操作,安全且高效。 - **Git协议**: 专为 Git 设计的协议,用于快速传输数据。 - **HTTP/S协议**: 适合公网环境下的仓库交互。 **4.2 在服务器上部署Git** - **把裸仓库移到服务器上**: 通过 `git clone --bare <repository>` 命令。 - **小型安装**: 在服务器上安装必要的软件和服务。 - **SSH连接**: 配置 SSH 密钥以便无密码登录。 **4.3 生成SSH公钥** - 使用 `ssh-keygen -t rsa -C "your_email@example.com"` 生成 SSH 密钥对。 **4.4 架设服务器** - 配置服务器防火墙、用户权限等设置。 **4.5 公共访问** - 设置允许外部用户访问的权限。 **4.6 GitWeb** - GitWeb 是一个用 Perl 编写的简单 Web 界面,可以用来浏览 Git 仓库。 **4.7 Gitosis** - Gitosis 是一个用于管理 Git 仓库的工具,提供了一个简单的方法来添加、删除和管理仓库以及用户的权限。 **4.8 Gitolite** - Gitolite 是一个更高级的工具,提供了更多的功能,如支持子模块、分支和标签的访问控制等。
剩余246页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip