@Chiang
2020-05-10T11:06:03.000000Z
字数 4415
阅读 643
Git
2020-05
# 查看所有的配置以及它们所在的文件
git config --list --show-origin
# 设置你的用户名和邮件地址
git config --global user.name "fazhan"
git config --global user.email 1550149004@qq.com
# 设置文本编辑器
git config --global core.editor vim
# 列出所有 Git 当时能找到的配置
git config --list
# 检查 Git 的某一项配置
git config user.name
# 查询Git中变量的原始值,告诉你哪一个配置文件最后设置了该值
git config --show-origin rerere.autoUpdate
# 获得 git config 命令的手册
git help config
git config --help
man git help
# 用 -h 选项获得更简明的 “help” 输出
git add -h
# 将尚未进行版本控制的本地目录转换为 Git 仓库
git init
git add *.c
git add LICENCE
git add .
git commit -m 'inital project version'
git commit -am 'commit workdir modified and tracked files'
# 从其它服务器 克隆 一个已存在的 Git 仓库
git clone https://github.com/libgit2/libgit2
git clone https://github.com/libgit2/libgit2 mylibgit
git status
git add README
git status -s
git status -short
- 输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态
- 新添加的未跟踪文件前面有
??
标记- 新添加到暂存区中的文件前面有
A
标记- 修改过的文件前面有
M
标记 M
在工作区已修改但尚未暂存M$nbsp;
文件已修改且已暂存MM
既有已暂存的部分,又有未暂存的部分
touch .gitignore
- 所有空行或者以 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式(shell 所使用的简化了的正则表达式)匹配,它会递归地应用在整个工作区中。
- 匹配模式可以以(/)开头防止递归。
- 匹配模式可以以(/)结尾指定目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
# 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。
git diff
# 查看已暂存的将要添加到下次提交里的内容,可以用 git diff --staged 命令。 这条命令将比对已暂存文件与最后一次提交的文件差异
git diff --staged
git diff --cached
git commit
# 添加 -m 选项,将提交信息与命令放在同一行
git commit -m 'this is the first commit'
# 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交
git commit -am 'commit all tracked files'
## 移除暂存区,工作区文件
git rm 'fazhan.md'
git rm log/\*.log
git rm \*.~
# 把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。
git rm --cached README
git mv file_from file_to
# 运行 git mv 就相当于运行了下面三条命令
mv README.md README
git rm README.md
git add README
git log
# -p 或 --patch 会显示每次提交所引入的差异,使用 -2 选项来只显示最近的两次提交
git log -p -2
# --stat 选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。 在每次提交的最后还有一个总结。
git log --stat
# --pretty。 这个选项可以使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。 比如 oneline 会将每个提交放在一行显示,在浏览大量的提交时非常有用。 另外还有 short,full 和 fuller 选项,它们展示信息的格式基本一致,但是详尽程度不一
git log --pretty=online
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format:"%h %s" --graph
%H
提交的完整哈希值
%h
提交的简写哈希值
%T
树的完整哈希值
%t
树的简写哈希值
%P
父提交的完整哈希值
%p
父提交的简写哈希值
%an
作者名字
%ae
作者的电子邮件地址
%ad
作者修订日期(可以用 --date=选项 来定制格式)
%ar
作者修订日期,按多久以前的方式显示
%cn
提交者的名字
%ce
提交者的电子邮件地址
%cd
提交日期
%cr
提交日期(距今多长时间)
%s
提交说明
git commit -amend
git reset HEAD fazhan.md
git checkout -- fazhan.md
# 查看远程仓库
git remote
# -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
git remote -v
# 添加远程仓库
git remote add pb https://github.com/paulboone/ticgit
# 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
git fetch <remote>
# 如果你的当前分支设置了跟踪远程分支,那么可以用 git pull 命令来自动抓取后合并该远程分支到当前分支。
git pull <remote>
git push origin master
git remote show origin
git remote rename pb paul
git remote remove paul
git tag
git tag -l
git tag -list
git tag -l "v1.8.5*"
git tag -a v1.4 -m "my version 1.4"
git show v1.4
git tag v1.4-lw
git tag -a v1.2 9fceb02
git push origin <tagname>
# 把所有不在远程仓库服务器上的标签全部传送到那里
git push origin --tags
# 本地
git tag -d <tagname>
## 远程
git push <remote> :refs/tags/<tagname>
git push origin --delete <tagname>
git checkout -b version2 v2.0.0
# 创建testing分支
git branch testing
# 查看各个分支当前所指的对象(这里可以看到指针所在分支)
git log --oneline --decorate
git checkout testing
# 输出你的提交历史、各个分支的指向以及项目的分支分叉情况
git log --oneline --decorate --graph --all
# 创建并切换分支
git checkout -b testing
git branch -d hotfix
git merge dev
# 分支列表
git branch
# 查看每一个分支的最后一次提交
git branch -v
# 查看哪些分支已经合并到当前分支
git branch --merged
# 查看哪些分支没有合并到当前分支
git branch --no-merged
# 查看远程分支
git remote show <remote>
git ls-remote <remote>
# 跟踪分支
# 一个用于工作的本地分支,并且起点位于 origin/serverfix
git checkout -b serverfix origin/serverfix
git checkout --track origin/serverfix
git checkout serverfix
# 设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支, 你可以在任意时间使用 -u 或 --set-upstream-to 选项运行 git branch 来显式地设置。
git branch -u origin/serverfix
# 如果想要查看设置的所有跟踪分支,可以使用 git branch 的 -vv 选项。 这会将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有。
git branch -vv
git push origin --delete serverfix
git rebase master
这一块太细了,用不到,哈哈...
git add -i
git add -interctive
这一块挺好的,我非常喜欢的功能,哈哈...
# 暂存
git stash
git stash save (弃用)
git stash push (推荐)
# 查看暂存列表
git stash list
# 恢复暂存数据,pop命令恢复,恢复后,暂存区域会删除当前的记录
git stash pop stash@{index}
# 恢复暂存数据,apply命令恢复,恢复后,暂存区域会保留当前的记录
git stash apply stash@{index}
# 删除暂存
git stash drop stash@{index}
git stash clear
参考资料:
Pro Git book
图解Git
Git 原理入门
Git 工作流程
阮一峰 Git 教程
Git教程
git stash暂存的操作