文章目录
  1. 1. 资料
    1. 1.1. Git 的特性
    2. 1.2. Pro Git Book
    3. 1.3. tryGit
  2. 2. 笔记
    1. 2.1. 操作
      1. 2.1.1. clone
      2. 2.1.2. fork
      3. 2.1.3. watch
      4. 2.1.4. branch
      5. 2.1.5. pull request
    2. 2.2. Git Script
    3. 2.3. Git 的配置
  3. 3. 参考

GitHub 的核心是一个开源的版本控制系统,即 Git,Git 负责你本地电脑和 GitHub 之间的所有相关事情。Git 允许多人同时操作一份代码,且不用担心相互覆盖,它是一个分布式的版本控制系统,每一个 Git commit 都是用邮件地址来标识一个用户。

资料

Git 的主页 https://git-scm.com/ 里包含了丰富的内容。如下

Git 的特性

  1. Branching and Merging
  2. Small and Fast
  3. Distributed
  4. Data Assurance
  5. Staging Area
  6. Free and Open Source

Pro Git Book

  1. Reference Manual:各种命令
  2. Book:Pro Git,由浅入深非常系统。有英文、中文等多种版本。

tryGit

tryGit 是一个实战 Git 相关命令的在线工具,你可以在浏览器上输入命令,就能看到相应的执行结果。特别方便,也很直观。博主友情提示:在在线输入代码的时候,可以留意下右下方的“Advice”。它里面有本步骤相关的名字解释、原因介绍、原理说明,对入门的人来讲,真的很实用。诸如:

笔记

以下整理的信息,均来自于 tryGit 和 Pro Git Book。

操作

clone

有两种方式可供选择:

  1. HTTPS(prefer to use it)
    用 HTTPS 克隆,优点是方便。它是用 GitHub 的用户名和密码进行认证的。所以,每次提交的时候,都会提示你输入用户名和密码(当然也有相应的工具帮助缓存 GitHub 的账户信息,比如 credential helper )
  2. SSH
    它不需要输入用户名和密码,它是用 SSH key 认证的。值得一提的是,SSH key 和机器相关,等你换了一台机器的时候,就得重新生成并添加 SSH key。

fork

fork 是指把远程的仓库拷贝一份到你的账户下,你可以随便修改 fork 的仓库,而不影响原始的项目。一般情况下,forks 用在以下两种情况:

  1. 提交你的修改到别人的项目里
  2. 把别人的项目作为自己想法的一个起点

watch

watch 一个仓库,你就可以看到关于本项目的最新的动态,诸如谁提交了什么、更新了什么等等。stay up-to-date with a specific project。

branch

branch 分支,它允许你在一个独立的通道上修改代码,而不会影响到 master,以降低风险。branch 的适用场景,两个:

  1. 当你想要同时开发多个特性,但,每个特性都开发了一半,而你又不想结束 master 分支时
  2. 或者,你想把代码分成两个独立的 branch,让彼此的开发和提交相互独立、互不影响

pull request

pull request 可以说是多人协作编码的核心。你提交一个 pull request,然后由作者从你的 fork 里合并到原 repo。

如果你是在 GitHub 上操作,你可以新建一个 pull request。它允许项目的大 boss 先看看你修改的,然后再决定是否要 merge,而且可以在 merge 之前给你点评论。它真的是一个很好的功能,经常被开源项目的开发者们使用。

Git Script

bash 是一个脚本语言,a scripting language called Bash。你可以使用 Bash scripts,在mac上的一个叫做 Terminal 的应用程序里。下面列出一些常用的命令,更多信息查看参考[2,3]。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# introduce yourself to Git (name and email)
$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com
# 查看
git config --global user.email
git config --global user.name
echo $GIT_COMMITTER_EMAIL
echo $GIT_AUTHOR_NAME
git --version
git --help
git help commandname # 查看某个命令的帮助
1
2
3
4
5
6
7
8
9
10
$ git init
# a new directory created, named ".git"
# The repo is a hidden directory where Git operates
git clone https://github.com/anjia/anjia.github.io.git
git remote -v # find the URL of the local repo
$ git add file1 file2 file3
$ git add . # 本directory下,递归
# add files are in Staging Area, not in our repo yet
1
2
3
4
5
6
7
8
9
$ git commit # You've now stored the first version of your project in Git.
# commit 一次,相当于在本地.git里拍了一个快照
$ git commit -a
$ git commit -m 'Add cute octocat story' # -m msg
# which will automatically notice any modified (but not new) files,
# add them to the index, and commit, all in one step.
# 所以,带-a commit之前,就只需要执行 git add 即可
# running 'git add' beforehand
1
2
3
4
5
6
7
8
9
10
11
12
$ git diff --cached # what is about to be committed
$ git diff # show your any changes that you've made but not yet added to the index
$ git status # a brief summary, the same as 'git diff'
$ git log # commit,也就是快照的日志
$ git log -p
$ git log --stat --summary
# 和分支相关的命令和操作
$ git branch experimental //To create a new branch named "experimental"
$ git branch //a list of all existing branches
# https://github.com/git/git/blob/master/Documentation/gittutorial.txt
1
2
3
4
git push -u origin master
# -u tells Git to remember the params 下次我们可以直接run: git push
# origin: 我们的remote
# master: 默认的本地branch
1
2
3
4
5
6
7
8
9
10
11
$ git branch # list local branches
$ git branch new_branch # add new
$ git checkout new_branch # switch branch
$ git checkout -b new_branch # 有的话就切换,若无-新建后再切换
# 和下面两行等价
$ git branch new_branch
$ git checkout new_branch
## 关于 Merge conflicts,可查看文档
## 钩子 $GIT_DIR/hooks/pre-commit
1
2
3
4
git rm --cached <file>
# u can use the recursive option -r on git rm
git rm -r folder_of_cats

Git 的配置

Git 使用一系列配置文件来保存你的自定义行为,它有三层配置,分别是系统、全局、本地。

  1. 首先,它会查找 /etc/gitconfig 文件,那里含有系统里每位用户及他们所拥有的仓库的配置值。 如果你传递 —system 选项给 git config,它就会读写该文件。【系统】
  2. 接着,git 的配置文件 ~/.gitconfig 文件(或者 ~/.config/git/config 文件)。 用 —global 选项让 Git 读写该文件。【全局】
  3. 最后,Git 会查找你正在操作的版本库对应的 Git 目录下的配置文件,此文件只对该版本库有效。【本地】

三层配置的优先级,是:系统 < 全局 < 本地

参考

Git 主页:https://git-scm.com/
Pro Git Book:https://git-scm.com/book/en/v2
tryGit:https://try.github.io/levels/1/challenges/1

文章目录
  1. 1. 资料
    1. 1.1. Git 的特性
    2. 1.2. Pro Git Book
    3. 1.3. tryGit
  2. 2. 笔记
    1. 2.1. 操作
      1. 2.1.1. clone
      2. 2.1.2. fork
      3. 2.1.3. watch
      4. 2.1.4. branch
      5. 2.1.5. pull request
    2. 2.2. Git Script
    3. 2.3. Git 的配置
  3. 3. 参考