在介绍git之前先来介绍一下版本控制系统。
版本控制系统分两种:集中式、分布式。
集中式:集中式版本控制系统,版本库是集中存放在中央服务器的,而工作的时候用的都是自己的电脑,所有要先从中央服务器取得最新的版本,然后开始干活,干完活后,再把自己的干完的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完后,再放回到图书馆。
缺点:必须得联网时才能工作,自己电脑上没有服务器,只能请求网上的服务器获得资源。常用的有SVN。
分布式:分布事版本控制系统没有中央服务器,每一个电脑上都是一个完整的版本库,工作的时候都不需要联网当两个或者两个以上的人分别修改了不同的文件的时候,只需要把各自修改的内容推送给对方即可,就互相看到对方的修改了。安全性高,只要有一台电脑没有坏,就能重新得到完整的版本库,不会跟集中式的一样,中央服务器炸了就什么都没有了。
接下来我们来介绍一下git,git是一款开源的分布是版本控制工具,在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的。git的作者是Linux之父(Linus Benedict Torvalds),当初开发git的时候仅仅是为了辅助Linux内核的开发(管理源代码)。git在国外已经非常普及了,但是在国内还在普及中。现在已经有越来越多的开源项目转移到了git上面。常见的是github,国内是oschina。
首先,我们先打开终端,在终端输入:cd /Users/empty/Desktop/git(把你要进入的文件夹拖进去,路劲就能自己出来),然后敲击回车,就能进入到这个目录下面。进入文件后,在终端输入:git init 敲击回车,这样就创建好了代码仓库。
从上面的图片可以看出,已经创建了一个空的代码仓库。这个时候,点开git文件夹是看不到东西的,因为.git是隐藏文件,看不到的,要看的话需要让隐藏文件显示出来,在终端输入:defaults write com.apple.finder AppleShowAllFiles -bool true 敲击回车之后,按住optional+command+Esc,然后把Finder重启下,再次打开git文件夹,就能看到隐藏的文件了。接下来我们就需要给git仓库配置一个用户名和邮箱了,在终端输入:git config user.name "你的用户名" 敲击回车,如果什么都没有跳出来那就对了,说明已经配置进去了,然后再输入:git config user.email "你的邮箱" 一样,也是敲击回车,还是什么都没有跳出来,接下来进入到git文件夹里面,找到config,打开它就能看到你刚刚输入的用户名信息和邮箱了。
回到我们的终端,确保进入的是git的文件夹,然后我们要创建一点东西,在终端输入:touch main.m,然后打开它,输入:open main.m,进入到main.m里面,在里面随便输入一点东西,保存一下关闭。在终端输入:git status,敲回车,我们可以看到有一个红色的main.h,这是因为没有添加到暂缓区内,所以我们需要把mian.m给添加到暂缓区,在终端输入:git add main.m,敲击回车后我们再次输入git status,敲击回车,我们看到的main.m就变成了绿色,不再是红色的了,还出现了一句英文"Changes to be committed",这就说明已经把代码添加到了暂缓区了。然后我们需要把代码提交上去,在终端输入:git commit -m "修改内容的介绍",敲击回车之后就把暂缓区的所有内容提交到当前分支了。
// 查看历史版本,git版本号是由sha1(加密算法)生成的一个40位的哈希值 git log git reflog // 终端输入这个代码敲击回车后用git lg查看,就能看到有色彩的历史版本 "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" // 使用下面回退版本的方法,需要多次修改mian.m文件的内容,并且添加并提交 // 回到当前版本,放弃所有没有提交的修改 git reset --hard HEAD // 回到上一个版本 git reset --hard HEAD^ // 回到之前第3个修订版本 git reset --hard HEAD~3 // 回到指定版本号的版本 git reset --hard e695b67(版本号前七位) // 查看分支引用记录 git reflog
配置全局用户名和邮箱
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
github
熟悉了一下如何使用git的基本用法之后我们需要来学习一下如何使用github,首先我们需要进入到github的官网:https://github.com,如果你还没有账号,那么就需要注册一个账号了,注册完毕后,可以进入github的官网,可以看到右上角有一个+号,点击加号然后点击New repository,就会进入到我们创建项目的页面。不要点击下面的New organization,那是创建团队的。
按照上面这张图,全部填写完毕之后,就算是创建好了一个仓库,接下来我们就需要把我们的钥匙添加到github上面。点击网页右上角你的头像,然后点击Settings。
然后点击SSH keys,如果你已经有看key那就不需要再次创建,如果没有key,那么就打开终端,SSH是一种传输代码的方法,速度快又安全。SSH
是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在终端中输入 ssh-keygen -t rsa -C "你注册账号时用的邮箱",敲击回车, 使用该命令之后, 会出现提示选择
ssh-key
生成路径, 这里直接点回车默认即可, 生成的ssh-key在
默认路径中,这里我们不使用密码进行登录, 用密码太麻烦,就一路回车下去如果你看到下图的效果,说明已经生成完毕了。
生成好key之后,在mac os X
下前往文件夹,/Users/自己电脑用户名/.ssh,然后用记事本打开
id_rsa.pub
,将里面的全部代码复制,回到网页,点击New SSH keys,黏贴你的key,并取名字,然后创建,这样就添加好了一个keys。
如果你是iOS的程序员,那么就继续听完,打开Xcode,command+逗号,进入偏好设置,然后点击Accounts,在左下角点击那个+号,选择Add Repository.. , 在Address输入你之前创建的项目的网址,在UserName填写你的github用户名,Password写你的github的密码,好了之后我们点击Add,如果密码正确,我们就添加完了。然后关闭Xcode,再次打开,不要点击create a new Xcode project,选择Check out an existing project,然后选择你刚才创建的地址,点击next,选择你要放置的文件夹,然后一路回车到底就好了。
修改完毕后,你想提交,那么可以在Xcode里面提交,也可以在终端提交,Xcode提交很简单,找到最上面的那条,选择Source Control,里面有commit push pull,选择commit的时候可以勾选push,就可以直接提交了,不过用Xcode不太好,个人喜欢用终端传。
// 将本地传送至github git remote add origin https://github.com/yourname/test.git git push -u origin master // 从现有仓库克隆 git clone git://github.com/yourname/test.git git clone git://github.com/yourname/grit.git mypro#克隆到自定义文件夹 git add *#跟踪新文件 rm *&git rm *#移除文件 git rm -f *#移除文件 git rm --cached *#取消跟踪 git mv file_from file_to#重命名跟踪文件 git log#查看提交记录 git commit#提交更新 git commit -m 'message' git commit -a#跳过使用暂存区域,把所有已经跟踪过的文件暂存起来一并提交 git commit --amend#修改最后一次提交 git reset HEAD *#取消已经暂存的文件 git checkout -- file#取消对文件的修改(从暂存区去除file) git checkout branch|tag|commit -- file_name#从仓库取出file覆盖当前分支 git checkout -- .#从暂存区去除文件覆盖工作区 git branch#列出本地分支 git branch -r#列出远端分支 git branch -a#列出所有分支 git branch -v#查看各个分支最后一个提交对象的信息 git branch --merge#查看已经合并到当前分支的分支 git branch --no-merge#查看为合并到当前分支的分支 git branch test#新建test分支 git checkout test#切换到test分支 git checkout -b test#新建+切换到test分支 git checkout -b test dev#基于dev新建test分支,并切换 git branch -d test#删除test分支 git branch -D test#强制删除test分支 git merge test#将test分支合并到当前分支 git rebase master#将master分之上超前的提交,变基到当前分支