一张图记住所有Git常用命令 - Go语言中文社区

一张图记住所有Git常用命令


在Microsoft的VSS,小乌龟SVN都已经作古,Git大行其道的今天,我们每天都跟Git打着交道。在Mac工作环境下我们习惯使用图形化的工具sourceTree,但是如果对Git命令不了解的话,也是挺可怕的。所以今天从最常用的操作开始整理。

操作图

说明:
1,实心框为文件状态,箭头方向的操作命令标记在了一旁。
2,除了从staged状态到modified状态的命令git reset HEAD file1中的HEAD file1不是必须的,其余都是必要参数,例如命令中的,。
3,如何进行后退操作的后退操作?例如从staged状态通过git commit到了commited状态,发现提交错了,通过git log命令查看版本后,使用git reset 进行回滚。但是回滚之后发现原来的提交是正确的,其实不需要回滚。这是可以用git reflog,查看所有通过git reset/git checkout进行后退的操作的HEAD,从而再次使用git reset 指向那个版本。例如:
我们已经提交了一个操作test1:
test1
执行完git reset后git log中已经不存在test1的提交记录,但是git reflog中可以看到:
git reflog
这时我们只需要再次执行git reset a2138e,看看git log中是不是我们的test1操作又出来了。
4,当然了另外一些常用的命令也要知道。

切换到代码目录后检查当前分支
git branch

放弃所有本地文件修改
git fetch --all
git reset --hard origin/branchname
创建分支并推送到远端
git branch dyl_test
git checkout dyl_test
git push --set-upstream origin dyl_test(--set-upstream设定远端对象,可以在后面的命令中省去origin及后面的内容)
查询代码状态
git status
切换分支
git checkout <branch>
删除分支并推送到远端
git branch -d/-D <branch>
git push origin --delete <branch>
log查询:显示Yalin Dang对BaseViewController.swift做的修改注释中,含有“引导图”的上下4行的数据。
git log --author="Yalin Dang" BaseViewController.swift | grep --context=4 "引导图"
增加标签
git tag -a "2.13.0Develop" -m "2.13.0开发版本"
git push origin 2.13.0Develop       // 推送指定tag
git push origin --tags              // 推送所有tags

回滚到指定标签
git tag
git show tagXXX
git reset --hard xxxx
git push -f 强行推送(回滚远程代码)

删除标签(实际上是往远程推送了空tag)
git tag -d tagXXX
git push origin --delete tagXXX

查看远程标签(将远程标签同步至本地,然后查看)
git fetch
git tag

删除全部Untracked file

cd 到根目录
git clean -fd

5,删除分支
分支整理–删除本地分支AAA,并推送到远程

git branch -d AAA
git push origin :AAA

查看并删除远程分支AAA

git branch -r       // -a 查看本地和远程所有分支
git push origin :AAA

批量删除含有”pk-qiyu”的本地分支

git branch | grep "pk-qiyu" | xargs git branch -D

批量删除含有”pk-“的远程分支
①检索包含”pk-“的远程分支

git branch -r | awk -F '/' '/pk-/ {printf("%sn", $2)}'    

这里写图片描述

如果用grep检索的话,结果是origin/pk-xxx,而远程删除命令中是不能包括origin的。

②将检索出来的分支删除

git branch -r | awk -F '/' '/pk-/ {printf("%sn", $2)}' | xargs -I{} git push origin :{}

这里写图片描述
这里需要通过xargs命令将检索出来的分支名字符串逐行传给git push origin :xxx命令来进行删除。xargs中-I{}表明需要将参数传放到后面的{}的位置。
③如果删除过程中遇到错误:
error: unable to delete ‘zjh_amap’: remote ref does not exist
error: failed to push some refs to ‘https://git.mararun.cn/app/runner-ios.git
那么先用命令删除远程分支的缓存:

git fetch -p origin

6,分支合并
将远端的指定tag(2.20.0Develop)的代码合并到指定的分支(master)上
①为tag2.20.0Develop创建分支并推送到远端

git checkout -b 2.20.0 2.20.0Develop    #-b:如果有重名则创建失败; -B:如果重名的话,会覆盖掉原分支
git push origin 2.20.0

②从2.20.0拉取代码到本地master分支,推送到远端

git checkout master
git pull origin 2.20.0
git push

awk命令参考:
http://www.runoob.com/linux/linux-comm-awk.html
xargs命令参考:
http://see.sl088.com/wiki/Shell_xargs/Mac版本

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/dangyalingengjia/article/details/78299517
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-27 10:46:46
  • 阅读 ( 1706 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢