文档章节

Git常用配置技巧

HonglingHe
 HonglingHe
发布于 2016/02/16 22:06
字数 1682
阅读 83
收藏 0
点赞 1
评论 0

Git简介

Git是一种分布式的源代码管理工具

SVN和git对比

  1. 在很多情况下,git的速度远远大于SVN
  2. SVN是集中式管理,git是分布式管理
  3. SVN使用分支比较笨拙,git可以轻松创建无限个分支
  4. SVN必须联网才可以使用,git支持本地版本控制工作

集中式(左)和分布式(右)

SVN工作流程:

svn工作流程

git工作流程:

Paste_Image.png

Git工作原理

几个核心概念: 工作区(working Directory):仓库文件夹里除了.git目录以外的内容 版本库(Respository):.git目录,用于存储记录版本信息 暂缓区(Stage):临时存放文件的目录 分支(master):git自动创建的第一个分支 HEAD指针:用于指向当前分支

工作区->暂缓区

暂缓区->本地仓库

git服务器搭建

可以使用github或者oschina作为远程仓库 git远程仓库的配置:

  1. github主页->setting->SSH keys->按照步骤进行SSH key配置

Git命令

reset :版本回退

git reset --hard HEAD // 回到最新版本
git reset --hard HEAD^ // 回到上一版本
git reset --hard HEAD^数字n // 回到上n版本
git reset --hard 版本号前七位 // 回到特定版本
注:版本号可以使用git log 或者 git reflog来进行查看
 git help    : git指令帮助手册
 git config  : git配置信息相关
 git status  : 查看文件状态
 git log     : 查看仓库的所有修改记录
 git reflog  : 查看本地仓库的记录
 git diff    : 查看文件最新改动的地方
 git init    : 初始化一个空的本地仓库,生成一个.git目录
 git add     : 将工作区某文件保存到暂缓区
 git commit  : 将暂缓区文件提交到当前的分支
 git reset   : 版本回退(最好添加--hard参数,强制回退)
 git rm      : 删除文件
 git clone   : 下载远程仓库到本地
 git pull    : 下载远程仓库的最新信息到本地仓库
 git push    : 将本地的仓库信息推送到远程仓库

Git配置

初始化本地仓库

git init // 创建一个空的本地仓库
git config --global user.name henry // 配置全局用户名
git config --global user.email henry725@qq.com // 配置全局邮箱
注意:--global为全局参数,对应的配置文件位置为/users/henry/.gitconfig
若不加此参数,则配置只对当前仓库有效

添加文件并进行提交

cd <工作目录>
git status // 查看文件状态
git add main.c // 将文件添加到暂缓区
git commit -m"第一次初始化" // 将文件从暂缓区移动到本地仓库

创建远端仓库

1. 项目经理创建远程仓库
   git init --bare /Users/Henry/Desktop/Remote
   注意:这个仓库仅仅是用于管理代码,不参与开发,后续操作全部在本地仓库进行
2. clone远程仓库到本地
   git clone /Users/Henry/Desktop/Remote /Users/Henry/Desktop/Henry/Remote
3. 配置.gitignore文件
   cd /Users/Henry/Desktop/Henry // .gitignore文件夹必须和.git文件夹同级
   touch .gitignore && open .gitignore // 创建并打开.gitignore文件,
   // 复制https://github.com/github/gitignore/blob/master/Objective-C.gitignore上的内容到文件
   git add .gitignore // 添加暂缓区
   git commit -m"添加gitignore" // 提交到本地仓库
4. 使用Xcode建立项目到Henry/Remote文件夹,此时Git选项应该为不可用状态
5. 项目经理初始化iOS项目,并在xcode中进行commit和push到远端服务器
6. 成员从远端服务器进行clone项目
   cd /Users/Henry/Desktop/Roger
   git clone /Users/Henry/Desktop/Remote

新人服务器的搭建

1. 搭建新人远端服务器(FreshmanRemote) // 创建远端仓库
2. Source Control ->Remote->Configremote->Remotes->add=>FreshmanRemote
3. 从Remote  pull最新代码
4. Push最新代码到FreshmanRemote
5. 新人从FreshmanRemote中进行clone

开发中的分支管理

模拟SVN中trunk、tags、branches管理
1. 版本开发至V1.0,PM进行备份
   git tag -a V1.0 -m"V1.0版本" // 本地添加标签
   git push --tags // 将标签上传
2. 版本继续开发V2.0
3. V1.0发现bug,建立分支进行修复
   git branch bugfix // Roger建立分支
   git checkout bugfix // 切换至分支,这两句可简化为 git checkout -b bugfix
   git reset --hard V1.0 // 分支中回到待修复版本
   /**修复bug,修复完成后commit&push*/
4. PM确认bug修复结果
   git branch -a // pull后显示全部branch
   git checkout bugfix // 切换到bugfix
   git tag -a V1.1 -m"V1.0的bug修复版" // 备份完成修复后的版本
   git push --tags // 上传tag
   git checkout master //切换至master分支
   git merge bugfix -m"合并V1.1到主线"
   git branch -d bugfix // 删除分支
   git branch -r -d origin/bugfix // 删除远程分支

SSH公钥设置

在Github或者OSChina中,可以通过设置SSH Key进行免密码安全连接,设置方法类似,基本步骤如下:
1. 查看是否已经存在公钥和私钥
   ls -al ~/.ssh // 如果存在一对密钥(xx_rsa、xx_rsa.pub),则可进行操作2;如果不存在,进行操作3
2. 添加一个存在的SSH key到ssh客户端
   eval "$(ssh-agent -s)" // 后台启动ssh客户端
   ssh-add ~/.ssh/id_rsa  // 添加id_rsa到ssh客户端
3. 生成一个SSH key
   ssh-keygen -t rsa -b 4096 -C "henry725@qq.com" // "-t rsa"为密钥的加密类型,还可以为dsa;-C为注释文字;邮箱可以不是github的注册邮箱
   Enter passphrase (empty for no passphrase):    // 输入密钥文件授权密码
   Enter same passphrase again:    // 确认密钥文件授权密码
   Your identification has been saved in /Users/faner/.ssh/id_rsa.
   Your public key has been saved in /Users/faner/.ssh/id_rsa.pub.
   The key fingerprint is:
4. 将SSH key添加到Github或者OSChina
   pbcopy < ~/.ssh/id_rsa.pub // 拷贝公钥中的内容
   添加公钥,Title只是便于自己区分的标题
   Github:https://github.com/settings/ssh
   OSChina:http://git.oschina.net/profile/sshkeys
5. 测试公钥
   Github : ssh -T git@github.com
   OSChina : ssh -T git@git.oschina.net

代码同时保存在Github和OSChina中

实现方法是给本地仓库添加两个Remote,分别进行push操作.
1. OSChina上建立空仓库,复制SSH地址
2. 为本地项目添加远端仓库
   cd Henry // 进入项目文件夹
   git remote -v // 查看远程地址
   git remote add osc  https://git.oschina.net/ipvb/iBurnMgr.git // 给项目添加远端仓库
   git push osc --mirror // 将本地仓库镜像到OSChina
3. 修改后的文件同时提交
   git push origin // push到github
   git push osc // push到OSChina

Xcode中对git的支持

  • 反悔操作 1. 未commit 丢弃所有文件的修改: Source Control -> Discard All changes 丢弃部分文件的修改: View ->Version Editor -> Show Comparison View -> 点击不同点 -> Discard Change 2.已经commit git reset

附录

© 著作权归作者所有

共有 人打赏支持
HonglingHe
粉丝 0
博文 2
码字总数 2675
作品 0
合肥
Git 学习看这篇就够了!

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 可能新手会问“git和github有什么关系啊?” git是一个版本控制工具; github是一个用git做版本控...

Michaelyn ⋅ 2016/12/26 ⋅ 0

13 个 Git 技巧献给 Git 13 岁生日

这 13 个 Git 技巧将使你的版本控制技能 +1、+1、+1…… Git 是一个分布式版本控制系统,它已经成为开源世界中源代码控制的默认工具,在 4 月 7 日这天,它 13 岁了。使用 Git 令人沮丧的事情...

作者: John Sj Anderson ⋅ 04/20 ⋅ 0

git文章列表

关于gitlab默认clone协议 Git实现从本地添加项目到远程仓库 翻翻git之---一个简单的标签控件 LabelView (随手发了两张小宝宝的玩耍照) Git 项目推荐 | Java 版微信普通号机器人 翻翻git之---...

d_watson ⋅ 2016/04/20 ⋅ 0

As与gradle技巧

Android 开发—— 小工具,大效率 首先申明下,此 Hugo 非 彼 Hugo(Hugo 是由 Go 语言实现的静态网站生成器)。本文主要介绍几种比较 nice 的插件和工具,有利于改善代码质量及效率提高。 ...

掘金官方 ⋅ 2017/12/21 ⋅ 0

【IDE】eclipse与Idea

前言 工欲善其事必先利其器,今天来梳理一下IDE的学习,此篇博客中实用性的知识比较少,主要是梳理学习一个新IDE的思路。以至于接触新东西时手忙脚乱。 (一) Idea:参考《Intellij+IDEA2017...

binggetong ⋅ 05/07 ⋅ 0

提高 Vim 使用效率的 12 个技巧

本文由伯乐在线 -Alick 翻译,黄利民 校稿。未经许可,禁止转载! 英文出处:sheerun。欢迎加入翻译组。 1. 使用空格键做为Leader(热键) 是个非常有创意的设计,通过不同按键的顺序操作可以...

伯乐在线 ⋅ 2015/06/12 ⋅ 0

jQuery

前端基础进阶:全方位详细图解面向对象、构造函数、原型与原型链 这是一篇非常适合新手理解关于面向对象一切的文章,解答了为什么我们会使用构造函数与原型,构造函数与原型的本质以及 new ...

掘金官方 ⋅ 01/08 ⋅ 0

Git使用基础篇

Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分...

YOTOO ⋅ 2014/08/14 ⋅ 0

版本控制使用git比svn更有优势

Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分...

大道至精 ⋅ 2014/11/13 ⋅ 2

Git---基础(转)

Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版本控制工具可以对开发产生如此之多的影响,文章分为...

hensen_hhc ⋅ 2012/01/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

线程池

一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。 二、线程池的体系结构: java.util.concurrent.Executor : 负责线程的使用...

stars永恒 ⋅ 25分钟前 ⋅ 0

你值5K还是15K?实战案例,测测你的分析功力

本文源自陈老师遇到的真实案例。 老板说:“我们今年准备参加展会,做一年。以前我没参加过,没关系,这里有一份展会数据,你回去分析下哪些有价值,后边组织的时候有个指导”。现在你收到任...

加米谷大数据 ⋅ 27分钟前 ⋅ 0

中文转英文功能

package com.sysware.task.util;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.for......

AK灬 ⋅ 27分钟前 ⋅ 0

JNI Java层类关联C/C++层的类

Android开发时,因为要实现某某功能,需要集成算法公司的算法库(so库),这就需要自己编写JNI。 通常这些库提供的接口可以概况成1、初始化 2、算法处理 3、释放 4、打印版本号 初始化后会返...

国仔饼 ⋅ 31分钟前 ⋅ 0

maven下载jar包改为阿里云的maven库

一:修改maven安装路径中conf文件夹下的setting.xml文件 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/......

夜醒者 ⋅ 31分钟前 ⋅ 0

电商用户行为分析大数据平台相关系列10-基础数据结构分析

电商用户行为分析大数据平台相关系列1-环境介绍 电商用户行为分析大数据平台相关系列2-HADOOP环境搭建 电商用户行为分析大数据平台相关系列3-HIVE安装 电商用户行为分析大数据平台相关系列4...

xiaomin0322 ⋅ 32分钟前 ⋅ 0

使用readLine()方法遇到的坑

下午玩 TCP/IP 的 Socket 通信时,使用 BufferedReader 的 readLine() 遇到了一个坑,现在终于解决了,特此记录下来。 程序很简单,客户段从控制台读取用户输入,然后发送至服务器端,主要代...

孟飞阳 ⋅ 32分钟前 ⋅ 0

基于Hadoop集群的Hive安装配置(Derby数据库)

Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据,提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行(具体的Hive架构大家自行搜索)。接下来主要讲下Hadoop集群下...

海岸线的曙光 ⋅ 33分钟前 ⋅ 0

CoreOS裸机iso安装和相关配置

裸机通过iso安装CoreOS,个人趟了很多坑,以下就是完整的从零开始部署和配置的过程,希望对大家有用。 一、安装CoreOS到硬盘 1. 准备Live iso镜像,制作好usb启动盘 Live iso下载地址 2. 搭建...

ykbj ⋅ 38分钟前 ⋅ 0

jquery控制表格锁列(转)

表格已经完成后新加的需求,要实现锁表格的第一列。很多带这种效果的都是js封装的框架或者具体某种框架的组件,不适用解决当前问题。作为后端开发又实在不熟样式,搜到了一个可以用的,虽然样...

刘昌鑫 ⋅ 40分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部