Git项目管理

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)。

他们的关系如下图所示:

areas.png

配置

安装省略

  1. /etc/gitconfig: 系统全局配置。git config--system 时,它会从此文件读写配置变量。

  2. ~/.gitconfig~/.config/git/config:只针对当前用户。--global 选项让 Git 读写此文件。

  3. .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 分支合并

图解git命令

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 苦丁是茶,也不是。严格意义上,它属于冬青科,与我们通常的山茶科不同,但我们习惯也叫它为苦丁茶。 苦丁又分大叶冬青苦...
    茶人老七阅读 381评论 0 5
  • 喜欢花,生日好朋友送的,随便找个瓶子插起来,为生活添点色彩
    瓜瓜西南阅读 145评论 0 0
  • 续 性能优化(上) iOS最全性能优化(上)http://www.jianshu.com/p/9c450e512...
    HelloYeah阅读 12,301评论 4 77
  • 消息队列是消息的链接表,存放在内核中并由消息队列标识符标识每条消息由3部分组成:消息类型+消息长度+实际数据每条新...
    longtzw阅读 519评论 0 2