git使用总结
git配置
- /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上
--system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或
超级用户权限来修改它。) - ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 你可以传递 --global 选项让 Git
读写此文件,这会对你系统上 所有 的仓库生效。 - 当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。 你可以传递 --local 选
项让 Git 强制读写此文件,虽然默认情况下用的就是它。。 (当然,你需要进入某个 Git 仓库中才能让该选
项生效。)
查看所有配置
git config --list --show-origin
git config --list
用户信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
配置文本编辑器
git config --global core.editor emacs
常规操作
- 初始化仓库
git init - 克隆仓库
git clone https://github.com/libgit2/libgit2
git clone https://github.com/libgit2/libgit2 mylibgit - 查看状态
git status
git status -s - 忽略文件
# https://github.com/github/gitignore
文件 .gitignore 的格式规范如下:
• 所有空行或者以 # 开头的行都会被 Git 忽略。
• 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
• 匹配模式可以以(/)开头防止递归。
• 匹配模式可以以(/)结尾指定目录。
• 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
5.已暂存文件与最后一次提交的文件差异
git diff --staged
git diff --cached 查看已经暂存起来的变化
6.提交信息
git commit -m "Story 182: Fix benchmarks for speed"
7. 跳过改动文件提交
git commit -a -m 'added new benchmarks'
8.移除文件
git rm --cached README
git rm log/\*.log
git rm \*~
9.移动文件
git mv file_from file_to
#相当于
$ mv README.md README
$ git rm README.md
$ git add README
10.查看历史
git log -p -2
git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"
%H 提交的完整哈希值
%h 提交的简写哈希值
%T 树的完整哈希值
%t 树的简写哈希值
%P 父提交的完整哈希值
%p 父提交的简写哈希值
%an 作者名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date=选项 来定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期(距今多长时间)
%s 提交说明
# 显示树形图
git log --pretty=format:"%h %s" --graph
-p 按补丁格式显示每个提交引入的差异。
--stat 显示每次提交的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。
--relative-date 使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。
--graph 在日志旁以 ASCII 图形显示分支与合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline、short、full、fuller 和
format(用来定义自己的格式)。
--oneline --pretty=oneline --abbrev-commit 合用的简写
11.指定输出时间范围
12.撤销操作
git commit --amend
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
git reset HEAD CONTRIBUTING.md
git checkout -- CONTRIBUTING.md
13.添加远程仓库
git remote add pb https://github.com/paulboone/ticgit
14. 查看远程仓库
git remote show origin
15.远程仓库重命名
git remote rename pb paul
16.git别名
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
17.显示标签
git tag -l "v1.8.5*"
18.创建标签
git tag -a v1.4 -m "my version 1.4"
git tag v1.4-lw
git tag -a v1.2 9fceb02
19.显示标签
git show
20.推送标签
git push origin v1.5
git push origin --tags
21.删除标签
git tag -d v1.4-lw
git push origin :refs/tags/v1.4-lw
git push origin --delete <tagname>
22.检出标签
git checkout 2.0.0
git stash
常用git stash命令:
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash
Git LFS的使用
Git LFS 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持

使用目的
在游戏开发过程中,设计资源占用了很大一部分空间. 像png,psd等文件是二进制(blob)的,体积也很庞大.
但git的diff/patch等是基于文件行的.对于二进制文件来说. git需要存储每次commit的改动.
每次当二进制文件修改,发生变化的时候. 都会产生额外的提交量.导致clone和pull的数据量大增.在线仓库的体积也会迅速增长.


LFS(Large File Storage) 就是为了解决这一问题而产生的工具.
它将你所标记的大文件保存至另外的仓库,而在主仓库仅保留其轻量级指针.
那么在你检出版本时,根据指针的变化情况下更新对应的大文件.而不是在本地保存所有版本的大文件

安装
注意:安装 Git LFS 需要 Git 的版本不低于 1.8.5
Linux
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
Mac
安装HomeBrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git-lfs
git lfs install
Windows
下载安装 windows installer
运行 windows installer
在命令行执行 git lfs install
使用
- 执行 git lfs install 开启lfs功能
- 使用 git lfs track 命令进行大文件追踪 例如git lfs track "*.png" 追踪所有后缀为png的文件
- 使用 git lfs track 查看现有的文件追踪模式
- 提交代码需要将gitattributes文件提交至仓库. 它保存了文件的追踪记录
- 提交后运行git lfs ls-files 可以显示当前跟踪的文件列表
- 将代码 push 到远程仓库后,LFS 跟踪的文件会以『Git LFS』的形式显示:
- clone 时 使用'git clone' 或 git lfs clone均可。

浙公网安备 33010602011771号