文档章节

Git命令小记

rathan0
 rathan0
发布于 2015/07/29 13:17
字数 1366
阅读 63
收藏 0

一、git常用命令

1、push

git push <远程主机名> <本地分支名>:<远程分支名>

注意:git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

1.1 push当前分支:

git push origin local_branch:remote_branch    # 完整写法
git push origin local_branch    # 省略远程分支名
git push origin    # 分支名全部省略
git push    # 省略origin主机名:当只有origin主机或者使用默认主机时,可省略origin主机名
git push -u origin local_branch    # 多台主机,使用-u 设置默认主机,以后可直接git push

1.2 删除远端分支:

git push origin :remote_branch    # 省略本地分支名
git push origin --delete remote_branch    # 两条命令等效

1.3 本地的所有分支都推送到远程主机:

git push --all origin

1.4 强制push:

git push --force origin

注意:

  • 建议先git pull

  • 上面命令使用–force选项,结果导致在远程主机产生一个non-fast-forward merge的合并。除非你很确定要这样做,否则应该尽量避免使用–force选项。

1.5 推送标签:

git push origin --tags


2、branch

2.1 branch重命名

git branch -m old_branch new_branch


3、reset

根据–soft –mixed –hard,会对working tree和index和HEAD进行重置: 

git reset –-mixed # 默认方式,回退到某个版本,只保留源码,回退commit和index信息。
git reset -–soft # 回退到某个版本,只回退commit的信息,不会恢复到index file一级。可通过commit再次提交。
git reset –-hard # 彻底回退到某个版本,本地的源码也会变为上一个版本的内容(不包括 untracked files)。


4、diff

HEAD     commit版本

Index     staged版本

4.1 工作区diff:

git diff    # 显示未add的修改:比较工作区(working tree)和暂存区(stage/index)之间的差异
git diff HEAD    # 显示工作版本(Working tree)和HEAD的差别
git diff SHA1    # 将所指定的某次提交与当前工作目录进行对比。SHA1只某次提交的commit哈希值

4.2 暂存区diff:

git diff --cached    # 查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异,显示的是下一次commit时会提交到HEAD的内容(不带-a情况下)
git diff --staged    # 同上

4.3 分支diff:

git diff topic master    # 直接将两个分支上最新的提交做diff
git diff topic..master    # 同上
git diff topic...master    # 输出自topic和master分别开发以来,master分支上的changed。

4.4 历史提交对比:

git diff SHA1 SHA2    # 比较2次提交的内容
git diff SHA1..SHA2    # 同上。如果省略任意一个commit,默认将使用HEAD代替
git diff HEAD^ HEAD    # 比较上次和上上次提交。其中HEAD代表最后一次提交,HEAD^代表最后一次提交的父提交,HEAD~1等价于HEAD^,HEAD~2为倒数第二次提交,以此类推。
git diff HEAD^ HEAD~2

4.5 其他参数:

git diff --stat    # 列举文件及简单统计
git diff another_branch    # 查看工作区和另外一个分支的差别
git diff -- filename    # 只对比给定的文件
git diff -- ./src    # 只对比指定目录

根据修改状态过滤:

--diff-filter=[ACDMRTUXB*]

显示指定状态的文件:Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), changed (T), are Unmerged (U), are Unknown (X)

示例:

git diff --diff-filter=M


二、git其他命令

1、stash(储藏):

git stash:保存当前工作现场,未提交的代码都会入栈;
git stash list:列举所有工作现场;
git stash pop:应用栈顶(stash@{0})工作现场到当前分支;
git stash apply  stash@{num}:应用stash@{num}个工作现场,不pop;
git stash clear:清空stash栈;

2、clean:删除一些没有git add的文件

git clean -n    # -n和下面的参数组合使用,列出哪些符合条件的文件/目录会被删掉,防止误删
git clean -f    # remove untracked files
git clean -fd    # remove untracked files/directories
git clean -xfd	# remove untracked files/directories, include gitignore

3、blame:查看代码每一行是谁提交的及提交时间戳

git blame file_path

4、log:查看日志

git log -p -2 local_branch..origin/remote_branch    # 比较本地分支日志与远端分支日志,-p表示展开内容差异,-2表示展示最近2次提交

5、pull

git pull:从远端分支获取最新版本并merge到本地,相当于git fetch 和 git merge。

在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

6、grep:搜索

git grep 'search_info'
git grep -n 'search_info'    # 显示行号
git grep --name-only 'search_info'    # 只显示文件名
git grep -c 'search_info'    # 显示文件中出现次数


三、git提交统计

1、统计某人的代码提交量,包括增加、删除:

git log --author="rathan.han" --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -

效果:

2、仓库提交者排名前五(如果看全部,去掉 head 管道即可)

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5


四、git文件的三种状态

Untracked files/Changes to be committed————》 git add ————》Changes to be committed(暂存区)————》继续修改文件————》Changes not staged for commit


五、错误恢复

1、commit移到别的分支:

# 切换到想移到的分支 
git cherry-pick commit_id


refer:

1、Git代码行统计命令集: http://www.360doc.com/content/14/0929/11/10058718_413198911.shtml

2、git命令详图:http://my.oschina.net/adam_li/blog/133652

3、gitbook中文版:http://gitbook.liuhui998.com/index.html


© 著作权归作者所有

rathan0
粉丝 5
博文 66
码字总数 36282
作品 0
程序员
私信 提问
Git 命令随记

版权声明: 本文来自 书生依旧 的简书,转载请注明出处。 原文链接: http://www.jianshu.com/p/663dbd12f48c Git 是什么 目前世界上最先进的分布式版本控制系统,是 Linus 为管理 Linux 源码...

ssyijiu
2017/10/31
0
0
Git 常用命令 思维导图(转)

 Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。   本来想着只把最有用、最常用的 Git 命令记下来,但是总觉得这个...

ap0581w9c
2014/01/23
0
0
Android 提交代码之Git常用命令

  http://robinwu.iteye.com/blog/919043 Git 是一个很 强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。   本来想着只把最有用、...

lxp198837
2012/07/03
0
0
时光机穿梭

我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version control system. Git is free s...

东方神剑
2015/01/21
3
0
Crawler 不需要写代码的爬虫 不需要写正则的爬虫

Crawler V1.0.0 代码还没有优化 框架结构很简单 部分功能需要你们给我需求,我后期添加测试 操作指南 命令:java -jar Crawler.jar -[option] -v 爬虫的版本信息 -h 爬虫的帮助文档 -ct [url...

加州肥猫
2016/03/23
98
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端性能优化

js相关 根据js时间线,将js放在最下面加载,先加载DOM,再加载js 懒执行,就是将某些逻辑延迟到使用时再执行。该技术可用于首屏优化,对于某些耗时逻辑并不需要在首屏就使用的,就可以使用懒...

祖达
18分钟前
0
0
websocket通信failed to execute 'send'问题的解决

在建立web socket通信后,发送数据时,出现下图所示现象: 问题代码演示 function TestSockets() { //实例化一个WebSocket对象 var socket = new WebSocket("ws://127.0.0.1:8000/w...

城市之雾
24分钟前
0
0
PHPStorm 如何设置 yaf 代码提示?

下载 php-yaf-doc git clone https://github.com/elad-yosifon/php-yaf-doc.git PHPStorm 如下设置 使用

whoru
25分钟前
0
0
typeorm drop foreign key

1. 问题描述 项目代码中使用typeorm进行mysql的数据操作, 昨天突然部署测试环境发现测试环境数据库的外键都为空了, 导致涉及的整个系统不可用. 2. 问题探究 尝试复现 mysqldump 线上数据, 然...

jimmywa
26分钟前
2
0
好程序员web前端开发测验之css部分

好程序员web前端开发测验之css部分Front End Web Development Quiz CSS 部分问题与解答 Q: CSS 属性是否区分大小写? <p><font size="3">  ul {</font></p> <p><font size="3">  MaRGin:......

好程序员IT
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部