当前位置: 首页 > news >正文

Git 使用指南

git 是什么?为什么要使用git ? 使用前,先去看看他的简介    Git 简介

Git 操作简介

 

安装  

  windows版本:     Git-1.9.5-preview20150319.exe 

  TortoiseGit32位:TortoiseGit-1.8.14.0-32bit.msi 

  TortoiseGit64位:TortoiseGit-1.8.14.0-64bit.msi

 ps:先安装 Git-1.9.5-preview20150319.exe  再安装小乌龟

安装成功后点开始-git–git bash 打开

 

 

 

打开git bash 默认位置是C盘,每次都要切换到D workspace,这个地方可以自行修改 

   点桌面的快捷方式,右键属性,然后更改启始位置

  

安装完成

 

 

用户名和邮箱配置
        git config --global user.name "wangshoufang"
        git config --global user.email  wangshoufang@jd.com

如果git库地址是http格式,可以设置保存密码
        git config --global credential.helper store

查看自己的所有配置
       git config --list
       less ~/.gitconfig


git 账号密码既自己erp账号密码

 

取得项目的 Git 仓库

有两种取得 Git 项目仓库的方法。 

第一种是从已有的 Git 仓库克隆出一个新的镜像仓库来。

第二种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。 

第一种:

git clone http://source.jd.com/app/tuan_gittest.git
cd tuan_gittest
新开开发分支
git branch my_branch 
切换到开发分支
git checkout my_branch
这两步可以合并成一个命令
git checkout -b my_branch
查看当前所在分支
git branch
查看服务器所有分支
git branch -r

             删除本地分支

             git branch -d  branchName 

             删除远程分支

             git push origin --delete <branchName>

             删除远程tag

             git push origin --delete tag <tagname>



分支切完了,开始干活
先建一个文件练练手 touch doc.txt
然后往里面写点内容 echo "helloworld" >> doc.txt
更改完了就提交呗
提交之前需要把新加的内容添加到index中,有哪些是新加的呢?
一个命令搞定 git status -s
然后添加到索引 git add doc.txt
如果add的内容太多你可以一次性添加所有 git add xxx.txt xxx2.txt xxx3.txt 或者 git add .
添加之后然后提交 git commit -m "add helloworld by wsf" doc.txt
这个地方需要说一下 commit 只是提交到本地的缓存区,并没有提交到真正主干,
你可以在本地commit很多次,然后再提交到主干,提交主干命令 git push origin my_branch

当两个人在同一个分支开发,不免要用到别人写的东西,这个时候你需要更新下别人的代码
git pull 更新别人的代码

代码开发完了要合并trunk ,直接合并trunk?万一有问题怎么办?
解决办法先把trunk 合并到自己的分支上
步骤1: git checkout my_branch
步骤2: git merge master 把主干的分支合并到自己分支,然后测试环境上回归下
测试通过后再合并主干 
git checkout master
git merge my_branch
过程中有可能有冲突,冲突解决完了再提交

上线之前还有一个问题,上线之前把自己合并后的代码打tag
为什么要打tag呢?有可能你上线后发现应用有问题,你准备回滚,但是trunk上也已经修改目前还不能上线,这个时候回滚就麻烦了
如果每次上线之前我们给应用打tag的话,我们就可以拿上次的tag上线
git tag -a tagname 

第二种

              Step1:创建项目

                            mvn archetype:create -DgroupId=com.jd.tuan -DartifactId=web -DarchetypeArtifactId=maven-archetype-webapp

              Step2:初始化项目

                           cd web

                          git init  然后通过 ls -alt  查看会创建一个.git 文件,你的所有操作都会保存在这里面

                          git add . 把当前目录下的所有文件添加索引,有时候你 mvn clean package 之后会生成 target目录,这里面的内容你是不想添加到索引并且提交的,你可以通过 .gitignore 文件类过滤

                          touch .gitignore  然后把过滤你不想添加的内容配置如下: target/  就可以了,git 操作的时候就会忽略里面的内容

                          git commit  -a     第一次提交直接 -a  提交所有

                          最后就是push git 库了,这个时候到git服务器上创建一个git库,并拷贝url

                         git  remote add origin  git库地址   

                         最后 git push origin master       

这个地方提示下:一定在分支下建立一个.gitignore 文件,把编辑器默认生成的.project .setting xxx.iml  target/ 放进去,避免有时候一不小心给提交进去,合并的时候很麻烦并且这些东西跟项目没关系

         

开发过程中的小问题 

查看日志 git log 
美化日志 git log --oneline
git diff HEAD -- doc.txt 当前目录和缓存区的不同

发现自己改的某个文件乱七八糟想重新来怎么办?(未提交到缓存区,之前有提交过,这个过程不可逆)
git checkout -- doc.txt 

git reset HEAD  可以用来清除已经add到缓存区但是不想进一步提交的内容。

git reset –hard HEAD^恢复到上一版本上   (已经提交到分支上)
git reset –hard commitid恢复到某个commitid上面 (已经提交到分支上)

当你恢复到之前版本时,发现回滚错误,使用git log 也没有的时候怎么办?
git reflog 查看所有所有log

问责,查看某个文件的提交人

git blame filename

查看某次提交具体提交的内容

git show commitid            

 git revert HEAD   还原最近一次提交的修改
 git revert commitid 
还原指定版本的修改:

场景:    某天你正在coding,然后xxx领导跑来跟你说,线上有个紧急的bug,你赶紧去把问题给fix掉!这个时候你的第一反应是不是从当前master上面重新切个分支?git checkout -b 20141210_xxx_bug ?

            这个时候会有一个问题的,你刚刚写的内容和这个bug是没关系的,是不想提交的,并且不想带入当前分支的怎么办?                   

git stash暂存未提交的代码  然后切换到master上面重新切分支
git stash pop恢复并且删除stash里面内容
git stash apply stash@{1}恢复但是不删除stash里面内容
git stash drop stash@{1}删除stash里面内容

 

 

### 有写常用的命令可以保存快捷方式

vim ~/.bashrc

alias ll="ls -lt"

source   ~/.bashrc

 

### git log
--oneline单行显示历史信息,包括7位的commit哈希值和注释信息的首行
-数字:显示指定条数的log信息,可以跟任意整数
--graph --all:以图形的方式显示多条分支的历史信息,一般配合--oneline参数执行 
--stat显示每次提交的文件变动列表
-p显示每次文件变动的具体内容 
文件名:显示某个文件的历史变动 
提交范围:显示某一个范围的提交,使用提交的哈希值标识(git log fwj9e8..HEAD 显示从fwj9e8到最新点的信息)

 

  

 

 

### 本地文档查看

git [command] --help

 

### 参考文档

  1.    http://gitbook.liuhui998.com/index.html

 

转载于:https://www.cnblogs.com/Dylanblogs/p/4925180.html

相关文章:

  • Android ndk移植c库libpng
  • struts2拦截器的实现原理及源码剖析
  • 前端代码标准最佳实践:javascript篇
  • Android GPS GPSBasics project hacking
  • Touch Handling in Cocos2D 3.x(一)
  • Tab与TabHost转
  • 路由器设置之五种接入方法
  • jConsole,jvisualvm和jmap使用
  • 创建索引
  • 总结概括对于大数据、高并发的网站如何进行优化的问题
  • NAT
  • javascript设计模式实践之代理模式--图片预加载
  • 数据库开发基本操作-Microsoft SQL Server Management Studio Express下载和安装
  • Extract+datapump+replicat 测试
  • Git 菜鸟变大神 (四)Github 创建远程仓库以及关联本地仓库
  • 自己简单写的 事件订阅机制
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • exports和module.exports
  • Flex布局到底解决了什么问题
  • JavaWeb(学习笔记二)
  • Java知识点总结(JavaIO-打印流)
  • js中的正则表达式入门
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MaxCompute访问TableStore(OTS) 数据
  • mockjs让前端开发独立于后端
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • text-decoration与color属性
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 阿里云前端周刊 - 第 26 期
  • 记录:CentOS7.2配置LNMP环境记录
  • 前言-如何学习区块链
  • 手机端车牌号码键盘的vue组件
  • 我建了一个叫Hello World的项目
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (6)设计一个TimeMap
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (windows2012共享文件夹和防火墙设置
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)WCF的Binding模型
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (译)2019年前端性能优化清单 — 下篇
  • .a文件和.so文件
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net Signalr 使用笔记
  • .net分布式压力测试工具(Beetle.DT)