git学习与应用
git是什么
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目;同类的有svn,如果知道svn是干嘛的(上篇),那么git是啥就不多解释了。
Git 与常用的版本控制工具 CVS, SVN(Subversion) 等不同,它采用了分布式版本库的方式。svn是非分布式的。
那分布式是什么意思呢?下一篇跟进详细了解。这一篇只简单了解下常用的命令等。
########################快速入门#########################
检出仓库(下载仓库中源码) git clone /path/to/repository获取node源码
工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录
,它持有实际文件;第二个是 暂存区(Index)
,它像个缓存区域,临时保存你的改动;最后是 HEAD
,它指向你最后一次提交的结果
常用命令
更改(提交到暂存区):git add <filename> 或者 git add *
提交修改: git commit -m '代码提交的信息' 会提交到head,注意:head不是仓库
推送改动: git push origin master 将改动提交到远端仓库
主干与分支
一般开发代码都是从主干上拉一个分支,完成开发后,再合并到主干上
根据这个流程,我们来看下常用命令
创建分支‘feature_x’,并切换 git checkout -b feature_x
切换回主分支 git checkout master
删除原先分支 git branch -d feature_x
本地的分支在没有push到仓库时,其他人是看不到这个分支的。git push origin <branch>
查看当前分支:git branch
更新与合并
git pull 更新你的本地仓库至最新改动(测试时尤其用的比较多)
git log 查看提交的日志,编号,提交人等信息
git merge <branch> 要合并其他分支到你的当前分支(例如 master)
但是往往不会这么容易就合并成功,很有可能出现冲突,这时候就需要修改这些冲突的文件,修改完后,执行命令git add <filename>
git diff <source_branch> <target_branch> 查看两个版本之间的差异
替换本地改动
git checkout -- <filename>使用如下命令替换掉本地改动.此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。
假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master
测试分支(libingjie/add_tag_impressions_label_v2_2)的流程举例:
1. 从仓库拉取最新代码 git pull
2. 切到提测的分支 git checkout libingjie/add_tag_impressions_label_v2_2
3. 查看最近5次提交的日志 git log -5,获取该分支的编码?
4. 查看某次提交的改动 git show
5. 然后重启下服务sh qa_restart.sh,测试环境就启动你想要的分支,就开始测试吧
#! /bin/bash npm install --registry=http://registry.npm.taobao.org
npm run-script build-lib
gulp imacss
gulp default
if [ `ps aux |grep -i pm2 |grep -v grep |wc -l` -gt 0 ]
then
# web
if [ `pm2 status |grep web |wc -l` -gt 0 ]
then
pm2 reload web
else
pm2 start app.js --name web -i 1 --node-args='--harmony'
fi
# uinfo
if [ `pm2 status |grep uinfo |wc -l` -gt 0 ]
then
pm2 reload uinfo
else
pm2 start user_info_indexer/index.js --name uinfo -i 1 --node-args='--harmony'
fi
else
pm2 start app.js --name web -i 1 --node-args='--harmony'
pm2 start user_info_indexer/index.js --name uinfo -i 1 --node-args='--harmony'
fi
6. 测试过程中,可能需要改开发代码,用以测试。但是这时开发修复bug,并重新提交了代码,那就需要git pull下来验证bug。
问题来了,当你本地代码有修改没有提交时,git pull会报错。又想更新代码,但是又不想把自己修改的代码恢复成修改前。怎么破?git stash 就对了
代码更新后,恢复自己之前修改的内容,git stash pop喽。。。
git stash # save uncommitted changes # pull, edit, etc.
git stash list # list stashed changes in this git
git show stash@{0} # see the last stash
git stash pop # apply last stash and remove it from the list
git stash --help # for more info
git学习与应用的更多相关文章
- Git 学习看这篇就够了!
Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 可能新手会问"git和github有什么关系啊?" git是一个版本控制工具: githu ...
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- git学习之branch分支
作为新手,站在我的角度肤浅的来理解,分支就是相当于开辟了一个新的临时工作区,在这个工作区进行文件代码改动,然后在合并到master主工作区,这样能保证主工作区的安全性和稳定性,对于团队协作尤为重要. ...
- git学习手册
#git学习手册 git: Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.[2] Git 是 Linus Torvalds 为了帮助管理 Linux内核开发而 ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
- Git学习(4)基本操作
1.版本提交 首先,接着上个Git学习(3)继续 我们先修改test.txt文本内容,增加一些信息进去,然后保存: Add a new data 第一步:运行命令 git status 命令查看文件是 ...
- git学习(这个我没有整理,是我不断在学习的过程中,自己总结的,对象是我,不过有问题的,我们可以相互交流)
每次git提交,都会有一个parent指针,指向上一次的commit , 如果合并,master就和hotfix河道一起,就直接删除hotfix就OK 此时,虽然操作一样,大底层实现不一样 ...
- git学习笔记01-git最基本的工作原理分布式
git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 --廖雪峰老师 ...
随机推荐
- AWK实现把一个文件根据内容进行分组输出多个文件
AWK实现把一个文件根据内容进行分组输出多个文件 1.首先准备文件data.txt(分隔符为tab) 第一列省编码,第二列省名称...... 2.将该大文件根据第一列的省编码进行分组并输出到各个省编码 ...
- NB-IoT技术的低成本因素是来源于什么
一套成熟的蜂窝物联网应用体系,涉及NB-IoT芯片.通信模组.UE.运营商网络.数据流量费用.通信协议栈.物联网平台.垂直应用软件.云平台.大数据.工程安装.运营维护等多个方面.对于物联网终端的海量部 ...
- MySQL图形界面客户端
图形界面客户端 使用图形界面客户端操作数据库更直观.方便.下面三个客户端都能操作MySQL,各有各自的优点. 1.Navicat Premium 下载安装包下载 关注公众号[轻松学编程],然后回复[n ...
- html关键字高亮
/** * @id 父节点id * @key 关键字 */ function keyLight(id, key, bgColor){ var oDiv = document.getElementByI ...
- Hash 算法与 Manacher 算法
目录 前言 简单介绍 简述 Hash 冲突 离散化 基本结构 普通 Hash 简述 例题 字符串 Hash 简单介绍 核心思想 基本运算 二维字符串 Hash 例题 兔子与兔子 回文子串的最大长度 后 ...
- 在springmvc.xml中定义全局的异常处理
在Controller类的内部方法上使用@ExceptionHandler,则此类的方法抛出未处理的异常时,回到此方法上处理. @ExceptionHandler可以指定异常的类型,会自动进行匹配 如 ...
- 线程池基本使用和ThreadPoolExecutor核心原理讲解
原文地址:https://www.jianshu.com/p/ec5b8cccd87d java和spring都提供了线程池的框架 java提供的是Executors: spring提供的是Threa ...
- Java自动化测试框架-02 - TestNG之理论到实践
TestNG,即Testing, NextGeneration,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集 ...
- C++函数四( 具有默认参数值的函数)
在C++语言中,可以设置函数形参的默认值,在调用函数时,若明确给出了实参的值,则使用相应实参的值;若没有给出相应实参的值,则使用默认的值.这将为函数调用带来方便和灵活. [示例] #include&l ...
- 【阿里云-大数据】阿里云DataWorks学习视频汇总
阿里云DataWorks学习视频汇总 注意:本文档中引用的视频均来自阿里云官方的帮助文档,本文档仅仅是汇总整理,方便学习. 阿里云DataWorks帮助文档链接:https://help.aliyun ...