[TOC]
Git常用命令解析
|[TOC]
0x00 git常用命令
1 | #常用的: |
0x01 git 命令
config
1 | #git中文路径显示乱码,当被修改的文件中有中文字符时,中文字符会被转换为unicode码,导致看不出来原来的文件名。 |
示例1.Git设置与使用下载代理(Proxy)?1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 设置全局代理, 温馨提示git没有https代理,http包含了https,网上的教程都有误,而且地址不能加单引号
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
git config --global http.proxy http://127.0.0.1:1080
# 设置仅针对某个网站的代理,比如Github
git config --global http.https://github.com.proxy http://127.0.0.1:7890
git config --global http.https://github.com.proxy socks5://127.0.0.1:7891
# 设置指定存储库上使用代理
git clone https://github.com/weiyigeek/SecDevOps.git --config https.proxy=https://127.0.0.1:1080
# 查看所有代理
git config --global --list
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset http.https://github.com.proxy
clone
描述:克隆仓库会下载仓库完整的文件、分支和历史记录。1
2
3
4
5
6
7git clone [<options>] [--] <repo> [<dir>]
# 克隆完整的仓库到 ./git-learning 目录下
git clone git@github.com:x-cold/git-learning.git
# 只克隆 dev 分支到 ./dev 目录下
git clone -b dev git@github.com:x-cold/git-learning.git dev
add
描述:用命令git add告诉Git,把文件添加到暂存区
注意,可反复多次使用,添加多个文件;1
2
3
4
5
6
7
8#git add 常用命令
$ git add readme.txt app/ index.js #添加指定文件
$ git add -A #添加所有改动
$ git add * #添加新建文件和修改,但是不包括删除
$ git add . #添加新建文件和修改,但是不包括删除
$ git add -u #添加修改和删除,但是不包括新建文件
$ git add -f App.class #强制添加被.gitignore忽略了的文件到暂存区里
#执行git命令没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
commit
描述:,用命令git commit告诉Git,把文件提交到本地仓库
;
1 | #修改当前的 commit message |
push
描述:将本地代码仓库推送到远程代码仓库之中;
1 | #指定远程仓库名称与分支名称推送信息 |
pull
描述:从远程仓库拉取代码库
1 | $ git pull #相当于fetch/merge->取回远程的仓库再与本地的制定分支合并) |
log
描述:利用命令git log查看Git,把文件提交到远程仓库的历史,进行显示;在实际工作中我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45$ git log #显示从最近到最远的提交日志
# commit 150030c770fa7675d77fc814d2310cd568858492
# Author: Weiyigeek <***@qq.com>
# Date: Mon Apr 10 15:11:26 2017 +0800
# test github
$ git log --pretty=oneline #简约输出历史
$ git log --color --graph --pretty=oneline
# * 890adeeddf59263d063e1406fd382ef6086b177c (HEAD -> master, origin/master) www
# * 2efdfc9011eb2b3c28071ff63e8db06af453b624 testa
#提交说明与commitid
$ git log --oneline
$ git log --oneline --decorate --graph
# 75b5b8 (HEAD -> master, origin/master, origin/HEAD) git study
# c1ee2c4 all
# 5a0c6df shell
# 83055b1 shell
# e6598b0 1
# 0c8a94e Python数据处理
# 查看指定版本的提交记录
git log HEAD^ #上一个
git log HEAD^^ #上上个
git log HEAD~3 #上三个版本的历史
# 查看指定数量的log日志
git log -1
# commit 890adeeddf59263d063e1406fd382ef6086b177c (HEAD -> master, origin/master)
$ git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
$ git log --graph --pretty=oneline --abbrev-commit #--graph看到分支合并图
# * 59bc1cb conflict fixed
# |\
# | * 75a857c AND simple
# * | 400b400 & simple
# |/
# 输出前一次提交的commit message信息
git log -1 --pretty=%B ${GIT_COMMIT} HEAD~1
# bing webmaster
status
描述:让我们时刻掌握仓库当前的状态,方便开发者进入下一步操作;1
$ git status
diff
描述:对比不同工作区里面的不同版本,虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。
比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:1
2
3
4
5
6
7
8
9
10$ git diff HEAD -- readme.txt #查看工作区和版本库里面最新版本的区别
$ git diff #输出工作区和暂存区的different(不同)。
$ git diff HEAD #输出工作区、暂存区 和本地最近的版本(commit)的different(不同)
$ git diff --cached <HEAD^1 / Commit ID> #输出暂存区和本地最近的版本(commit)的different(不同)
$ git diff master origin/master #本地仓库与origin/master就是你的远程仓库的different(不同)
$ git diff --color-words #显示差异的不同颜色单词的
$ git diff --word-diff #详细展示一行中的修改
#来确认代码自动合并的情况
git diff -w [files]
reset
描述:既可以回退版本,也可以把暂存区的修改回退到工作区。撤销提交更改,非常强大,我们用HEAD时,表示最新的版本。1
2
3
4
5
6#(1)在 commit 前撤销 add 或者修改
git reset #unstage all due changes
git reset <file> #撤销提交单独文件
git reset HEAD file #可以把暂存区的修改撤销掉(unstage),重新放回工作区
git reset --hard HEAD^ #同一提交的所有内容都会变回上一个Commit时的状态
git reset --hard commitID #回退或者前进到某一提交版本
实践实例:1
2
3
4
5
6
7
8
9# 不删除工作空间改动代码,撤销commit,不撤销 git add .
git reset --soft HEAD^
# 不删除工作空间改动代码,撤销commit,并且撤销 git add . 操作
git reset --mixed HEAD^
git reset HEAD^ # 与上效果一致
# 删除工作空间改动代码,撤销commit,撤销 git add . 操作(执行时慎重)
git reset --hard HEAD^
checkout
描述:可以进行分支管理与撤销文件在工作区里面的更改;
1 | #将 index.js 恢复到当前 commit 的内容 |
branch
描述:创建并查看分支
1 | # 查看分支会列出所有分支,当前分支前面会标一个*号。 |
fetch
merge
描述:合并分支
1 | #合并某分支到当前分支 |
stash
描述:把当前工作现场“储藏”起来,等一番 git 操作(比如 merge / rebase 等)之后,再将这部分更改重新放回工作:
1 | # 临时存放,临时存放区是一个栈的结构,支持多次临时存放,遵循后入先出的原则 |
tag
描述:为每一个或者指定的commitid提供标签信息;
1 | #用命令git tag查看所有标签: |
remote
描述:远程仓库的管理与查看,remote 指的是本地的 git 仓库关联的远程 git 仓库。
1 | # 查看远程仓库 |
show
描述:进行commit提交修改查看以及标签信息查看;
1 | git show <tagname> #查看标签信息 |
rebase
描述:变基是一种常用且有风险的操作,会改变提交历史,谨慎使用!1
2
3
4
5
6
7
8git rebase
while(存在冲突) {
git status #找到当前冲突文件,编辑解决冲突
git add -u
git rebase --continue
if( git rebase --abort )
break;
}
cherry-pick
描述:魔法级的命令cherry-pick 可以提取 N 个的提交记录,合入稳定版本的分支上
git cherry-pick [1
2
3
4# 挑选 371c2 单个提交记录,合入当前分支
git cherry-pick 371c2
# 挑选出 371c2 到 971209 的所有提交记录,并合入当前分支
git cherry-pick 371c2…971209
whatchaged
描述:查看指定时间段之间的改动
1 | git whatchanged --since='2 weeks ago' #查看两个星期内的改动 |
reflog
描述:Git提供了一个命令git reflog用来记录你的每一次命令,主要用来进行回退版本到未来;1
2$git reflog
2efdfc9 (HEAD -> master, origin/master) HEAD@{0}: initial pull
rename
描述:重命名仓库1
git rename fork forked
rm
描述:删除文件
1 | #从版本库中删除该文件 |
rev-parse - 拾取信息参数
描述: 获取 git 项目相关信息参数信息。
实践案例:1
2
3
4
5
6
7
8
9
10
11
12# 获取当前HEAD值(常规)
git rev-parse HEAD
# 3e3340aadbe304184e0c21b4763aabe9b3668d3b
# 获取当前HEAD值(短)
git rev-parse --short HEAD
# 3e3340
git rev-parse --short HEAD
# 当前项目路径
git rev-parse --show-toplevel
# /usr/local/app/weiyigeek
mv
描述:移动项目1
$ git mv readme.txt ./TETS/
clean
描述:清除文件
参数说明:1
2
3x -----删除忽略文件已经对git来说不识别的文件
d -----删除未被添加到git的路径中的文件
f -----强制运行
实际案例:1
2
3
4
5
6$ git clean #清除没有加入暂存区的文件
$ git clean -n #不删除gitinore里面规则包含的文件
$ git clean -n -X #显示在工作区在.gitinore规则包含的文件
$ git clean -x -f #删除上面的所有文件,不管包括或者不包括
$ git clean -X -f #删除工作区在.gitinore规则包含的文件 大写的x
$ git clean -d -fx "" #删除未被添加到git的路径中的文件
revert
描述:产生覆盖文件
1 | git revert #产生新的提交覆盖以前的提交 |
ls-files
描述:查看仓库中所有的文件
1 | #添加指定文件 |
你好看友,欢迎关注博主微信公众号哟! ❤
这将是我持续更新文章的动力源泉,谢谢支持!(๑′ᴗ‵๑)
温馨提示: 未解锁的用户不能粘贴复制文章内容哟!
方式1.请访问本博主的B站【WeiyiGeek】首页关注UP主,
将自动随机获取解锁验证码。
Method 2.Please visit 【My Twitter】. There is an article verification code in the homepage.
方式3.扫一扫下方二维码,关注本站官方公众号
回复:验证码
将获取解锁(有效期7天)本站所有技术文章哟!
@WeiyiGeek - 为了能到远方,脚下的每一步都不能少
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】
或者个人公众号【WeiyiGeek】
联系我。
更多文章来源于【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】, 个人首页地址( https://weiyigeek.top )
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注、转个发、赞个助】,这将对我的肯定,我将持续整理发布更多优质原创文章!。
最后更新时间:
文章原始路径:_posts/编程世界/开发必备/版本控制/GIT/Git常用命令解析.md
转载注明出处,原文地址:https://blog.weiyigeek.top/2019/3-8-369.html
本站文章内容遵循 知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议