GIT

 

一、搭建 git 服务器

  在服务器上创建一个目录用于 git 服务根目录,如 /git,然后在该目录下创建游戏目录,如 new_game.git (服务器上的 git 仓库推荐以 .git 结尾),将 new_game.git 初始化为一个裸仓库,并创建一个名为 git 的用户,将 git 根目录所有者更改为 git 用户:

mkdir /git/new_game.git
git init --bare /git/new_game.git
adduser git
chown -R git:git /git

   设置该 git 用户禁止登录 shell,修改 /etc/password 文件,找到 git 那一行修改如下:

git:x:502:502::/home/git:/usr/bin/git-shell

   这时,git 服务端仓库就设置好了,可以通过下面的命令在客户端拉取一下:

git clone git@www.my.com:/git/new_game.git

  没有意外的话,会提示找不到该仓库,那是因为 git 默认使用 ssh 协议来传输数据,需要将客户端的 ssh 公钥添加到服务器的 /home/git/.ssh/authorized_keys 文件中,那么如何在客户端获取公钥呢?它存储在用户目录的 .ssh/ 目录下,id_rsa 表示私钥,id_rsa.pub 就是公钥了,将 id_rsa.pub 中的字串添加到服务器就好了。如果发现并没有生成私钥和公钥,可以通过下面的命令生成(一路回车使用默认值即可):

ssh-keygen -t rsa -C "mail@163.com"

   然后再在客户端拉取仓库,应该就没有问题了。

 

二、基础命令

  git 是一个分布式版本管理工具,即可以将版本库分布在不同的终端,不同于集中式版本工具,但通常使用时,为了方便也会为 git 创建一个类似中央服务器的服务端,用于 push/pull 。

  通过 git init 命令将当前文件夹初始化为一个 git 仓库,生成一个 .git 的隐藏文件夹。

  git 有暂存区和工作区的概念,通过 git status 来查看工作区状态,通过 git add 将文件添加到暂存区,通过 git commit -m "commit" 提交版本到版本库。注意 git commit 和 git push 的区别,后者是推送到其它版本库。

  使用 git 不同于 svn,必须要先通过 git add 将修改提交到暂存区,再通过 git commit 将暂存区所有记录提交到版本库。比如创建了一个文件,然后 git add 了,再对这个文件进行修改,然后 git commit ,就会丢失对这个文件的修改,因为后面的修改并没有提交到暂存区。

  git 使用 HEAD 作为指向当前分支的指针,而分支的指针指向当前的提交,通过 git reset --hard `版本` 即可切换到任何指定的版本,为方便操作,HEAD表示当前版本,上一个版本可简写成 HEAD^,上上一个版本可简写为 HAED^^,上 n 个版本可简写为 HEAD~n,如:

git reset --hard eb34e70
git reset --hard HEAD git reset
--hard HEAD^ git reset --hard HEAD^^ git reset --hard HEAD~3

  使用 git log 可以查看所有旧版本提交历史(比当前版本更老的版本),如果需要查看比当前版本更新的版本信息,可以使用 git reflog 来查看命令操作记录。对于 git log 如果嫌输出内容太多,可以使用 git log --pretty=oneline

  svn 放弃某个文件的修改,可以使用 svn revert 命令,git 也有类似操作,但 git 的回退命令分为工作区和暂存区,分别对应的命令是 `git checkout -- filename`  `git reset HEAD filename`, git checkout -- filename 是将版本库中某个文件覆盖当前工作区中的文件, git reset HEAD filename 是将版本库中的某文件覆盖到工作区和暂存区中的某文件。

  git rm 用于删除某个文件(记录在暂存区),然后通过 git commit 提交到版本库。

  git地址可以使用 git 和 https 前缀表示,前者使用 ssh 协议,后者使用 https,一般推荐使用前者,后者速度比较慢且每次推送都需要输入口令。

 

  关于分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

 

 

Unity工程使用 git 时,除了要设置正确的 .gitignore 之外,还需要对 Unity 编辑器进行设置:

Edit——Project Settings——Editor,进行如下设置:

 

 

 

 

 

 

 

git设置代理:

git config --global http.proxy http://127.0.0.1:3213

git config --global https.proxy https://127.0.0.1:3213

取消http代理
git config --global --unset http.proxy

git config --global --unset https.proxy

 

posted @ 2017-05-30 15:05  轻典  阅读(204)  评论(0编辑  收藏  举报