Git常用配置技巧
Git常用配置技巧
HonglingHe 发表于2年前
Git常用配置技巧
  • 发表于 2年前
  • 阅读 78
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 本文为作者在使用Git过程中遇到的一些问题的归纳整理,仅作参考笔记只用,所以内容未免繁琐杂乱。建议读者按照自己的需要点击目录进行阅读,以免浪费过多时间

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

附录

共有 人打赏支持
粉丝 0
博文 2
码字总数 2675
×
HonglingHe
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: