文章篇幅有限, 本文主要总结 1-3 个小点,其他留在其他文章中总结。
一、配置
1. Git配置的3个级别:
1️⃣ config -system: 修改/etc/gitconfig文件,是全局配置,只需要系统admin做一次即可。
2️⃣ config -global:修改 /home/[username]/.gitconfig 文件,配置只对每一个 SSH 的用户可见。
3️⃣ config -e:修改工作区的 .git/config 文件,配置只对当前仓库有效。
覆盖顺序(优先级):当前仓库>SSH用户>全局配置
2. Git配置操作
1️⃣ 修改提交者的信息(username 和 email)
git config --global user.name [username]
git config --global user.email [email]
2️⃣ 修改 Git 的 message 编辑器为 Vim
git config --global core.editor vim
3️⃣ 在 git 命令中开启颜色显示
git config --global color.ui true
4️⃣ 区分文件名大小写
编辑每一个Git项目下的 .git/config 文件,设置 core.ignorecase 为 false
git config --global core.ignorecase false
或者,
git mv oldFileName newFileName
5️⃣ 兼容不同平台的换行符号
-
Windows:
git config --global core.autocrlf true
-
Mac:
git config --global core.autocrlf input
-
可以关闭关于换行符的提示:
git config --global core.safecrlf false
6️⃣ 如果使用 HTTP clone 遇到提交大小限制,可以使用以下命令提高限制值
git config --global http.postBuffer 524288000(bytes)
或者使用下面命令进入编辑页面做相应的修改
git config -e -global
7️⃣ 配置 Git 常用命令的别名 alias
sudo git config --system alias.st status #git st
sudo git config --system alias.ci commit #git ci
sudo git config --system alias.co checkout #git co
sudo git config --system alias.br branch #git br
8️⃣ 进入工作根目录,运行 git config -e,会修改工作区的 .git/config 文件。
需要注意 Git config 文件的覆盖顺序是 312
9️⃣ 显示配置列表
git config --list
🔟 配置密钥
ssh-keygen -t rsa -C superhj1987@126.com # 生成密钥,把公钥复制到 Git 服务器上
ssh -T git@github.com # 测试是否成功
# 使用 ssh-agent 管理密码,避免后续需要身份验证的地方输入密码
ssh-add -K private_key_path # 添加私钥到 ssh-agent 中,使用 -K 参数将密钥加入密钥链中
ssh-add -l # 查看当前计算机中存储的密钥
ssh-add -d public_key_path # 将对应的私钥从 ssh_agent 中删除
二、获取项目的Git仓库
有两种获取 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库; 第二种是从已有的 Git 仓库克隆出一个行的镜像仓库来。
1、在工作目录中初始化新的仓库
使用 Git 管理现有的某个项目,在此项目所在的目录中,执行:
git init # 在当前目录创建一个 Git 代码库
git init [projectName] # 新建一个目录并初始化为 Git 代码库
2、从现有的远程仓库克隆
git clone git://github.com/superhj1987/test.git
这样在会在本地当前目录下创建一个名为 “test” 的目录,其中包含一个 .git的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件副本。
三、将记录每次更新到仓库
1️⃣ 检查当前文件状态
git status
2️⃣ 追踪新文件,暂存已修改文件
git add. # 添加当前目录下的所有文件到暂存区域
git add --a # 添加所有文件和目录到暂存区域
3️⃣ 忽略未纳入版本管理的某些文件/文件夹
一般我们总会有一些文件不需要纳入Git的管理,也不希望他们出现在未追踪的文件列表。(比如一些自动生成的文件,日志、编译过程中创建的临时文件等)。 通过创建一个名为 .gitignore 的文件,在其中列出需要忽略的文件模式(Pattern)(注意window下直接创建该文件是非法命名,可以先创建一个txt文件,然后改名)
文件.gitignore的格式规范如下。
-
所有的空行或者以注释符号 # 开头的行都会被 Git 忽略
-
可以在使用标准的 glob 模式匹配。匹配模式最后的反斜杠(/)说明要忽略的是**目录**;
-
要忽略指定模式以外的文件或目录,可以在模式前加感叹号(!)取反
-
所谓的 glob 模式是指 Shell 所使用的简化了的**正则表达式**。
-
星号(*)匹配零个或多个任意字符
-
[abc] 匹配任何一个在方括号中的字符(这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c)
-
问号(?)匹配一个任意字符
-
如果在方括号中使用短划线(-)或波浪线(~)分割两个字符,则表示在这两个字符范围内的字符都可以匹配。(比如,[0-9]表示匹配0~9的所有数字)
-
此外,忽略未纳入版本管理的文件或文件夹的方式还有:
-
可以为自己配置一个全局的 ignore 文件,位于任何版本库之外:
git config -global core.excludesfile ~/.gitignoreglobal
-
在 `.git/info/exclude` 文件中设置你自己本地需要排除的文件,不会影响到其他人,也不会提交到版本库中。
4️⃣ 忽略已经在版本库里的 文件/文件夹
-
告诉 Git 忽略对已经纳入版本管理的文件 a 的修改,Git会一直忽略此文件直到重新告诉Git可以再次追踪到此文件。
git update-index --assume-unchanged a
-
告诉 Git 恢复追踪 a
git update-index --no-assume-unchanged a
-
查看当前被忽略的已经被纳入版本管理的文件
git ls-files -v | grep -e "^[hsmrck]"
5️⃣ 查看已暂存和未暂存的更新、提交之间的差异
git status 的显示比较简单,仅仅列出了修改过哪些文件,如果想要查看具体修改了什么地方,可以使用 git diff 命令
git diff #查看尚未暂存的文件更新了哪些部分
git diff --cached [file] #查看已经暂存起来的文件和上次提交时的快照之间的差异
git diff [branch1] [branch2] #显示两次提交之间的差异
6️⃣ 提交更新
每次准备提交之前,先使用 git status 查看是否都已经暂存了,然后再执行提交命令 git commit 提交更新。
git commit [file1] [file2] #会提示输入本次提交说明
git commit -m [message] #直接附带提交说明
git commit --amend # 修改最后一次提交
git commit -v #提交时显示所有diff信息
git commit --amend -m [message] #使用新 commit 替代上一次提交,如果代码没有任何变化,则用来修改上一次 commit 的提交信息
git commit --amend [file1] [file2] ... #重做上一次 commit,包括指定文件的新变化
7️⃣ 跳过使用暂存区域
git commit -a # 跳过使用 git add 步骤,直接 commit
8️⃣ 移除文件
第一种情况:
想要从Git中移除某个文件(包括暂存区域和工作目录),就必须要从已经追踪的文件清单中移除(即,从暂存区中移除),然后提交。
可以使用 git rm 来完成此项工作,并连带从工作目录中删除指定的文件,这样文件以后就不会出现在未追踪文件清单中
git rm [file1] [file2]
如果删除以前修改过并且已经放到暂存区域,则必须要使用强制删除选项 -f,以防误删除文件之后丢失修改的内容
第二种情况:
想要把文件从 Git 仓库中删除(即从暂存区移除),但仍然希望保留在当前工作目录中。换句话说,仅仅从追踪清单中删除。比如一些编译文件不小心纳入仓库后,要移除追踪但是不删除文件,一遍稍后在 .gitignore 文件中补上,使用 -cached选项 即可:
git rm -cached [file] #后面可以列出文件或目录名称,
# 也可以使用 glob 模式
git rm log/*.log
9️⃣ 移动文件
要在 Git 中对文件改名,可以使用 git mv 命令
git mv file_from file_to
【解析】 运行 git mv 命令相当于执行了下面 3 条命令
mv README.txt README
git rm README.txt
git add README
🔟 回滚文件
git branch backup #先备份到一个新分支
git log #通过日志找到要回滚的版本号
git reset --hard [版本号] # 回滚操作
本文使用 mdnice 排版