我所记录的git命令(非常实用)
一、前言
记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流...
[
顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高?
相同的标题搜索到的都是被抓取工具抓取的另一个平台下的文章了...
]
还是先贴张图(此图来自阮大神的blog)

二、git branch 和 git checkout
git branch //查看当前分支
git branch -r //列出远程分支
git branch -a //列出所有分支 git branch branchName //创建分支
git checkout branchName //切换分支
git checkout -b branchName //创建并切换到分支 git checkout //后面不跟任何参数,则就是对工作区进行检查
git checkout --filename //从暂存区中恢复文件(确保filename与branch名称不同) git status //查看状态
三、git clone 和 git remote
git clone <版本库的网址> <本地目录名>
git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。 $ git clone http[s]://example.com/path/to/repo.git/
$ git clone ssh://example.com/path/to/repo.git/
$ git clone git://example.com/path/to/repo.git/
$ git clone /opt/git/project.git
$ git clone file:///opt/git/project.git
$ git clone ftp[s]://example.com/path/to/repo.git/
$ git clone rsync://example.com/path/to/repo.git/ SSH协议还有另一种写法
$ git clone [user@]example.com:path/to/repo.git/ ========================================= git remote
git remote -v //查看远程主机的网址
git remote show <主机名> //查看该主机的详细信息
git remote add <主机名> <网址> //添加远程主机
git remote rm <主机名> //删除远程主机
git remote rename <原主机名> <新主机名> //重命名远程主机
四、git pull 和 git push
$ git pull <远程主机名> <远程分支名>:<本地分支名>
$ git push <远程主机名> <本地分支名>:<远程分支名>
from to git pull origin master:master
取回origin主机的master分支,与本地的master分支合并 git push origin master:master
推送本地的master分支,与origin主机的master分支合并 git pull origin master
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。 git push origin master
本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建 git pull origin
本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。
追踪分支 是 远程的同名分支 git push origin
当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略 git pull
当前分支自动与唯一一个追踪分支进行合并 git push
当前分支只有一个追踪分支,那么主机名都可以省略
五、git merge 和 git rebase
git merge
用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并;
结果看起来就像一个新的"合并的提交"(merge commit): //使用 rebase 合并
$ git checkout mywork
$ git rebase origin
这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,
并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),
然后把"mywork"分支更新 到最新的"origin"分支,
最后把保存的这些补丁应用到"mywork"分支上 在rebase的过程中,也许会出现冲突(conflict). 在这种情况,
Git会停止rebase并会让你去解决 冲突;在解决完冲突后,
用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行: $ git rebase --continue
这样git会继续应用(apply)余下的补丁。 在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
$ git rebase --abort

六、git log
git log --stat -n 5 // 简单的列出了修改过的文件 git log -p -n 5 // 详细的列出修改过的文件,及提交文件的对比 git log --graph // ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况
git log --all --decorate --graph git log --pretty=oneline // 只显示哈希值和提交说明 git log --pretty=oneline/short/full/fuller/format:""(格式等) git log --name-only // 仅在提交信息后显示已修改的文件清单 git log --no-merges // 不显示merge的log git log --name-status -n 5 --author='fanfan' // 按作者筛选 git log --name-status -n 5 --grep='commit desc' //按提交描述内容筛选 git log --name-status -n 5 -- path/file1 path/file2 //按提交的文件筛选 git log --name-status -n 5 -S"hello world" //按文件内容筛选 git log --name-status -n 5 -G"xxx" //按文件内容筛选(正则匹配) 常用的命令: git log --name-status -n 5 --no-merges path/filename // 显示新增、修改、删除的文件清单(不包含merge的log)
git log --name-status --skip=5 -n 5 --no-merges path/filename // 略过5条,从第6条开始取5条log
七、git stash
保存工作现场
git stash // 保存工作现场
do some work
git pop // 返回工作现场
git stash list //查看 stash 队列
git stash pop stash@{num}
// num就是list中要恢复的工作现场编号
// 使用pop命令恢复的工作现场,其对应的stash 在队列中删除
git stash apply stash@{num}
// num就是list中要恢复的工作现场编号
// 使用apply命令恢复的工作现场,其对应的stash 在队列中不删除
git stash clear // 情况 stash 队列
八、分支合并
分支合并: 1.保持工作目录 clean
2.git checkout master //切换到主干
3.git merge subscribeQY //在主干上合并分支
4.如果有冲突就解决一下 master push前,在分支上merge master
然后,在master上,merge 分支,在 push
九、冲突解决
[Tips]:发生冲突时,你可以手工将需要合并的这个分支/版本merge到自己的分支上,解决冲突后提交,可避免此情况的发生.
[Tips]:你可以根据如下步骤解决冲突:
1、git fetch
2、git checkout releases/xxx (注:如本地还未检出过发布分支,请执行 git checkout -b releases/xxx origin/releases/xxx)
3、git pull
4、使用版本号合并,将出现的冲突一一解决
git merge --no-ff b109eff1348a2fcf9a793deb81f3981d691e453c
5、git status 查看冲突,并按命令提示进行修复
6、git add xxx
git commit xxx
7、git push origin releases/xx
十、其他
$ git fetch <远程主机名> <分支名> git fetch origin master
取回origin主机的master分支 git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。
git reset --hard HASH #返回到某个节点,不保留修改。
git reset --soft HASH #返回到某个节点。保留修改
十一、参考资料
http://www.ruanyifeng.com/blog/2014/06/git_remote.html
http://gitbook.liuhui998.com/4_2.html
http://www.tuicool.com/articles/A3Mn6f
我所记录的git命令(非常实用)的更多相关文章
- 简单记录常用git 命令
声明:仅作笔记用 拉取远程代码 1.git pull 2.如果需要,输入账户名密码 将本地代码推送到远程 1.git push 2.如果需要,输入账户名密码 同步远程分支 1.git fetch 2. ...
- git 命令整理
记录一些git 命令,以便自己以后查阅 基本命令 1.git add (保存工作区的变动到暂存区) git add . 和git add -A把整个工作区添加到暂存区 2.git commit ( ...
- Git命令行(转用于学习和记录)
Git命令行介绍和使用说明(持续更新) 参见:<Git 中文简体教程> 一. 命令“git”或者“git help”查询常用命令 [add]: “git add”——不但是用来添加不在版本 ...
- 记录常用的git命令
之前的公司都是用svn的,现在的公司用git了,所以现在记录一下所用到的git命令,方便以后查看! git 常用命令 git add git add 命令可将该文件添加到缓存 git add . // ...
- git 命令行下浏览器tig使用记录
git 命令行下浏览器tig使用记录 tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. 以下是一些使用记录: 安装成功后,在 Repo 文件夹下, ...
- 记录--git命令行上传项目到github仓库
由于公司一直使用的是的SVN,基本上都是内网,原来的git命令都快忘记了,当然也是自己太懒,平时都是直接拖到github上.今天打开idea后突然看到了原来自己写好的一个项目,就想将它上传到githu ...
- 【记录】Git pull(拉取),push(上传)命令整理(详细)
前言:博主最近在学习git命令,因为git是一个非常好用的分布式版本管理工具,功能比svn强大,与SVN不同点是Git去中心化,每一个分支都是一个中心,并且支持本地仓库存储,像如今很多大公司都用git ...
- 一些非常实用的git命令
阅读目录 一.前言 二.git branch 和 git checkout 三.git clone 和 git remote 四.git pull 和 git push 五.git merge 和 g ...
- git命令实战之血泪记录
注意: 本文章所写所有命令均在Git命令行窗口执行!非cmd窗口! 打开git命令行窗口步骤为:到项目根目录下执行bash命令行操作:右键点击Git Bash Here菜单,打开git命令窗口,不是c ...
随机推荐
- CPPFormatLibary提升效率的优化原理
CPPFormatLibary,以下简称FL,介绍:关于CPPFormatLibary. 与stringstream,甚至C库的sprintf系列想比,FL在速度上都有优势,而且是在支持.net格式化 ...
- 【iOS自定义键盘及键盘切换】详解
[iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...
- Python 学习手册, char 14 - 15
Char 14 迭代器和解析器 可迭代的 : 支持iter的一个对象 迭代器 : iter 所返回的一个支持next(I)的对象 Python迭代工具会自动调用这些函数,我们也可以手动地应用迭代协议 ...
- 多线程之信号量(By C++)
信号量在多线程中,主要是用于线程的同步或者限制线程运行的数量. 所谓同步,当流程1运行在线程1中,流程2运行在线程2中,流程2必须在流程1结束之后才能开始执行.你会怎么做,所有就需要给出一个流程1结束 ...
- Android端简易蓝牙聊天通讯App(原创)
欢迎转载,但请注明出处!谢谢.http://www.cnblogs.com/weizhxa/p/5792775.html 最近公司在做一个蓝牙串口通讯的App,有一个固定的蓝牙设备,需要实现手机连接相 ...
- ContactsUtil 工具类 - 转载
import java.util.HashMap; import java.util.Map; //http://www.open-open.com/code/view/1432300986802 / ...
- IE浏览器下一些图片无法显示的(在其他非ie浏览器能够显示)解决办法
因为要完成本学期老师布置得网页作业,做完的时候进行网页的兼容性测试,chrome和360都没有问题. ie下却有两个图片无法显示. 一般这种情况代码是没有什么问题的,一般是图片本身的问题, 当我用Ps ...
- ST
这次说一下测试的基础部分 软件测试 软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.换句话说,软件测试是一种实际输出与预期输出间的审核 ...
- 站内全文检索服务来了,Xungle提供免费全文检索服务
免费站内全文检索服务来了,是的,你没听错.全文检索相信大家已经不太陌生,主流检索服务有sphinx.xunsearch等,但这些都受服务器限制,对于中小站长尤其是没有服务器实现就困难了,随着数据量的增 ...
- poj3629
//(队列)poj3629 /* #include <iostream> #include <queue> #include <algorithm> using n ...