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

最新文章

  1. Java虚拟机 safepoints 初探
  2. 一&#183;创建Linux服务器(基于阿里云)
  3. native
  4. UVa 10868 (物理) Bungee Jumping
  5. 在CentOS 6.3中安装与配置JDK-7
  6. root用户安装的软件在普通用户不生效
  7. Cocos2d-x实现简单的翻牌效果
  8. FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)
  9. api-gateway实践(02)新服务网关 - 运行环境
  10. Vue学习之路5-v-model指令
  11. (转)Java transient关键字使用小记
  12. Maven配置阿里云镜像仓库
  13. java8新特性(四)_Stream详解
  14. Flash:利用Bitmapdata,ColorTransform,DrawPath,制造绚丽效果
  15. Qt5.9静态库编译VS2015-x64
  16. golang-defer坑的本质
  17. 启用mapredure历史服务器方法
  18. Sametime SDK
  19. Oracle03--子查询
  20. Java实现对Mysql的图片存取操作

热门文章

  1. 【问题记录】—.NetCore 编译问题
  2. SpringMVC的@InitBinder参数转换
  3. 使用Azure静态Web应用部署Blazor Webassembly应用
  4. python使用zlib库压缩图片,使用ffmpeg压缩视频
  5. MySQL连接报错(错误:1130)
  6. Stimulsoft Reports和Dashboards发布新版本2020.5具有多项改进
  7. Java多线程技术:实现多用户服务端Socket通信
  8. “3+3”看华为云FusionInsight如何引领“数据新基建”持续发展
  9. jupyter使用自动补全和切换默认浏览器
  10. android打包持续集成