本文记录了我自己使用Git的习惯,并列出了一些优秀的Git教程。
下面这张图实在太漂亮了,我把她放在这个醒目的位置。
安装
Getting Started Installing Git
配置
git的配置分为系统(System)、全局(Global)和本地(Local)三个级别,对应存放在系统不同目录的三个config
文件。可以通过git config --system/global/local
相关命令进行增删查改,也可通过编辑配置文件。通常最常用的是修改Global级别的配置,Linux存放在~/.gitconfig文件中。
常用的配置命令:
下载单一文件
很多时候我们只需要下载代码仓库的单一文件,而不想将下载整个repo,进入文件页面,点击文件的Raw
视图按钮,然后使用wget
下载即可。Windows下在Raw视图界面右击另存为即可。另外,安装Chrome扩展插件Octotree,当鼠标停留到文件位置的时候会显示下载的提示,点击即可下载。
如果想要下载某个文件夹,参照:
Prompt和Completion
Prompt可以修改命令提示符,而Completion用于自动补全。
修改~/.bashrc文件,添加如下内容
Git中的文件可以分为三种状态:Commited,Modified和Staging。Commited为已经安全保存在本地仓库的数据,Modified为有改动但是并没有提交到本地仓库的文件,而Staged是将改动过的文件标记为可以进入下次commit snapshot的状态。
git本地由三个部分组成:工作区(working directory),暂存区(snapshot/stage/index)和本地库(local repo)。.git目录是仓库的灵魂,.git目录里边包括暂存区和本地库,.git目录外的地方是工作区。git中包含四类对象:commit提交对象,tree目录,blob文件,tag标记。
基本的Git工作流为:
- 修改工作区中的文件
- 标记修改过的文件为Stage状态,将它们的Snapshot加入到暂存区
- 提交,将暂存区的文件存储到本地Git仓库
Git Branching
有人称Git的分支模型为它”Killer feature”,因为对于其它VCS,分支意味着一份新的源码拷贝,这是一个昂贵的操作。而Git的分支模型是非常轻量的。
具体参照 https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell
解决冲突
删除远程分支
命令解释
2016-12-07 更新
git reset
往往是个危险的命令,假如使用了git reset --hard
,又没有记下reset
前的commit id
,那么该如何挽救呢?这时reflog
应该能够帮你一把。
2016-12-09 更新
一个项目仓库可能会引用其他项目,被引用的项目通常以独立的仓库存在。Ceph项目包含了多个子项目,可以查看项目根目录下的.gitmodules
文件来获取子项目的url
、子项目在父项目的位置等信息。
命令git submodule status
可以参看各个子项目的状态:
上图中的-
的含义是该子项目未检出到父项目中,+
的含义为对子项目进行了新的提交更改。
如果想要克隆子项目到父项目,首先要执行git submodule init
将子项目注册到.git/config
文件中,然后执行git submodule update
进行代码检出。
Example:
2017-11-28 更新
从一个远程分支check分支:
# 从远程分支 origin/release-1.0.0 切出一个 fix-bug 分支
$ git checkout -b fix-bug origin/release-1.0.0
2020-02-08 更新
Configuring ignored files for all repositories on your computer:
# use the exclude file ~/.gitignore_global for all Git repositories
git config --global core.excludesfile ~/.gitignore_global
# 往 ~/.gitignore_global 中添加需要忽略的文件或目录
echo ".vscode" >> ~/.gitignore_global
git 奇技淫巧
# 显示一个commit更改的文件列表
git show --name-only <commitid>
# 反向显示提交记录
git log --reverse
Reference:
1 Git Basics: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics
2 http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_cn/
3 https://www.atlassian.com/git/tutorials/
4 Comparing Workflows: https://www.atlassian.com/git/tutorials/comparing-workflows
5 A successful Git branching model
6 蒋鑫. Git 权威指南. 机械工业出版社. 2011.
7 蒋鑫. GotGitHub.
8 Useful tricks you might not know about Git stash