Git项目管理
Git简史
这里转载一下Git官网上一本书的描述:
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众广的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统
Git基础
三个工作区域
Git的三个工作区域分别是:工作目录(Working Directory)、暂存区域(Staging Area)、Git仓库(Repository),他们分别对应文件的三种状态已修改(modified)、已暂存(staged)、已提交(committed)。
他们的关系如下图所示:
配置
安装省略
/etc/gitconfig
: 系统全局配置。git config
加--system
时,它会从此文件读写配置变量。~/.gitconfig
、~/.config/git/config
:只针对当前用户。--global
选项让 Git 读写此文件。.git/config
:针对该仓库。
每一个级别覆盖上一级别的配置,所以 .git/config
的配置变量会覆盖 /etc/gitconfig
中的配置变量。
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
$ git config user.name yu
$ git config user.email yu@foxmail.com
基础命令
命令 | 描述 | 可选项 | |
---|---|---|---|
git status | 查看当前状态 | ||
git add files | 将files由工作目录添加到暂存区域 | ||
git diff | 工作目录VS暂存目录 | --staged:暂存目录VSGit仓库 | |
git commit | 提交暂存目录的文件到Git仓库 | -m, -a, --amend | |
git rm | 从暂存区域移除 | --cached | |
git mv | 对文件重命名 | ||
git log | 显示提交历史 | ||
git reset | 取消暂存的文件 | --soft, --hard | |
git checkout | 撤销文件修改 | ||
git fetch | 从远程仓库拉取到本地,不合并 | ||
git pull | 从远程仓库拉取指定分支合并到指定分支 | ||
git push | 从本地分支推送到远程分支 | ||
git tag | 打标签,一般代表一个发布节点 | ||
git config --global alias.st status | 创建别名,git st | ||
git branch | 分支管理 | ||
git merge | 分支合并 |