git常用操作

git常用操作

git rebase

git checkout bat
git rebase origin #把"bat"分支里的每个提交(commit)取消掉,并且把它们临时 #保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"bat"分支更新
#为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上

git rebase和git merge的区别
merge相当于将双方的修改综合
rebase相当于将对方修改之后,在提交自己的修改,结果一样

git clone 取回远程的所有分支

git clone git@github.com:dolymood/angular-example.git #获取某个远程库
git fetch <远程主机名>  <分支名> #获取全部的分支 如果需要特定分支 可指定分支名
git branch -a #查看所有分支 git branch -a 查看所有分支
git checkout -b newBrach <远程分支> #创建并且切换到新的分支

返回某个文件的某个版本

git log 文件名 #查看某个文件的历史记录 可以加参数-p查看diff   获取commit id
git reset commitid 文件名 #返回该文件的当前的版本,会在缓存区
git checkout 文件名 #返回之前的版本

#可以用git reflog 查看所有的版本信息
#git log --pretty=oneline filename 通过一行查看单个文件的提交情况
#git show commitid 查看该提交id的修改情况
#git log --stat 很好用,只看每次提交的增减

跳转到某个版本

git reflog #查看所有版本信息
git reset --hard commitid #重置到某个特定的版本

删除文件

git rm filename   直接删除文件
git rm --cached filename   删除文件暂存状态

创建分支

git branch develop // 只创建分支
git checkout -b master develop // 创建并切换到 develop 分支

设置 commit 的用户和邮箱

git config user.name "xx"
git config user.email "xx@xx.com"
git config --global color.ui true #git 显示颜色

Git设置

Git的全局设置在~/.gitconfig中,单独设置在project/.git/config下。

忽略设置全局在~/.gitignore_global中,单独设置在project/.gitignore下。

//设置提交的时候是否转换换行符号
git config [--global] core.autocrlf = [true|false|input]
true  : 将crlf转换为lf,而在检出时将crlf转换为lf.
false : 不转换.
input : 提交时将crlf转换成lf,检出时不转换.

git clean 指令

git clean -f #删除未跟踪的文件
  参数n:查看删除哪些文件
  参数x:将gitignore的文件删除,一般不用
  参数d:删除未跟踪的目录

gitignore生效

#中途加进.gitignore的文件或文件夹不会生效
git rm -r --cached .#之前已经在版本管理中了,需要删除本地缓存,在提交
git add .
git commit -m"add"

git add submodule

git submodule add git@github.com:zlxbuzz/gulp.git ./gulp

##删除模块
1 .gitmodules的模块信息
2 git rm –cached gulp

git 更新submodule

#可以写一个submoduleupdate.sh 的脚本
git submodule init
git submodule update
git submodule foreach --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; git checkout $branch'
git submodule foreach --recursive "git submodule update"

echo "Pulling all git submodules..."
git submodule foreach --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; git pull origin $branch'

git blame 查看每行提交

git blame [选项] [版本选项] [版本] [--] 文件
    --incremental         增量式地显示发现的 blame 条目
    -b                    边界提交显示空的 SHA-1(默认:关闭)
    --root                不把根提交作为边界(默认:关闭)
    --show-stats          显示命令消耗统计
    --score-debug         显示判断 blame 条目位移的得分诊断信息
    -f, --show-name       显示原始文件名(默认:自动)
    -n, --show-number     显示原始的行号(默认:关闭)
    -p, --porcelain       显示为一个适合机器读取的格式
    --line-porcelain      为每一行显示机器适用的提交信息
    -c                    使用和 git-annotate 相同的输出模式(默认:关闭)
    -t                    显示原始时间戳(默认:关闭)
    -l                    显示长的SHA1提交号(默认:关闭)
    -s                    隐藏作者名字和时间戳(默认:关闭)
    -e, --show-email      显示作者的邮箱而不是名字(默认:关闭)
    -w                    忽略空白差异
    --minimal             花费额外的循环来找到更好的匹配
    -S <文件>             使用来自 <file> 的修订集而不是调用 git-rev-list
    --contents <文件>     使用 <file> 的内容作为最终的图片
    -C[<得分>]            找到文件内及跨文件的行拷贝
    -M[<得分>]            找到文件内及跨文件的行移动
    -L <n,m>              只处理行范围在 n 和 m 之间的,从 1 开始
    --abbrev[=<n>]        用 <n> 位数字显示 SHA-1 哈希值

git add

用法:git add [选项] [--] <路径规则>...

    -n, --dry-run         演习
    -v, --verbose         冗长输出

    -i, --interactive     交互式拣选
    -p, --patch           交互式挑选数据块
    -e, --edit            编辑当前差异并应用
    -f, --force           允许添加忽略的文件
    -u, --update          更新已跟踪的文件
    -N, --intent-to-add   只记录,该路径稍后再添加
    -A, --all             添加所有改变的已跟踪文件和未跟踪文件
    --ignore-removal      忽略工作区中移除的路径(和 --no-all 相同)
    --refresh             不添加,只刷新索引
    --ignore-errors       跳过因出错不能添加的文件
    --ignore-missing      检查在演习模式下文件(即使不存在)是否被忽略

    git  add .  #新文件+修改的文件
    git  add -u #修改的文件或删除的文件
    git  add -A # 所有新文件和修改的文件,删除的文件

git push

git push origin --delete dev #删除远程分支

git flow

分支使用
master
与线上版本保持同步,代码和功能质量满足实际发布环境需要
不直接接收任何代码commit。
接收来自release、hotfix分支的merge。
版本的tag也在此分支进行定义
develop
接收来自其他功能、特性开发分支(feature)的merge。
feature
具体功能、特性的工作分支族,大部分的commit在此类分支上完成。
完成开发后,分支merge到develop分支,具体feature分支删除。
release
用于版本发布的分支,在确定版本计划后从develop分支建立。
用于版本的测试、问题修复工作,接收bug修复的commit。
完成测试和开发后,分支merge到develop和master分支。
hotfix
用于在master分支发现实际环境中问题进行修复,接收修复commit。
完成后merge回master分支并且merge到develop分支。
master分支需要进行修复版本tag的定义。

git 对比两个tag,并且排除某些目录

 git diff 1.1.1.179...1.1.1.182 -- . ':!dist' ':!lib'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • 获取与创建项目 创建仓库的途径有:在本地已有的目录,初始化一个新的;克隆复制一份别人的项目。 git init 在...
    daking阅读 6,419评论 3 48
  • 常用命令: 查看、添加、提交、删除、找回,重置修改文件 git help # 显示command的help gi...
    even_cheng阅读 259评论 0 2
  • 1)远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquer...
    Jeff_Tsui阅读 329评论 0 0
  • 申明:本文资料是从网络上收集而成,只是单单做为记录,方便日后翻阅。 **初始化操作 ** git config...
    _Justin阅读 467评论 0 0
  • 2017.11.28 星期二 多云 亲子日记(213) 今天早晨一家三口在一块儿吃,还说吃了饭就把学校的饭钱拿着,...
    于泽妈妈阅读 158评论 0 2