Loading

git使用总结

git配置

  1. /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上
    --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或
    超级用户权限来修改它。)
  2. ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 你可以传递 --global 选项让 Git
    读写此文件,这会对你系统上 所有 的仓库生效。
  3. 当前使用仓库的 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

常规操作

  1. 初始化仓库
    git init
  2. 克隆仓库
    git clone https://github.com/libgit2/libgit2
    git clone https://github.com/libgit2/libgit2 mylibgit
  3. 查看状态
    git status
    git status -s
  4. 忽略文件
# 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的数据量大增.在线仓库的体积也会迅速增长.

image

image

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

image

安装

注意:安装 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
使用

  1. 执行 git lfs install 开启lfs功能
  2. 使用 git lfs track 命令进行大文件追踪 例如git lfs track "*.png" 追踪所有后缀为png的文件
  3. 使用 git lfs track 查看现有的文件追踪模式
  4. 提交代码需要将gitattributes文件提交至仓库. 它保存了文件的追踪记录
  5. 提交后运行git lfs ls-files 可以显示当前跟踪的文件列表
  6. 将代码 push 到远程仓库后,LFS 跟踪的文件会以『Git LFS』的形式显示:
  7. clone 时 使用'git clone' 或 git lfs clone均可。
posted @ 2021-09-29 15:14  Test002  阅读(5)  评论(0)    收藏  举报