Git Brief

常用命令

命令描述详情
.gitignore声明无需纳入git管理的文件空行或以#开头的行都会被忽略。
可以使用标准的glob模式匹配。
匹配模式可以以/开头防止递归。
匹配模式可以以/结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上!取反。
.gitkeep保留空文件夹
git difftool --tool-help查看系统支持哪些diff插件
git config --global core.editor vim设置核心编辑器为vim
git config --global diff.tool p4merge设置diff工具为p4merge设置vscode作为默认diff工具
git config --global merge.tool p4merge设置merge工具为p4merge
git config --global alias.s status
git config --global alias.logs \
  'log --oneline --graph'
定义git status命令的别名为git s
git init在项目根目录下创建一个.git子目录
git clone -o o \
  https://github.com/xx/yy zz
克隆yy项目源到本地,并重命名为zz,且远程仓库引用名origin重命名为o
git ls-remote获得远程引用的完整列表
git remote查看远程仓库的简写
git remote -v查看远程仓库的简写和与其对应的仓库地址
git remote add <remote-name> <url>添加一个新的远程仓库
git remote show [remote-name]查看远程仓库
git remote rename origin oorigin远程仓库重命名为o
git remote rm origin移除origin远程仓库
git fetch [remote-name]访问远程仓库,从中拉取所有本地还没有的数据不会自动合并或修改你当前的工作,你必须手动合并。
git fetch origin a:b拉取远程分支a到新本地分支b
git pull自动的抓取然后合并远程分支到当前分支You have not concluded your merge (MERGE_HEAD exists) git拉取失败
git pull -r自动抓取远程分支并依此变基,重放本地分支变更
git push [remote-name] [branch-name]推送本地分支变更到远程仓库
git push origin a:b推送本地分支a到一个命名不相同的远程分支b
git push origin --delete a删除远程a分支
git push origin :a删除远程a分支
git push origin :refs/tags/v1.0删除远程v1.0标签
git push -u origin a:aa推送a分支工作到服务器上的aa分支上,使用-u标记设置追踪关系,便于之后轻松地推送与拉取配置分支
git push origin a -f强制提交本地变更覆盖远程分支a
git status检查当前文件状态
git status -s检查当前文件状态简览??: 新添加的未跟踪文件
A : 新添加到暂存区中的文件
 M: 修改过的文件但是还没放入暂存区
M : 修改过的文件且已放入暂存区
git add README跟踪新的README文件/暂存已修改的README文件
git diff查看未暂存的修改
git diff --cached
git diff --staged
查看已暂存的修改
git commit提交暂存的更新到本地仓库
git commit -v提交暂存的更新并显示提交具体修改的内容详情
git commit -m 'xxx'提交暂存的更新并直接填写提交信息
git commit -a -m 'xxx'提交更新并跳过使用暂存区域(省略git add步骤)
git commit --amend若未做任何修改,则仅修改上次提交说明;若又做了修改,则合并当前修改到上一次提交
git rm README移除README文件命令后面可以列出文件/目录的名字,也可以使用glob模式,例如git rm log/\*.log
git rm -f README强制移除README文件且不关心在移除前是否修改或修改后是否暂存
git rm --cached README从暂存区域移除README文件但仍保留在当前工作目录
git mv README README.mdREADME文件改名为README.md命令等价于mv README README.md; git rm README.md; git add README
git log查看提交历史仅显示每个提交的SHA-1校验和、作者的名字和电子邮件地址、提交时间以及提交说明
git log -p -2查看最近两次提交 每次提交的内容差异历史
git log --stat查看每次提交的简略的统计信息历史
git log --pretty=oneline查看提交历史,仅显示每个提交的SHA-1校验和提交说明还有short,full,fullerformat可用
git log --pretty=format:"%s" --graph查看提交历史,仅显示提交说明添加一些ASCII字符串来形象地展示你的分支、合并历史format常用的选项
git log --since=2.weeks
git log --after=2.weeks
查看提交历史,仅显示最近两周内的改动
git log --until="2008-11-01"
git log --before="2008-11-01"
查看提交历史,仅显示2008-11-01之前的改动
git log -SfunctionA查看提交历史,列出那些添加或移除了函数名functionA字符串的提交要得到同时满足这两个选项搜索条件的提交,就必须用--all-match选项。否则,满足任意一个条件的提交都会被匹配出来
git log --author bob --grep 'doc'查看提交历史,搜索作者是bob 提交说明中包含doc字符串的提交
git log --oneline --decorate查看各个分支当前所指的提交对象
git log --no-merges a..origin/master只显示所有在origin/master分支但不在a分支的提交列表
git tag列出标签
git tag -l 'v1.0*'使用特定的模式查找标签
git tag v1.0创建一个轻量标签像一个不会改变的分支 - 它只是一个特定提交的引用。本质上是将提交校验和存储到一个文件中,没有保存任何其他信息
git tag -a v1.0 -m 'version 1.0'创建一个附注标签存储在git数据库中的一个完整对象,是可以被校验的。其中包含打标签者的名字、电子邮件地址、日期时间、标签信息;并且可以使用GPG签名与验证
git tag -a v1.0 9fceb029fceb02提交上打标签
git show <tag-name>查看标签信息与对应的提交信息(仅附注标签有)
git push origin [tag-name]推送标签到远程服务器
git push origin --tags推送所有不在远程服务器上的标签
git checkout -b [branch-name] [tag-name]在特定的标签上创建一个新分支
git branch列出当前所有分支
git branch -v列出当前所有分支,并显示每一个分支的最后一次提交
git branch --merged查看哪些分支已经合并到当前分支该列表中分支名字前没有*号的分支通常可以删除;因为已经将它们的工作整合到当前分支,所以并不会丢失任何东西
git branch --no-merged查看所有包含未合并工作的分支
git branch <branch-name>创建新分支
git branch -b <branch-name>新建一个分支并同时切换到该分支
git branch -d <branch-name>删除分支
git branch -D <branch-name>强制删除分支
git branch -vv基于本地缓存的服务器数据,列出每一个分支正在跟踪哪个远程分支,本地分支是否是领先、落后或是都有
git fetch --all; git branch -vv基于远程服务器数据,列出每一个分支正在跟踪哪个远程分支,本地分支是否是领先、落后或是都有
git checkout -- README撤消对README文件的修改
git checkout develop切换到develop分支HEAD就指向develop分支了,HEAD可想象为当前分支的别名
git checkout -b a origin/a创建一个本地分支且追踪origin/a远程分支
git checkout -u origin/a设置当前分支追踪origin/a远程分支
git revert 4d66945产生一次新提交,抵消掉4d66945提交
git reset HEAD README取消暂存的README文件
git reset --hard 4d66945撤销4d66945之后的提交,既撤消提交历史也撤销提交内容变更
git reset --soft 4d66945撤销4d66945之后的提交,仅撤消提交历史可再次整理提交
git stash将本地修改临时储藏到脏工作目录,会储藏未暂存的修改和通过git add已暂存的工作,但不储藏未追踪的文件
git stash -u将本地修改临时储藏到脏工作目录,会储藏未追踪的文件、未暂存的修改、通过git add已暂存的工作
git stash --keep-index仅储藏未跟踪文件到脏工作目录
git stash push -m 'fix issue-1'将本地修改临时储藏到脏工作目录,并增加一些描述信息备忘
git stash --patch交互式地提示哪些改动想要储藏、哪些改动需要保存到脏工作目录中
git stash list查看所有的储藏工作
git stash pop应用并删除最近一次的储藏工作
git stash apply stash@{1}应用指定版本的储藏工作,不会删除该储藏工作
git stash drop stash@{0}删除指定版本的储藏工作
git stash clear清空所有的储藏工作
git cherry-pick e43a6fd拣选工作流中的e43a6f提交
git merge <branch-name>合并分支当前分支A是待合并分支B的祖先,合并无冲突,简单的将当前分支A指针向前推进到B,也就是“快进(fast-forward)”。

当前分支A不是待合并分支B的直接祖先,合并无冲突,使用AB分支的共同祖先和两分支末端所指快照,做一个简单的三方合并。

当前分支A不是待合并分支B的直接祖先,合并有冲突,做合并但不自动地创建一个新的合并提交,暂停下来等待用户解决冲突
git merge --squash a合并a分支的改动,并压缩其上的所有工作成一个单独的提交
git rebase -i a基于a分支变基,将当前分支的工作压缩成一个单独的提交,或者重排提交中的工作使补丁更容易被维护者审核
git rebase --onto master a b取出b分支,找出处于b分支和a分支的共同祖先之后的修改,然后把它们在master分支上重放一遍
git hash-object -w READMEREADME的当前内容压缩成二进制文件,存入git,保存在.git/objects目录
git cat-file -p \
  1b1c4db97090d586637f2369348c91e452395b23
查看该文件原始的文本内容
git update-index \
  --add --cacheinfo 100644 \
  1b1c4db97090d586637f2369348c91e452395b23
  README
README文件的首个版本加入到了一个新的暂存区域中100644:表明这是一个普通文件
100755:表示可执行文件
120000:表示符号链接
git ls-files显示暂存区当前的内容
git write-tree将暂存区域的内容写到一个tree对象
echo 'first commit' | git commit-tree d8329f依据tree目录树对象创建一个commit提交对象

分支实践

Git分支实践

参考链接: Git Community Book & Git Book EN & Git Book ZH & Git 教程& Pro Git & Git 快速开始 & Git Interactive Learning & Git P4Merge & Git 分支最佳实践 & 如何正确使用Git Flow & Github 参考工作流

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值