Git常用命令总结

Git常用命令总结

Git常用命令,日常开发使用

0. git init
初始化一个git管理目录,创建.git文件夹

1.git log

git log –stat
查看该git库log修改记录文件列表模式

git log -p
通过补丁格式查看修改记录

git log -p -1 <文件名称>
查看某个文件最近一次修改细节

git log –after 2018-08-01 –before 2018-08-03
git log –stat –after 2018-08-01 –before 2018-08-03
git log –since 2018-08-01 –until 2018-08-03
git log –stat –since 2018-08-01 –until 2018-08-03
显示2018年8月1日至2018年8月2日的修改记录
–stat显示修改文件列表

git log –oneline
以单行格式显示log信息,便于查看整体修改情况

2. git diff
git diff master…my_branch
查看my_branch从master拉出分支后所做的修改

git diff
查看当前工作目录和暂存区的差异,如果暂存区没有内容,则是本次仓库的最后一次提交内容。

git diff –staged 或者git diff –cached
查看当前暂存区和最后一次提交的差异

git diff commit_id file_name
查看指定文件当前内容和指定commit的差异

git diff commit_id1 commit_id2 file_name
查看指定文件两次commit的差异

3. git checkout
git checkout <文件名称>
恢复指定文件版本为最新git库版本

git checkout .
恢复当前repo下所有修改的文件

4. git reset
git reset HEAD –hard
恢复该文件未上一个版本

git reset
撤销当前所有暂存区中的内容为未提交状态

git reset FILE
撤销对指定文件的修改为未提交状态

5.git merge
git merge my_branch (当前在master库下)
将my_branch分支代码合并到master分支下

6.git tag
git tag
查看当前repo所有的tag名称

git tag -a tag_name commit_id
给指定的commit打标签tag_name

git checkout -b branch_name tag_name
从tag_name创建分支branch_name并切换过去

git push origin tag_name
将tag_name对应的标签推送到origin服务器

7.git branch
git branch
显示当前当前repo本地的branch,当前工作的branch名称

git branch branch_name
创建分支branch_name

git branch -a
显示所有的本地分支及远程分支

git branch -v
显示所有branch的最新修改log

git branch -vv
显示所有branch的远程跟踪分支及最新修改log

git checkout -b branch_name
创建分支并切换至

git branch -d branch_name
删除分支

git branch -D branch_name
强制删除分支

git checkout branch_name
切换到指定的分支

git branch -u origin/branch_name
设置当前分支跟踪origin的branch_name分支

git push –set-upstream origin branch_name
创建远程跟踪分支branch_name,并将当前分支push到该分支上

删除远程分支
git push origin –delete branch_name

8. git config
git config TAB
git config –TAB
TAB为按住TAB键进行补全

9. sparse-checkout
sparseCheckout只checkout指定文件夹内容

步骤:
1.配置git config core.sparseCheckout true
2.创建文件.git/info/sparse-checkout文件
3.在上一步创建的文件sparse-checkout中添加需要制定的文件及目录
注意点:
1)* 匹配所有的内容 !为排除项,且必须在通配符的后面 在后面如有!/DIR 则排除制定目录,
2)新增加目录后直接执行git pull是不会更新新目录的,需要执行git checkout master
3)新建repo后默认没有跟踪远程分支,需要通过git branch -u origin/BRANCH_NAME
设置远程分支
4)在sparse-checkout中删除目录后,git checkout, git
pull都不能自动删除已经下载的文件,手动删除后git status会提示有删除操作

网络收藏:
子目录的匹配在 sparse-checkout 文件中,如果目录名称前带斜杠,如/docs/
,将只匹配项目根目录下的docs目录,如果目录名称前不带斜杠,如docs/
,其他目录下如果也有这个名称的目录,如test/docs/
也能被匹配。而如果写了多级目录,如docs/05/
,则不管前面是否带有斜杠,都只匹配项目根目录下的目录,如test/docs/05/
不能被匹配。

10 git stash
git stash list
查看储藏的历史记录

git stash save或者git stash
储藏当前的未提交的修改,或者暂存区的修改

git stash pop
弹出暂存区的修改并删除stash记录

git stash apply
应用最近一次stash的修改,不弹出

11 git commit –amend
修改上一次的提交信息,更新commit的hash值
注意当前暂存区如果有文件,则文件同时进行提交。

12 git remote
查看远程服务器名称

git remote get-url origin
查看origin服务器对应的url

git remote -v
显示远程服务器, fetch和push分别对应的名称和url

git remote add origin URL
添加远程服务器地址URL为名称origin

13 git grep xxx
在git中查询xxx

git grep –count xxx
在git中查询xxx在各个文件中出现的次数

git grep要比系统自带的grep快一些。

14 git reflog
本地操作日志信息

git底层命令,一般不适用,只是为了查看git内部的实现原理

1. git cat-file -t commitid
查看一次commit的类型

2. git cat-file -p commitid
查看一次commit的内容

.git/object/xx/yyy….yyy
其中xx为hashid的前两位,表示目录,yyy….yyy为剩余的38位,表示文件名称
上述所有的commitid的格式为40位

3. git ls-tree TREE-OBJ
输出tree对象中所有项目的模式,类型,对象哈希与文件名

4. git ls-files -s
列出所有的树对象的文件列表

!!!注意
以上底层命令cat-file/ls-tree/ls-files在输入的时候不会自动补全,–后按TAB可以补全参数

Comments are closed.