Git下载与安装

Git官网:https://git-scm.com/

Windows:https://git-scm.com/download/win

Linux:https://git-scm.com/download/linux

MacOS:https://git-scm.com/download/mac

Git基本使用

基本使用:https://training.github.com/downloads/zh_CN/github-git-cheat-sheet/

配置工具

对所有本地仓库的用户信息进行配置

1
$ git config --global user.name "[name]"

对你的commit操作设置关联的用户名

1
$ git config --global user.email "[email address]"

对你的commit操作设置关联的邮箱地址

1
$ git config --global color.ui auto

启用有帮助的彩色命令行输出

分支

分支是使用 Git 工作的一个重要部分。你做的任何提交都会发生在当前“checked out”到的分支上。使用 git status 查看那是哪个分支。

1
$ git branch [branch-name]

创建一个新分支

1
$ git switch -c [branch-name]

切换到指定分支并更新工作目录(working directory)

1
$ git merge [branch]

将指定分支的历史合并到当前分支。这通常在拉取请求(PR)中完成,但也是一个重要的 Git 操作。

1
$ git branch -d [branch-name]

删除指定分支

创建仓库

当着手于一个新的仓库时,你只需创建一次。要么在本地创建,然后推送到 GitHub;要么通过 clone 一个现有仓库。

1
$ git init

在使用过 git init 命令后,使用以下命令将本地仓库与一个 GitHub 上的空仓库连接起来:

1
$ git remote add origin [url]

将现有目录转换为一个 Git 仓库

1
$ git clone [url]

Clone(下载)一个已存在于 GitHub 上的仓库,包括所有的文件、分支和提交(commits)

.gitignore 文件

有时一些文件最好不要用 Git 跟踪。这通常在名为 .gitignore 的特殊文件中完成。你可以在 github.com/github/gitignore 找到有用的 .gitignore 文件模板。

同步更改

将你本地仓库与 GitHub.com 上的远端仓库同步

1
$ git fetch

下载远端跟踪分支的所有历史

1
$ git merge

将远端跟踪分支合并到当前本地分支

1
$ git push

将所有本地分支提交上传到 GitHub

1
$ git pull

使用来自 GitHub 的对应远端分支的所有新提交更新你当前的本地工作分支。git pullgit fetchgit merge 的结合

进行更改

浏览并检查项目文件的发展

1
$ git log

列出当前分支的版本历史

1
$ git log --follow [file]

列出文件的版本历史,包括重命名

1
$ git diff [first-branch]...[second-branch]

展示两个分支之间的内容差异

1
$ git show [commit]

输出指定commit的元数据和内容变化

1
$ git add [file]

将文件进行快照处理用于版本控制

1
$ git commit -m "[descriptive message]"

将文件快照永久地记录在版本历史中

重做提交

清除错误和构建用于替换的历史

1
$ git reset [commit]

撤销所有 [commit] 后的的提交,在本地保存更改

1
$ git reset --hard [commit]

放弃所有历史,改回指定提交。

[!WARNING]

小心!更改历史可能带来不良后果。

如果你需要更改 GitHub(远端)已有的提交,请谨慎操作。如果你需要帮助,可访问 github.community 或联系支持(support)。

术语表

  • git: 一个开源的分布式版本控制系统
  • GitHub: 一个托管和协作管理 Git 仓库的平台
  • commit 提交: 一个 Git 对象,是你整个仓库的快照的哈希值
  • branch 分支: 一个轻型可移动的 commit 指针
  • clone: 一个仓库的本地版本,包含所有提交和分支
  • remote 远端: 一个 GitHub 上的公共仓库,所有小组成员通过它来交换修改
  • fork: 一个属于另一用户的 GitHub 上的仓库的副本
  • pull request 拉取请求: 一处用于比较和讨论分支上引入的差异,且具有评审、评论、集成测试等功能的地方
  • HEAD: 代表你当前的工作目录。使用git checkout 可移动 HEAD 指针到不同的分支、标记(tags)或提交

Git教程

Git教程:https://git-scm.com/book/zh/v2

1. 起步

  1. 1.1 关于版本控制
  2. 1.2 Git 简史
  3. 1.3 Git 是什么?
  4. 1.4 命令行
  5. 1.5 安装 Git
  6. 1.6 初次运行 Git 前的配置
  7. 1.7 获取帮助
  8. 1.8 总结

2. Git 基础

  1. 2.1 获取 Git 仓库
  2. 2.2 记录每次更新到仓库
  3. 2.3 查看提交历史
  4. 2.4 撤消操作
  5. 2.5 远程仓库的使用
  6. 2.6 打标签
  7. 2.7 Git 别名
  8. 2.8 总结

3. Git 分支

  1. 3.1 分支简介
  2. 3.2 分支的新建与合并
  3. 3.3 分支管理
  4. 3.4 分支开发工作流
  5. 3.5 远程分支
  6. 3.6 变基
  7. 3.7 总结

4. 服务器上的 Git

  1. 4.1 协议
  2. 4.2 在服务器上搭建 Git
  3. 4.3 生成 SSH 公钥
  4. 4.4 配置服务器
  5. 4.5 Git 守护进程
  6. 4.6 Smart HTTP
  7. 4.7 GitWeb
  8. 4.8 GitLab
  9. 4.9 第三方托管的选择
  10. 4.10 总结

5. 分布式 Git

  1. 5.1 分布式工作流程
  2. 5.2 向一个项目贡献
  3. 5.3 维护项目
  4. 5.4 总结

6. GitHub

  1. 6.1 账户的创建和配置
  2. 6.2 对项目做出贡献
  3. 6.3 维护项目
  4. 6.4 管理组织
  5. 6.5 脚本 GitHub
  6. 6.6 总结

7. Git 工具

  1. 7.1 选择修订版本
  2. 7.2 交互式暂存
  3. 7.3 贮藏与清理
  4. 7.4 签署工作
  5. 7.5 搜索
  6. 7.6 重写历史
  7. 7.7 重置揭密
  8. 7.8 高级合并
  9. 7.9 Rerere
  10. 7.10 使用 Git 调试
  11. 7.11 子模块
  12. 7.12 打包
  13. 7.13 替换
  14. 7.14 凭证存储
  15. 7.15 总结

8. 自定义 Git

  1. 8.1 配置 Git
  2. 8.2 Git 属性
  3. 8.3 Git 钩子
  4. 8.4 使用强制策略的一个例子
  5. 8.5 总结

9. Git 与其他系统

  1. 9.1 作为客户端的 Git
  2. 9.2 迁移到 Git
  3. 9.3 总结

10. Git 内部原理

  1. 10.1 底层命令与上层命令
  2. 10.2 Git 对象
  3. 10.3 Git 引用
  4. 10.4 包文件
  5. 10.5 引用规范
  6. 10.6 传输协议
  7. 10.7 维护与数据恢复
  8. 10.8 环境变量
  9. 10.9 总结

附录

附录 A: 在其它环境中使用 Git

  1. A1.1 图形界面
  2. A1.2 Visual Studio 中的 Git
  3. A1.3 Visual Studio Code 中的 Git
  4. A1.4 Eclipse 中的 Git
  5. A1.5 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
  6. A1.6 Sublime Text 中的 Git
  7. A1.7 Bash 中的 Git
  8. A1.8 Zsh 中的 Git
  9. A1.9 Git 在 PowerShell 中使用 Git
  10. A1.10 总结

附录 B: 在你的应用中嵌入 Git

  1. A2.1 命令行 Git 方式
  2. A2.2 Libgit2
  3. A2.3 JGit
  4. A2.4 go-git
  5. A2.5 Dulwich

附录 C: Git 命令

  1. A3.1 设置与配置
  2. A3.2 获取与创建项目
  3. A3.3 快照基础
  4. A3.4 分支与合并
  5. A3.5 项目分享与更新
  6. A3.6 检查与比较
  7. A3.7 调试
  8. A3.8 补丁
  9. A3.9 邮件
  10. A3.10 外部系统
  11. A3.11 管理
  12. A3.12 底层命令