开发工具链-git(github)核心教程

10 篇文章 1 订阅
1 篇文章 0 订阅

一、git简介


概述

官网

git是先进的分布式版本控制系统,有没有网都可以工作,相对svn来说更方便、数据更不易丢失。

参考文献

廖雪峰git教程 Git教程 GIT官方文档

二、git安装


Mac OS X上安装git

1.方法一:通过homebrew安装git (使用 Homebrew 可以安装 Apple 没有预装但你需要的东西)
安装brew:$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
安装git: $ brew install git
具体方法请参考homebrew的文档:http://brew.sh/

2.方法二:安装xcode
从AppStore安装Xcode,Xcode集成了Git,xcode主要用于mac和ios app开发,占用空间比较大。只用git的话,推荐方法一。

Linux上安装git

在 Fedora 上用 yum 安装:
$ yum install git-core

在 Ubuntu 这类 Debian 体系的系统上,可以用 apt-get 安装:
$ apt-get install git

Windows上安装Git

下载git: https://git-scm.com/downloads
安装:初学者选择默认选项,一路next到安装结束即可

三、命令行使用git


创建版本库

在这里插入图片描述
1.创建一个空目录:
$ mkdir gittest
$ cd gittest

pwd命令用于显示当前目录(这个蛮常用的)
注意:为了避免遇到各种莫名其妙的问题,请确保目录名不包含中文
 
2.通过git init命令把这个目录变成Git可以管理的仓库
$ git init

这是创建版本库的核心命令,它其实新建了一个隐藏的git目录,ls -ah命令可以显示这个隐藏的.git目录

添加文件到版本库

首先确保文件已在gittest(版本库目录)中,另外强烈建议使用标准的UTF-8编码。
1.用命令git add告诉Git,把文件添加到仓库
$ git add gitAddHelloWorld.txt

“没有消息就是好消息”,说明添加成功。

2.用命令git commit告诉Git,把文件提交到仓库,引号中是本次版本注释说明,建议注释简明扼要,方便查找。
$ git commit -m “这里写的是注释:git add demo”

删除文件

用命令git rm删掉,并且git commit:
git rm <filename>
git commit -m “删除原因”
误删可用git checkout 还原(见下文)

检出文件

git checkout – <fileName>
该命令其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master

查看状态

查看仓库状态:
git status
查看文件修改状态:
$ git diff gitAddHelloworld.txt

查看记录

查看历史版本记录:
git log 命令显示从最近到最远的提交日志
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数
$ git log --pretty=oneline
查看命令记录:
$ git reflog

回退版本

回退到最近版本:HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,上n个版本,可以简写成HEAD~n。
$ git reset --hard HEAD^
根据版本号commit id回退:
$ git reset --hard <commit id前几位>

还原单个文件:

git reset HEAD <file> ,它可以把暂存区的修改撤销掉(unstage),重新放回工作区

 

远程仓库(github)


GitHub是提供Git仓库托管服务的网站,注册一个GitHub账号,就可以免费获得Git远程仓库。

克隆仓库

本地仓库克隆:
git clone /path/to/repository
远程仓库克隆:
git clone username@host:/path/to/repository
例如:$ git clone https://github.com/jquery/jquery.git
该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。
$ git clone <版本库的网址> <本地目录名>

推送改动

关联一个远程库:
git remote add origin git@server-name:path/repo-name.git
第一次推送master分支的所有内容:
git push -u origin master
此后,每次本地提交后,推送最新修改到远程库:
git push origin master

分支(多人协作)

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是"默认的"分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

在这里插入图片描述
1.创建分支
创建一个叫做"leon"的分支,并切换过去:
git checkout -b leon
2.查看分支
git branch
若要查看各个分支最后一个提交对象的信息,运行
git branch -v
要从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用 --merged 和 --no-merged 选项(Git 1.5.6 以上版本)
git branch --merged
3.切换回主分支
git checkout master
4.删除分支
git branch -d leon
5.多人协作
推送分支:除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的,
git push origin
6.获取更新:
git pull 该命令在你的工作目录中获取(fetch) 并 合并(merge) 远端的改动。
7.合并分支:
合并其他分支到你的当前分支(例如 master)
git merge <其他branch>
8.解决冲突:
pull或merge时可能出现冲突,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,需要我们手动修改,解决冲突之后,再提交。
9.预览差异:
在合并改动之前,你可以使用如下命令预览差异
git diff <source_branch> <target_branch>
10.合并情况:
合并完成后可以用带参数的git log也可以看到分支的合并情况
git log --graph --pretty=oneline --abbrev-commit

分支策略

master-dev-personal分支

master分支: 仅用来发布新版本,最稳定;
dev分支: 团队每个人都在dev分支上干活,每个人都有personal分支,时不时地往dev分支上合并就可以了;该分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
pesonal分支(Bob、Michael): 个人分支,因为创建、合并和删除分支非常快,所以Git鼓励使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
在这里插入图片描述
bug分支(保存和恢复工作现场)
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

典型bug修复git流程:

$ git status // 查看当前状态
$ git stash // 保护工作现场
$ git checkout master // 切回到主分支
$ git checkout -b issue-101 // 创建修复bug分支issue-101,开始修复bug
$ git add // bug修复完后,添加和本地提交
$ git commit -m “fix bug 101”

$ git checkout master // 切换到主分区
$ git merge --no-ff -m “merged bug fix 101” issue-101 // 合并bug分支
$ git branch -d issue-001 // 删除bug分支
$ git checkout yourBranck // 切回自己的分支,恢复现场继续工作
$ git stash list // 查看存储的工作现场列表
恢复方式一:git stash pop 恢复的同时把stash内容也删了
恢复方式二:git stash apply 恢复 ,但是恢复后,stash内容并不删除

feature分支

开发一个新feature,最好新建一个分支
如果要丢弃一个没有被合并过的分支,可以通过
git branch -D 强行删除

 

标签管理

  tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起,我们常用作产品发布的版本号。
1.创建标签
git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m “blablabla…” 可以指定标签信息;
git tag -s -m “blablabla…” 可以用PGP签名标签;
git tag可以查看所有标签。
$ git show v0.9 可以查看当前标签信息
2.操作标签
git push origin 可以推送一个本地标签;
git push origin --tags可以推送全部未推送过的本地标签;
git tag -d 可以删除一个本地标签;
git push origin :refs/tags/可以删除一个远程标签。

 

eclipse中使用git


下列将结合github讲解eclipse中使用git, 其他ide中使用git大同小异。

step1: 克隆仓库
新建或搜索一个github远程仓库,复制其url (ssh或https , 这里我们暂时先选择https,ssh之后补充)
在这里插入图片描述

eclipse中打开git资源库,git clone资源库:复制url然后一路next即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里可以选择资源库克隆存放位置

在这里插入图片描述
step2:导入工程
资源库目录/Working Tree -> Import Projects
在这里插入图片描述

在这里插入图片描述

[常见问题] 导入工程出现红叉或叹号

原因分析:markers选项卡其实会说明原因,一般是jdk或server的jar包问题
在这里插入图片描述
解决方案:
右键项目->Build Path->configure build path
将有问题的jar包替换为eclipse已配置的可用的jar包即可
在这里插入图片描述
在这里插入图片描述
step3:体验常见的版本控制功能

  • (1)Add to Index:添加文件到版本库
  • (2)Commit:提交修改本地仓库
  • (3)Push:推送至远程仓库,位置 Push Head 或者 Commit…->Commit and Push
  • (4)pull:拉取远程库
  • (5)synchronize workspace:与本地版本库同步; Advance->sysnchronize:与远程仓库同步
  • (6)reset:回退/还原至某一版本;单个文件还原:右键文件->repalce with -> 相应版本(如Head)
    在这里插入图片描述

后记:个人项目用git, 公司项目用svn, 鱼与熊掌兼得,棒~ :)

Thank you for reading.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值