安装 Git
git-scm.com/downloads 安装成功后可在终端查看版本。
$ git -v
git version 2.45.2.windows.1
配置Git 的config
git的config分为三个层级,系统级,用户级,仓库级。对应的配置文件分别在C:\Program Files\Git\etc\gitconfig 和 C:\Users$USER 和 .git\config
初次运行需要设置用户名称与邮件地址。 每一个 Git 的提交都会使用这些信息,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
查看配置config配置,如果你在不同的层级中设置了相同的配置项,会看到重复的变量名
git config --list
git config --global user.name
git config user.name
获取git的指令使用说明
可以使用 git help [COMMAND], 会在本地生成一个操作手册,并用浏览器打开,如:
git help config
如何初始化 Git 仓库
1.在现有项目
$ git init
该命令将创建一个名为 .git 的子目录,但项目里的文件还没有被跟踪。
可通过 git add 命令来实现对指定文件的跟踪,然后执行 git commit 提交:
$ git add .
$ git commit -m 'initial'
2.从服务器克隆一个现有的 Git 仓库。
git clone [url]
$ git clone https://github.com/libgit2/libgit2
如果想自定义本地仓库的名字,在后面再添加一个本地仓库名称
$ git clone https://github.com/libgit2/libgit2 mylibgit
Git 支持多种数据传输协议。 上面的例子使用的是 https:// 协议,不过你也可以使用 git:// 协议或者使用 SSH 传输协议。
生成ssh
创建密钥和查看密钥
$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub
.gitignore 文件
告诉 Git 哪些文件或目录应该被忽略,这个规则只适用于那些尚未被 Git 跟踪的文件。如果已经被git追踪的文件想要再加入gitignore 配置去忽略,需要先用git rm --cached去把文件从git中移除追踪。
.gitignore 文件的规则是相对于它所在的位置的。只适用于该目录及其子目录中的文件。它不会影响父目录或其他兄弟目录中的文件。
# 忽略.a后缀文件,b.a.c文件名不会被忽略
*.a
# 取消忽略lib.a,但需要配置在*.a后面,否则还是会被忽略
!lib.a
# 只忽略当前目录下的 TODO 文件,而不影响子目录中的同名文件
/TODO
# 忽略build目录下所有文件,其他目录下名为build文件不忽略。
build/
#忽略所有名字为 logs 的文件和目录
logs
# 忽略 doc/notes.txt, 但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略所有doc/目录下.pdf文件
doc/**/*.pdf
查看文件的的状态
文件只有两种状态已跟踪或未跟踪。
已跟踪的文件状态可能处于未修改,已修改或已放入暂存区。
可以用 git status 命令查看。
git add
可以用git add开始跟踪新文件,或者把已修改的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态
git add . 可以快速把所有新文件或已修改文件放到暂存区
取消暂存的文件
取消本次用git add加入暂存区的文件
git reset HEAD <file>
这个命令输入git status会有提示
$ git add .
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
modified: CONTRIBUTING.md
撤消对文件的修改
放弃自上次提交以来对该文件所做的所有更改。
git checkout -- <file>
$ git checkout -- CONTRIBUTING.md
提交更新
git commit 会启动文本编辑器以便输入本次提交的说明,也可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行
git commit -m "Story 182: Fix benchmarks for speed"
跳过使用暂存区域
给 git commit 加上 -a 选项
git commit -a -m 'added new benchmarks'
查看文件差异
git diff
比较的是工作目录中当前文件和暂存区域快照之间的差异,即是已经修改还未git add 的文件
git diff --cached 或 git diff --staged
显示暂存区与上一次提交之间的差异。即已经git add 的文件和仓库文件的差异
git diff HEAD
显示工作目录与上一次提交之间的差异。即所有修改(无论是否已暂存)的文件和仓库文件的差异
git diff
查看两个提交之间的差异,如果不指定 ,则默认与当前工作目录的最新提交进行比较。
查看提交历史
git log
不用任何参数的话,git log 会按提交时间列出所有的更新,可以使用上下箭头翻动查看。
git log有很多的参数,可以限制条数,限制时间, 调整输出格式等。
比如选项-p,显示每次提交的内容差异。 加上 -2 来仅显示最近两次提交:
git log -p -2
可以通过 --pretty定制想要看到的格式
git log --pretty
查看自两周前以来的提交历史
git log --since=2.weeks