一,本地仓库
1.安装
在macOS 上安装Git
两种方法:一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/。
第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode默认已经集成了Git。对于做苹果系统开发的同学这步就可以直接跳过,因为Xcode是标配。
Xcode是Apple官方IDE,功能非常强大,是开发Mac和iOS App的必选装备,而且是免费的!
2.配置
安装完成后,还需要最后一步设置,在命令行输入:
$git config --global user.name"Your Name"
$git config --global user.email"email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
3.初始化及第一次提交
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
$git add file1.txt
$git add file2.txt file3.txt
$git commit -m"add 3 files."
第二步,使用命令git commit,完成。
4.提交更改
git status命令可以让我们时刻掌握仓库当前的状态。
git diff这个命令可以查看修改的内容。
5.查看历史提交记录并回退
版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看。
git log命令显示从最近到最远的提交日志。
加上--pretty=oneline参数可以让历史记录只显示一行,凸显提交时留下的信息。
现在,我们要把当前版本回退到上一个版本,就可以使用git reset命令:
$ git reset--hard HEAD^
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
6.撤销向工作区或者版本库的提交
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
7.删除文件
$ git rm 命令可以在工作区删除文件并同步到暂存区,确认删除后用git commit 命令提交到版本库。
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
二,远程仓库
1.在gitHub上创建一个远程仓库并关联到你的本地仓库上
登陆gitHub找到create a new repo,填写项目名称和描述,创建成功
回到命令窗,
git remote add origin https://github.com/yourAccount/yourRepo.git
git push -u origin master
push 命令之后会让你更输入用户名和密码,注意密码输入是不可见的,不要以为是电脑坏了
文件不大的话很快就上传完了,刷新你在gitHub刚才新建的项目页面,本地文件已经躺在列表里了。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
从现在起,只要本地作了提交,就可以通过命令:
$git push origin master 提交了。
2.克隆一个远程仓库
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
$git clone git@github.com:yourAccount/yourRepo.git
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
3.使用分支
首先创建一个分支,然后切换到该分支下:
$git checkout -b 分支名
上面的命令和这两条命令功能一样
$git branch 分支名
$git checkout 分支名
注意,checkout 命令加 --文件名 表示恢复工作区,直接使用表示切换分支
用git branch命令查看当前分支:
$git branch
当你在dev分支开发完后切换回master分支,你需要合并dev分支的内容到master上,使用git merge **命令 ,进而你需要删除分支:git branch -d **
当合并时出现冲突,可以用git status 查看冲突的文件,手动解决冲突后git add后再git commit 提交至版本库
用git log --graph命令可以看到分支合并图。
4.分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
Git分支十分强大,在团队开发中应该充分应用。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
5.暂存分支
有时候你正在攻克一个难题,这时候来了一个优先级更高的事件,你需要放下手中工作去处理这个事件。
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。
用git stash list命令查看之前保存的工作现场,可以多次存储。
需要恢复的时候,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了,pop恢复的是最近的一次保存的内容。
6.删除分支
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D ** 强行删除。
7.查看远程库信息
要查看远程库的信息,用git remote命令,如果加上 -v 选项可以显示详细信息。
详细信息中会有push路径和pull路径,如果只有pull路径,说明你没有推送权限,只能拉取代码。
8.使用标签
创建标签:
命令git tag tagName 就可以打一个新标签,默认这个标签是打在最新的提交版本上。
我们可以使用git tag这个命令来查看当前分之所有的标签。
给之前提交的历史版本打标签可以使用git tag tagName commitID 这样的命令格式。
使用git show tagName 可以显示该标签的详细信息。
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
$git tag -a v0.1 -m "version 0.1 released" 3628164
标签推送到远程:
如果要推送某个标签到远程,使用命令git push origin tagName
或者,一次性推送全部尚未推送到远程的本地标签:
$ git push origin --tags
删除标签:
如果标签打错了,也可以删除:
$git tag -d v0.1
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
$git tag -d v0.9
然后,从远程删除。删除命令也是push,但是格式如下:
$git push origin:refs/tags/v0.9
以上呢就是一些常用的git操作,对于普通用户,基本上已经可以满足你在开发中的大部分需要,如果你想要使用更多的功能,访问git的官网吧,https://git-scm.com/。
本教程部分内容来自网络,原作者拥有最终版权。如果内容侵权请联系我删除。