• 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

  • 相关阅读:
    【线程间通信:代码示例:分析问题原因:修正代码】
    【死锁问题】
    【解决线程安全问题:通过Lock锁对象】
    【解决线程安全问题:同步方法】
    【解决线程安全问题:同步代码块】
    【线程实现的两种方式及区别】
    小阳的贝壳
    小石的妹子
    SPFA模板+dfs版检测负环
    逆序对模板
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/6920468.html
Copyright © 2020-2023  润新知