Git
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 pull
是 git fetch
和 git 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. 起步
2. Git 基础
3. Git 分支
4. 服务器上的 Git
- 4.1 协议
- 4.2 在服务器上搭建 Git
- 4.3 生成 SSH 公钥
- 4.4 配置服务器
- 4.5 Git 守护进程
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管的选择
- 4.10 总结
5. 分布式 Git
6. GitHub
7. Git 工具
- 7.1 选择修订版本
- 7.2 交互式暂存
- 7.3 贮藏与清理
- 7.4 签署工作
- 7.5 搜索
- 7.6 重写历史
- 7.7 重置揭密
- 7.8 高级合并
- 7.9 Rerere
- 7.10 使用 Git 调试
- 7.11 子模块
- 7.12 打包
- 7.13 替换
- 7.14 凭证存储
- 7.15 总结
8. 自定义 Git
- 8.1 配置 Git
- 8.2 Git 属性
- 8.3 Git 钩子
- 8.4 使用强制策略的一个例子
- 8.5 总结
9. Git 与其他系统
- 9.1 作为客户端的 Git
- 9.2 迁移到 Git
- 9.3 总结
10. Git 内部原理
附录
附录 A: 在其它环境中使用 Git
- A1.1 图形界面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 Eclipse 中的 Git
- A1.5 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.6 Sublime Text 中的 Git
- A1.7 Bash 中的 Git
- A1.8 Zsh 中的 Git
- A1.9 Git 在 PowerShell 中使用 Git
- A1.10 总结
附录 B: 在你的应用中嵌入 Git
- A2.1 命令行 Git 方式
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich