一、前言

  记录一下工作中常用到的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命令(非常实用)的更多相关文章

  1. 简单记录常用git 命令

    声明:仅作笔记用 拉取远程代码 1.git pull 2.如果需要,输入账户名密码 将本地代码推送到远程 1.git push 2.如果需要,输入账户名密码 同步远程分支 1.git fetch 2. ...

  2. git 命令整理

    记录一些git 命令,以便自己以后查阅 基本命令   1.git add (保存工作区的变动到暂存区) git add . 和git add -A把整个工作区添加到暂存区 2.git commit ( ...

  3. Git命令行(转用于学习和记录)

    Git命令行介绍和使用说明(持续更新) 参见:<Git 中文简体教程> 一. 命令“git”或者“git help”查询常用命令 [add]: “git add”——不但是用来添加不在版本 ...

  4. 记录常用的git命令

    之前的公司都是用svn的,现在的公司用git了,所以现在记录一下所用到的git命令,方便以后查看! git 常用命令 git add git add 命令可将该文件添加到缓存 git add . // ...

  5. git 命令行下浏览器tig使用记录

    git 命令行下浏览器tig使用记录 tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. 以下是一些使用记录: 安装成功后,在 Repo 文件夹下, ...

  6. 记录--git命令行上传项目到github仓库

    由于公司一直使用的是的SVN,基本上都是内网,原来的git命令都快忘记了,当然也是自己太懒,平时都是直接拖到github上.今天打开idea后突然看到了原来自己写好的一个项目,就想将它上传到githu ...

  7. 【记录】Git pull(拉取),push(上传)命令整理(详细)

    前言:博主最近在学习git命令,因为git是一个非常好用的分布式版本管理工具,功能比svn强大,与SVN不同点是Git去中心化,每一个分支都是一个中心,并且支持本地仓库存储,像如今很多大公司都用git ...

  8. 一些非常实用的git命令

    阅读目录 一.前言 二.git branch 和 git checkout 三.git clone 和 git remote 四.git pull 和 git push 五.git merge 和 g ...

  9. git命令实战之血泪记录

    注意: 本文章所写所有命令均在Git命令行窗口执行!非cmd窗口! 打开git命令行窗口步骤为:到项目根目录下执行bash命令行操作:右键点击Git Bash Here菜单,打开git命令窗口,不是c ...

随机推荐

  1. 希尔伯特矩阵(Hilbert matrix)

    例: [ 1 1/2 1/3  1/2 1/3 1/4  1/3 1/4 1/5 ]   矩阵的一种,其元素A(i,j)=1/(i+j-1),i,j分别为其行标和列标. 即: [1,1/2,1/3,- ...

  2. java基础-泛型3

    浏览以下内容前,请点击并阅读 声明 8 类型擦除 为实现泛型,java编译器进行如下操作进行类型擦除: 如果类型参数有限制则替换为限制的类型,如果没有则替换为Object类,变成普通的类,接口和方法. ...

  3. Linux内核笔记--深入理解文件描述符

    内核版本:linux-2.6.11 文件描述符(file descriptor)在Linux编程里随处可见,设备读写.网络通信.进程通信,fd可谓是关键中的关键. 深入理解可以增加我们使用它的信心. ...

  4. [VijosP1764]Dual Matrices 题解

    题目大意: 一个N行M列的二维矩阵,矩阵的每个位置上是一个绝对值不超过1000的整数.你需要找到两个不相交的A*B的连续子矩形,使得这两个矩形包含的元素之和尽量大. 思路: 预处理,n2时间算出每个点 ...

  5. Github初学者教程(一)

    如果你是一名程序员,或者是相关专业的学生,那么Github你不应不知道.很多开源组织和大神,会选择在Github这个平台上,发布他们的开源项目,学会使用Github将能够给你的学习和工作带来巨大帮助! ...

  6. PHP_SELF、 SCRIPT_NAME、 REQUEST_URI区别

    $_SERVER[PHP_SELF], $_SERVER[SCRIPT_NAME], $_SERVER['REQUEST_URI'] 在用法上是非常相似的,他们返回的都是与当前正在使用的页面地址有关的 ...

  7. 【BZOJ】4056: [Ctsc2015]shallot

    题意 在线.可持久化地维护一条二维平面上的折线,支持查询与任意一条直线的交点个数. 点的个数和操作个数小于\(10^5\) 分析 一条折线可以用一个序列表示,可持久化序列考虑用可持久化treap. 如 ...

  8. JDBC驱动自身问题引发的FullGC

    公众号HelloJava刊出一篇<MySQL Statement cancellation timer 故障排查分享>,作者的某服务的线上机器报 502(502是 nginx 做后端健康检 ...

  9. jQuery extend扩展String原型

    jQuery.extend(String.prototype, { isPositiveInteger:function(){ return (new RegExp(/^[1-9]\d*$/).tes ...

  10. webform 上传

    要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.value.le ...