美文网首页
git使用教程

git使用教程

作者: 蓝岚澜籣 | 来源:发表于2020-05-17 00:53 被阅读0次

    1.本地git的使用

    1.1 本地git仓库的组成

    • 工作区:本地git仓库的编辑内容所在的区域,所有可见的文件都包含在此区域内。
    • 版本库:初始化本地git仓库后,在文件夹内生成的.git文件夹。版本库又包含以下内容:
      • 暂存区(stage或index):工作区所做的修改会先提交到该区域
      • 分支区:暂存区中存储的修改会合并到该区域中的当前分支。
        1. 分支区包含的分支,由commit节点按照commit时间顺序链接构成;
        2. 分支区可以有多个版本分支,但所有分支由同一个commit节点延伸而出。
        3. 在分支区,存在一个HEAD指针,指向当前分支的当前commit节点,而当前的合并操作都针对该HEAD指针指向的commit节点。
        4. 每条分支都有一个分支名称,每个commit节点都有一个commit_id

    1.2 本地git仓库的配置

    1.2.1 git软件的安装与账户的配置

    • Linux系统中,可编译git软件源码安装,或者从软件仓库直接安装;
    • windows系统中,可下载windows软件包,点击安装;
    • Mac系统中,可通过homebrew安装,也可在Xcode集中工具里安装。

    在系统中安装好git软件后,可通过在命令行中输入git命令查看是否安装成功。安装成功能够git软件后,需要在命令行中配置账户、邮箱等配置项:

    • 配置账户:git config --global user.name [用户名]
    • 配置邮箱:git config --global user.email [用户邮箱]
    • 配置git提示语句显示不同颜色:git config color.ut true

    git config命令的--global参数,表示配置针对当前系统的所有git仓库。不使用该参数,也可针对单一的git仓库进行配置。

    1.2.2 git仓库的初始化

    选定一个空目录,作为git仓库的存储区域,此时使用git init命令将该目录初始化为本地git仓库。初始化后的git仓库,其所在目录会生成一个.git文件夹,此文件夹为版本库所在空间。

    1.3 本地git的使用

    1.3.1 修改内容的提交、合并

    • 添加文件,修改文件内容的提交:git add [文件名]

    • 删除文件、文件夹的提交:git rm (-r) [文件名或文件夹名]

      注:git rm命令的-r参数针对文件夹,删除文件不需要该参数。

    • 提交内容的合并:git commit -s -m [commit节点的注释]

      注:git commit命令的-s参数,会在commit节点中添加提交账户。

    使用git diff [文件名]可比较文件修改提交后的内容差异;使用git status命令,会显示出未合并的所有文件操做,包括添加文件,修改文件内容,删除文件、文件夹等;使用git reflog命令,可查看所有合并记录。

    1.3.2 本地git仓库的回退

    • 未提交内容的回退:git checkout -- [文件名]

    • 已提交内容的回退:git reset HEAD [文件名]

      注:此时仅回退暂存区中的内容,工作区中的内容并未改变。

    • 已合并内容的回退:git reset --hard HEAD^

      注1:git reset--hard参数,表示HEAD指针的指向移动。

      注2:HEAD加n个^,表示当前HEAD指针指向的当前分支当前commit节点的前n个commit节点位置,也可用HEAD~n表示。

    • 当前分支,不同commit节点间的跳动:git reset --hard [commit_id]

      注1:在每次合并代码的过程中,每个commit节点将对应生成对应的commit_id。将HEAD指针指向不同commit_id,则分支区中当前分支的当前commit节点发生改变。

      注2:当使用HEAD指针向当前commit节点之前commit节点跳动,则在关闭命令行窗口前,后面的commit节点不会消失,仍能使用commit_id会跳,但已无法用git log查看。

    使用git log命令,可查看当前分支的所有commit节点。当git log命令使用--pretty=oneline参数,可将当前分支的commit节点记录以每行一条的形式显示。当git log命令使用--graph参数,可显示所有分支的commit节点记录。

    1.3.3 本地git仓库的分支管理

    • 分支的创建:git branch [新分支名]

    • 分支的切换:

      • 新版切换分支命令:git switch [分支名]
      • 老版切换分支命令:git checkout [分支名]

      注:在使用新版切换分支命令git switch时,使用-c参数,可实现创建新分支,并切换到新分支的效果;在使用老版切换分支命令git checkout时,使用-b参数,也可实现创建新分支,并切换到新分支的效果。

    • 分支的合并:git merge [指定分支名]命令,可将指定分支与当前分支合并。

    • 分支的删除:

      • 已合并的分支删除:git branch -d [分支名]
      • 未合并的分支删除:git branch -D [分支名]
    • 分支的查看:

      git一般会采用Fast forward模式,在该模式下,删除分支,会丢掉分支信息。此时git log --graph无法查看到已删除分支的commit节点信息。

      在合并分支时,对git merge命令使用--no-ff参数,可强制禁止Fast forward模式。此时git log --graph可查看到已删除分支的commit节点信息。

      • git branch可列出所有分支;
      • git log --graph --pretty=oneline可列出所有分支的所有commit节点。
    • 跨分支的提交:使用git cherry-pick [commit_id]命令,可将某次特定的提交合并到当前分支中。

    • stash暂存的使用:

      1. 使用git stash命令,可将当前未合并到当前分支的修改工作暂存到当前分支上(此时使用git status不可见,但使用git stash list可见);
      2. 当切换回当前分支后,可使用git stash list查看当前分支的stash暂存内容:
        • 使用git stash apply命令,可将stash暂存中的修改工作内容恢复到当前分支中,但stash暂存中的修改工作内容并不会被删除。
        • 使用git stash pop命令,可将stash暂存中的修改工作内容恢复到当前分支中,并将stash暂存中的修改工作内容删除。

    1.3.4 本地git仓库的标签操作

    标签是指向commit节点的指针,适合做版本标注。

    1. 标签的创建:
      • 当前分支当前commit节点处的标签创建:git tag [新标签名]
      • 任意commit节点处的标签创建:git tag [新标签名] [commit_id]
      • 带注释的标签创建:git tag -a [新标签名] -m [标签注释] [commit_id]
    2. 标签的查看:
      • git tag命令可列出所有标签。标签不是按照创建时间排列显示,而是安装名称排序显示。
      • git show [标签名]命令,可查看特定的标签所指向的commit节点的状况。
    3. 标签的删除:git tag -d [标签名]

    2. git服务器

    2.1 密钥的生成

    使用ssh-keygen -t rsa -C [用户邮箱]创建SSH key,此时会在.ssh目录下生成id_rsaid_rsa.pub两个文件,其中id_rsa.pub文件存储公钥,而id_rsa存储私钥。

    2.2 本地git服务器的搭建

    2.2.1 搭建git服务器

    1. 安装git软件:

    2. 创建git管理用户:sudo adduser [用户名]

    3. 创建证书登陆:将所有用户的id_ras.pub文件中的公钥导入到.ssh目录下的authorized_keys文件中,每行一个用户的公钥;

    4. 初始化git仓库:

      1. 选择存放仓库的空白目录,在该目录内,使用sudo git init --bare [仓库名].git命令初始化git仓库;

      2. 修改仓库的的管理账户:使用sudo chown -R [管理用户分组]:[管理用户用户名] [仓库名].git命令

        注:-R参数 表面将目录的权限以递归的形式修改(即当前目录和所有子目录的权限一起修改)。

    5. 禁止本地shell登陆,改为远程ssh登陆:将/etc/passwd文件的:/home/git:/bin/bash改为:/home/git:/bin/git-shell

    2.2.2 管理公钥

    • 开发人员较少:将所有开发人员的公钥导入到.ssh目录下的authorized_keys文件中即可。
    • 开发人员较多:Gitosis软件

    2.2.3 管理权限

    使用Gitolite工具。

    2.3 在线git服务器

    2.3.1 在线git服务器的配置

    1. 创建在线git服务账号:
    2. 将本机git公钥导入在线git服务账号中:
    3. 创建线上git仓库:
    4. 将本地git仓库与线上git仓库关联:git remote add [线上仓库本地命名] [线上仓库地址]

    2.3.2 git服务器的使用

    • 本地仓库的提交

      • 第一次:git push -u [线上仓库本地命名] [本地仓库分支名]

      • 非第一次:git push [线上仓库本地命名] [本地仓库分支名]

        注:git push命令的-u参数,是将本地仓库分支与线上仓库分支关联。

      使用git remote命令可查看所有线上分支情况。

    • 远程仓库的克隆:git clone [线上仓库地址]

      注:线上仓库地址有ssh、https等多种协议,其中ssh协议是最快的。

    • 标签的操作

      • 推送一个本地标签:git push [线上仓库本地命名] [标签名]
      • 推送所有本地未推送的标签:git push [线上仓库本地命名] --tags
      • 删除一个远程标签:git push [线上仓库本地命名] :refs/tags/[标签名]

    相关文章

      网友评论

          本文标题:git使用教程

          本文链接:https://www.haomeiwen.com/subject/pezdohtx.html