GIT

一、GIT简介

  项目开发离不开版本控制,目前使用频率最高的两个版本控制工具分别是 SVN 和 GIT,前者是集中式,后者是分布式。

  集中式是指版本库存在于中央服务器中,使用者通过网络从中央服务器迁出和提交版本,一旦中央服务器出现故障,则会严重影响开发进度。

  分布式是指版本库实质上存在于每个使用者的机器中,本地都有一份完整的版本库,平时开发时向本地服务器迁出和提交,所以速度很快,然后在合适的时机向其它使用者推送修改,以达成同步。注意,此方式一般也有一个中央服务器,但该中央服务器的作用在于方便同步修改,更是一种锦上添花的效果。

  因为分布式产生的年代迟于集中式,吸取了一些经验和独有的设计,所以整体上是明显估于后者的,比较重要的优点如下:

  1、中央服务器的磁盘损坏并不会使项目遭受噩梦般的损失。
  2、平时操作都是跟本地服务器交互,所以速度很快,没有网络时工作也不受影响
  3、强大的分支系统

二、GIT趣事

  1、GIT的诞生

  Linus 在 1991年创建了开源的LINUX后,由全世界的开发者一起维护,由于Linus反对集中式的版本控制系统,所以刚开始是大家通过 diff 的方式发送给Linus,由其手动合并 。后来有一家名为 BitKeeper 的分布式版本控制系统厂商,愿意免费授权给LINUX社区使用,但好景不长,LINIX社区内有人试图破解其协议,使得 BitKeeper 非常愤怒并收回了LINUX社区的免费使用权,接下来——Linus 花了两周时间自己写了一个分布式版本控制工具,名为GIT。

  2、GIT的名字

  原本有一个软件已经叫GIT(GNU Interactive Tools),所以Linus的这个分布式版本控制工具就只能叫 git-core,但后来可能是因为 git-core 更有地位,原本的 git 改名为 gnuit,而 git-core 正名为 git。(注:Linus 的 GIT 意为 The stupid content tracker, 傻瓜内容跟踪器)

三、GIT安装与配置

  Linux下,通过包管理工具安装即可;Windows下,因为git是专为LINUX开发的,所以需要安装带有Unix环境的 msysgit,下载地址:http://msysgit.github.io/

  GIT 的配置文件存在于三个地方:

/etc/gitconfig    //--sysstem
~/.gitconfig    //--global
.git/config        //当前项目目录下    

  1、设置名称和邮箱

git config --global user.name "MyName"
git config --global user.email "email@xxx.com"
//注:使用 --system 表示读写的是 /etc/gitconfig 文件; 使用 --global 表示读写的是 ~/.gitconfig 文件;都不使用表示读写的是当前项目的 .git 目录下的 config 文件。

  2、设置忽略文件后缀

  Windows下,在仓库目录中右键选择 "Git Bash",然后 vim .gitignore 编辑即可:

*.svn
*.d
server

  Linux 下,直接在项目根目录下新建上述的 .gitignore 文件即可。  

  或者编辑项目根目录下的 .git 文件夹下的 config 文件进行配置。

  3、获取帮助

  git help
  git help config
  man git-config
  git config --help

 

四、开始

  在一个现有项目中使用 git 管理,只需要到此项目目录下执行以下命令即可:

git init

   如果要克隆一个现在有的GIT管理的项目,可以使用 git clone 命令,它会把该项目的GIT仓库复制一份出来,如:

git clone git://github.com/schacon/grit.git

  如果想将克隆出来的项目自定义目录名称,只要在命令末尾加上新的名字即可。

git clone git://github.com/schacon/grit.git ruby

  GIT支持 git:// 协议和 https:// 协议,前者更好。

  GIT有三个区域:工作区域、暂存区域(staged area)和本地仓库。一般编辑区域先保存到暂存区域,再把暂存区域提交到本地仓库。

六、常用命令

  git add  //把目标文件快照放入暂存区
  git diff  //比较未暂存文件和已暂存文件的差异
  git diff --staged  //查看暂存区中文件和上次提交的快照之间的差异
  git commit -m "commit"   //将暂存区的文件提交到本地仓库
  git commit -a -m "commit"   //跳过添加到暂存区的步骤,将工作区域的文件直接暂存并提交。
  git rm  //从工作区域和暂存区中同时删除
  git rm --staged  //仅从暂存区删除,保留工作区域中的文件,如不小心纳入版本库中的 log 文件等。
  git mv oldname newname  //相当于运行了三条命令: mv oldname newname && git rm oldname && git add newname
  git log  //查看提交历史,如果希望显示简洁日志,可以使用 git log --pretty=oneline
  git reset --hard HEAD^    //回退到上一个版本,或者直接 git reset --hard commit_id
  git reflog    //记录每一次命令
  git checkout  //撤销修改,如果修改后被存入暂存区,则撤销为暂存区一样;若修改后没有存入暂存区,则撤销为版本库一样

 

七、远程仓库管理

  以 github 为例,学习一下远程仓库的使用方法。

  1、注册一个 github 帐号。

  2、由于本地的 git 仓库与 github 的仓库之间的传输是通过 ssh 加密的,所以需要在本地创建 ssh key,并把公钥上传到 github。创建 ssh key 步骤如下。

    ①  查看 ~/.ssh/ 目录下是否存在 id_rsa 和 id_rsa.pub ,如果有,说明已经创建好了,下面不再继续,直接上传 id_rsa.pub 到 github 即可,如果没有,则使用命令 ssh-keygen -t rsa 进行创建,创建过程中提示输入密码,可以略过使用空密码即可。

    ②  登陆 github ,帐号设置里有一个 Add SSH Key 选项页,填写任意的 title,然后将 id_rsa.pub 中的内容粘贴到 Key 输入文本框中,确认即可。

  3、在 github 上创建一个空仓库,取名为 test ,注意在 github 上免费托管的 git 仓库任何人都可以看到,如果想变成私有的要付费。创建好的仓库会提供三个地址,分别是 git、https 和 Subversion 的。

  4、把本地已有的一个仓库与远征仓库进行关联。进行一个本地仓库,运行以下命令即可。(注意 origin 是为远程仓库命名,可以随意修改,但 origin 是 git 中约定俗成的叫法。)

git remote add origin git@github.com:your_github_name/test.git

  5、第一次将本地仓库所有内容推送到远程库上

git push -u origin master

   6、以后只要本地仓库做了修改,推送就可以直接使用以下命令:

git push origin master

   7、在其它机器上,通过如下命令克隆远程库即可(同样需要将该机器的公钥上传到 github):

git clone git@github.com:your_github_name/test.git

  8、git pull

  9、git remote -v

八、分支

  1、创建分支
  git branch branch1    //创建分支branch1
  git checkout -b branch1  //创建分支并切换到该分支,相当于 git branch branch1 && checkout branch1

  2、查看分支   git branch  //显示分支列表,当前分支前面会用 * 表示

  3、切换分支   git checkout master  //切换到 master 分支

  4、删除分支   git branch -d branch1  //删除 branch1 分支

  5、合并分支   git merge branch1  //合并 branch1 分支到当前分支。如果合并分支出现冲突,则需要解决冲突。在执行过 git merge 命令之后,有冲突的文件,会被修改成混合文件,直接编辑修改好后,再通过 git add 和 git commit 提交即可。(通过 git log --graph 可以查看分支合并图)

  6、挂起当前分支   git stash
  
7、查看挂起的分支   git stash list
  
8、恢复挂起分支   git stash pop          //恢复上一个挂起的分支   git stash apply stash@{0}   //恢复指定的挂起的分支,指定的名称,从 git stash list 中获取

unity使用git:

http://www.cnblogs.com/silence250627170/p/3819042.html

原文地址:https://www.cnblogs.com/tianyajuanke/p/4530050.html