我所记录的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 ...
随机推荐
- 深信服务发布SSL站点
1.不能使用AD自带的HTTPS服务,需要新建一个服务,端口443 2.在“节点池”中添加内网HTTPS服务器的IP,端口443 3.在“策略”中新建一条策略,"服务"选新添加的端 ...
- WPF中为ListView动态绑定数据(可参考)
GridView gv = new GridView(); DataTable dt = fieldManageBLL.GetFieldManage(moduleName); for(int i=0; ...
- 《DSP using MATLAB》示例Example5.17
- python tkinter
1. 在python3中使用 import tkinter 异常:no module named _tkinter apt-get install python-tk
- Python 基础语法学习笔记
以下运行结果均通过Python3.5版本实测! 1.列表转换为字典 a = ['a', 'b'] b = [1, 2] c = ['c','d'] print (dict([a,b,c])) 输出结果 ...
- gem安装cocoapods
1.升级Ruby环境 sudo gem update --system 如果Ruby没有安装,请参考 如何在Mac OS X上安装 Ruby运行环境 2.安装CocoaPods时我们要访问cocoap ...
- MacOS下Express安装过程中遇到的问题
问题描述: 使用nmp install express -g命令全局安装express后,在终端使用express -V命令可以获取到express的版本号,但在引用express的项目运行时,会报缺 ...
- pyqt 发射接收信号
翻页控件: 一.定义并发射信号: #!/usr/bin/python # #coding=utf-8 # __author__='' from PyQt4.QtCore import * from P ...
- 德国W家HIPP 奶粉有货播报:2014.6.25 HIPP 1+ 4盒装有货啦!
德国W家HIPP 奶粉有货播报:2014.6.25 HIPP 1+ 4盒装有货啦!
- 问题2: 安装cocoaPods出现的一系列问题
在新电脑上安装cocoaPods的时候,出现了一系列的问题,现在记录下来,方便查看 1.出现 Invalid mark letter (press RETURN) 解决方案:输入 :wq 即可 2. ...