初始化一个本地仓库

git init

将文件从工作区添加到暂存区

git add <file>

取消暂存 file

git reset HEAD <file>

生成 rsa 格式 ssh 公私钥

ssh-keygen -t rsa -C "youremail@example.com"

生成 rsa 格式 ssh 公私钥并重命名

ssh-keygen -t rsa -C "youremail@example.com" -f ~/.ssh/custom-name

关联本地仓库到远程仓库 url

git remote add origin url

将文件从暂存区取出并保存到仓库

git commit <file>

将文件从本地仓库推送到远程仓库

git push

-u (--set-upstream): 对于每个最新或成功推送的分支,添加上游(跟踪)引用,用于无参数的 git-pull 和其他命令

查看仓库目前状态

git status

显示文件两个版本之间的差异,输出内容与 git log -p 相同

git diff

显示所有 commit 内容

git log

-- oneline : 一个 commit 显示一行内容为 SHA+TITLE
-- stat : 查看哪些文件被修改以及添加/删除了多少行代码
- p(--patch) : 显示对文件作出的实际更改
- w : git log -p -w 将显示补丁信息,但是不会突出显示仅更改了空格的行

将仅显示一个 commit 内容

git show

合并与衍合

git merge <branch>    #合并指定分支到当前分支
git rebase <branch>   #衍合指定分支到当前分支

强制覆盖本地内容

git fetch --all  
git reset --hard origin/master 
git pull origin master

.gitignore 通配规则

.gitignore 文件用来告诉 git 不应跟踪的文件。该文件应该与 .git 目录(默认隐藏)同级。

空白行作为空格

# : 将行标记为注释

* : 与 0 个或多个字符匹配

? : 与 1 个字符匹配

[abc] : 与 a、b 或 c 匹配

** : 与嵌套目录匹配 - a/**/z 与以下项匹配:

a/z
a/b/z
a/b/c/z

其它常见问题

git无法pull仓库refusing to merge unrelated histories
solution: git pull origin master --allow-unrelated-histories

代码体积太大出现fatal: early EOFfatal: index-pack failed等错误
solution: 在*[git installed path]*/etc/gitconfig(没有可手动创建)文件中添加

[core]
packedGitLimit = 512m 
packedGitWindowSize = 512m

参考

命令速查表