命令参数自动补齐
按tab键或2下tab键查看git版本
git –version在git命令输出中开启颜色显示
git config –global color.ui true初始化git版本库
git init
git init 目录将文件暂存到版本库
git add example.txt将所有暂存到版本库的内容都提交到版本库
git commit -m “example”在工作区的文件中搜索内容
git grep “content”查看版本库.git文件夹所在的目录
git rev-parse –git-dir查看工作区根目录
git rev-parse –show-toplevel查看当前目录相对于工作区根目录的相对目录
git rev-parse –show-prefix查看当前目录后退到工作区根目录的深度
git rev-parse –show-cdup显示分支提交的id
git rev-parse mater
git rev-parse HEAD查看git提交日志
git log
git log –stat 查看每次提交的文件变更统计
git log –pretty=oneline 日志精简输出
git log –pretty=fuller 详细日志
git log –pretty=raw –graph id 查询日志跟踪链
git log –stat -2 查看最新的2次提交git diff 三种文件状态对比
git diff 工作区和暂存区的对比
git diff HEAD 工作区和版本库的对比
git diff –cached或–staged 暂存区和版本库的对比
git diff B A 比较里程碑B和A
git diff A 比较工作区和里程碑A
git diff –cached A 比较暂存区和里程碑A
git diff commit1 commit2 –paths 比较2个提交的文件路径下的差异
git diff –word-diff 逐词比较git工作原理
git reset HEAD
暂存区的目录树会被改写,被版本库HEAD的目录树替代
工作区不受影响git rm –cached file
在暂存区中直接删除文件,工作区不受影响git checkout
git checkout . 用暂存区的全部文件替换工作区的文件
git checkout – file 用暂存区的指定文件替换工作区的文件
替换后,工作区的改动会被清空
git checkout HEAD . 用版本库的全部文件替换暂存区和工作区的文件
git checkout HEAD 用版本库的指定文件替换暂存区 和工作区的文件显示版本库的目录树
git ls-tree -l HEAD显示暂存区的目录树
git ls-files -s清空工作区中没有加入版本库的文件和目录
git clean -fd保存当前工作进度
git stash 对暂存区和工作区的状态进行保存
git stash list查看保存的进度
git stash pop 从最近保存的进度恢复,保存的进度会被删除
git stash apply 从最近保存的进度恢复,保存的进度不会被删除
git stash pop [–index] [stash] 加index还会恢复暂存区
git stash drop [stash] 删除一个进度
git stash clear 清空
git stash branch new_branch [stash] 基于进度创建分支查看40位对象id的类型
git cat-file -t id
git cat-file -p id 查看对象的内容git对象库各个对象之间的关系
工作分支
git branch 显示当前工作分支git版本库结构图
git重置master游标
git reset –hard HEAD^
git reset –hard idgit恢复重置前的提交
git reflog show master | head -5git reset –hard master@{2}
执行合并操作
git merge idgit reset命令详解
用法一:git reset [-q] [commit] [–] paths
用法二:git reset [–soft| –mixed | –hard| –merge| –keep] [-q] [commit]
commit是可选项,可以使用引用或ID,省略commit相当于使用了HEAD的指向作为提交ID
用法一和二的主要区别是是否包含paths,在paths前面可以加–作为分割,避免路径和引用冲突
用法一::不会重置引用,不会改变工作区,而是用指定版本库commit下的文件替换暂存区中文件
用户二::会重置引用,还可能会对暂存区和工作区进行重置
用法实例:- git reset
不会重置引用,重置暂存区,不会重置工作区。(不会重置引用的原因是重置引用到HEAD相当于没有重置) - git reset HEAD
同上 - git reset – filename
重置暂存区的filename文件,不做其他操作 - git reset HEAD – filename
同上 - git reset –soft HEAD^
只改变引用,向前回退一次。工作区和暂存区不改变 - git reset HEAD^
相当于加了–mixed,工作区不改变,引用向前回退一次,暂存区回退到前一次提交 - git reset –mixed HEAD^
同上 - git reset –hard HEAD^
彻底撤销最近的提交。引用回退,工作区和暂存区也回退
- git reset
git checkout命令详解
git checkout和git reset的主要区别是git checkout用于覆盖工作区,git reset用于重置暂存区
用法一:git checkout [-q] [commit] – paths
用法二:git checkout [branch]
用法三:git checkout [-m] [[-b|–orphan] new_branch] [start_point]
用法一主要是用版本库的文件覆盖暂存区和工作区中对应的文件。如果commit省略,则用暂存区的文件覆盖工作区的文件;不会改变HEAD头指针
用法二主要是用于分支切换,会改变HEAD头指针。省略branch则相当于对工作区进行状态检查,汇总显示工作区、暂存区和HEAD的差异
用法三主要是创建和切换到新的分支new_branch,新的分支从start_point指定的提交开始创建。在暂存区删除文件
git rm paths 删除指定文件
git add -u 提交工作区改动文件到暂存区,包括修改和删除,不包括新增
git add -A 将新增、修改和删除都提交到暂存区在工作区和暂存区改文件名
git mv file1 file2文件忽略
方法一:在工作区中创建一个.gitignore文件,把要忽略的文件以通配符的方式写入。
*.a 忽略所有.a的文件
!lib.a 不忽略lib.a文件
/TODA 忽略toda目录的文件,不忽略 toda子目录的文件
build/ 忽略所有build目录下的文件
doc/*.txt 忽略所有doc目录下的.txt文件,不忽略doc子目录下的txt文件
方法二:在.git目录下的一个文件.git/info/exclude设置
方法三:通过git的全局配置变量core.excludesfile 指定
git config –global core.excludesfile /home/file文件归档
基于最新提交建立归档文件
git archive -o latest.zip HEAD
只将目录src和doc建立到归档文件
git archive -o partial.tar HEAD src doc
基于里程碑v1.0建立归档
git archive –format=tar –prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz查看所有的提交记录
git rev-list HEAD打开git GUI界面
git gui 或git citool显示分支
git rev-parse –symbolic –branches显示里程碑
git rev-parse –symbolic –tags显示定义的所有引用
git rev-parse –symbolic –glob=refs/*文件追溯:逐行查找每行的版本
git blame filenames
git blame -L 6,+5 filenames 显示文件6到11行二分查找
git bisect修补提交
单步修补:
git checkout HEAD^ – paths 先还原
git commit -amend -m “zzh” 修补提交
多步修补:
git reset –soft HEAD^^ 版本库回到2个步骤之前
git commit -m “zzh1” 合并后面的2个提交为一个提交拣选命令git cherry-pick
从众多的提交中挑选一个提交应用到当前工作分支上
git cherry-pick master^提交时重用一个提交的提交说明
git commit -C C将master指向最新的提交上
git reset –hard HEAD@{1}创建分支并将分支合并回主干的过程:
比如A->B->C->D->E->F
现在要把CD进行融合
git checkout D
git reset –soft HEAD^
git commit -C C
git cherry-pick E
git cherry-pick F
git checkout master
git reset –hard HEAD@{1}设置里程碑
用法1:git tag [tagname] [commit]
用法2:git tag -a [tagname] [commit]
用法3:git tag -m [msg] [tagname] [commit]
用法4:git tag -s [tagname] [commit]
用法5:git tag -u [key-id] [tagname] [commit]
用法2、3会带有说明,用法4、5会带有GnuPG签名
git tag A 在最新的提交中设置里程碑A
git tag B HEAD^
git tag C HEAD~2 前2次提交变基操作
将制定范围内的提交嫁接到另外一个提交上
用法1:git rebase –onto [newbase] [since] [till]
用法2:git rebase –onto [newbase] [since]
用法3:git rebase [since] [till]
用法4:git rebase [since]
用法5:git rebase -i …
用法6:git rebase –continue
用法7:git rebase –skip
用法8:git rebase –abort用法6会先解决冲突后继续操作
用法7会跳过当前的冲突提交继续操作
用法8会终止操作
[since]..[till]版本范围语法是从since的后一个提交开始到till的所有提交,包含tillgit rebase –onto C E^ F 把E到F的提交变基到C上
git rebase -onto C D 把D后一个提交到最新提交变基到C上反转提交
git revert HEAD 将当前的提交再反向提交一次git clone
用法1:git clone [repository] [directory]
用法2:git clone –bare [repository] [directory.git]
用法3:git clone –mirror [repository] [directory.git]用法1将版本库克隆岛directory目录下,目录相当于版本库的工作区
查看上游版本库的注册信息
git remote -v禁止非快进式推送
即禁止覆盖push
git –git-dir=/path/to/repos/a.git config receive.denyNonFastForwards truegit fetch 获取版本库最新的版本
git merge 合并操作
里程碑
git tag 显示当前版本库的里程碑列表
git tag -n1 每个里程碑最多显示一行说明
git tag -l jx* 使用通配符对里程碑进行过滤
git log –decorate 可以看到提交对应的里程碑
git describe 显示提交的里程碑或祖先的里程碑
git name-rev 显示分支名
git name-rev –tag 显示里程碑
git cat-file -t tag2 检查里程碑指向的对象
git cat-file -p tag2 检查里程碑的内容
git tag -d mytag 删除里程碑
git push origin :tagname 删除远程版本库的里程碑分支命令git branch
用法1:git branch
用法2:git branch [branchname]
用法3:git branch [branchname] [startpoint]
用法4:git branch -d [branchname]
用法5:git branch -D [branchname]
用法6:git branch -m [oldbranch] [newbranch]
用法7:git branch -M [oldbranch] [newbranch]
用法1用于显示本地分支列表
用法2、3用于创建分支
用法4、5用于删除分支,4会检查 分支是否合并到其他分支,否则拒绝删除;5会强制删除
用法6、7用于重命名分支,如果版本库存在新的名称,用法6拒绝重命名,用法7强制执行将分支代码合并到主线
(1)工作区切换到主线
git checkout master
(2)执行合并命令
git merge 分支名
(3)完成本地分支向远程分支的同步
git push
(4)删除分支
git branch -d 分支名
git学习笔记
最新推荐文章于 2021-11-16 20:53:51 发布