文档章节

Git常用配置技巧

HonglingHe
 HonglingHe
发布于 2016/02/16 22:06
字数 1682
阅读 86
收藏 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 12 岁了,为你送上 12 个 Git 的使用技巧!

使用这12个Git的诀窍与技巧来令你的版本控制经验更加有用。 Git,一个分布式版本控制系统,它已经成为了开源世界的源码控制默认工具,在4月7号12岁了。但是使用Git中更另人沮丧的是,你需要了...

Mr_zebra
08/03
0
0
Git 学习看这篇就够了!

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

Michaelyn
2016/12/26
19
0
13 个 Git 技巧献给 Git 13 岁生日

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

作者: John Sj Anderson
04/20
0
0
As与gradle技巧

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

掘金官方
2017/12/21
0
0
git文章列表

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

d_watson
2016/04/20
26
0

没有更多内容

加载失败,请刷新页面

加载更多

Android :报错Your project path contains non-ASCII characters.

报错内容如下 Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See ht......

lanyu96
7分钟前
0
0
[LintCode] Number of Islands(岛屿个数)

描述 给一个01矩阵,求不同的岛屿的个数。 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。 样例 在矩阵: [ [1, 1, 0, 0, 0], [0, 1, 0, 0, ...

honeymose
7分钟前
0
0
Nginx平滑添加模块

Nginx已经编译安装并运行了一段时间, 然后某一天, 发现需要用到某个模块但当初没有编译, 这个时候怎么办呢? 卸载重新安装肯定可以的, 如果Nginx版本没有变更的话, 则有一个相对平滑的方法来添...

老菜鸟0217
12分钟前
1
0
spark安装测试

spark安装测试 由于本地已经安装好hadoop相关组件,所以本文是在yarn的基础上对spark进行安装及测试 确保hdfs及yarn成功启动,hadoop版本为2.7.3 安装scala,由于本人安装的spark是2.4.0,对应...

-九天-
26分钟前
3
0
周末看完了《电能计量自动化技术》

整体质量还行,下面分别将心得记录如下: 第一章:发展历程可以看看,现在算是智能电网阶段 2:讲主站系统。以文件进行各模块的交互很值得思考,尤其是批量数据,多团队合作的情况下。另外线...

max佩恩
46分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部