• Git 常用操作(一)


    一、Git 简介

    "版本控制系统"(Version Control System,VCS)是程序代码管理软件的通称,是用来保存程序文件的修改记录以及历史版本,以便日后查看或是使用。VCS早期的系统是采用集中管理和控制的方式,比如 SVN。新的 VCS 改成采用分布式的方式,比如 Git。当前市场上占有率最高的 VCS 有两套:Subversion(简称 SVN )和 Git。现在越来越多的软件公司开始使用Git管理程序项目,网络上也有专门提供 Git Server 服务的网站,像是 GitHub 和 GitLab。

    Git 的开发者其实就是 Linux 的作者 Linus Torvalds,Git 是免费、开源的,最初 Linux 内核开发使用 Bitkeeper 管理代码,此时 Bitkeeper 是免费的,后来却要收费,因此 Torvalds 打造出自己的VCS 工具 Git 用来替代 BitKeeper。

    二、集中式和分布式

    集中式是指只有一个远程版本库,而分布式有本地和远程版本库。

    方便性:SVN 是集中式版本控制系统,版本库是集中放在中央服务器的,拉代码的时候需要联网从中央服务器哪里得到最新的版本,提交代码也同样。集中式版本控制系统是必须联网才能工作;Git 是分布式版本控制系统,它没有中央服务器的,每个人的电脑就是一个完整的版本库。工作的时候就不需要联网了,因为每个人的电脑都有一个完整的版本库。如果没有网络仍然能够提交文件,查看历史版本记录,创建项目分支;

    安全性:对于 SVN 来说,如果存储远程版本库的服务器挂了,所有人的代码都无法提交,甚至丢失版本库。而 Git 则因为有本地版本库而不会有这个问题。

    三、Git 的工作方式

    由上图可以看出,通常情况下,Git 的工作流程如下所示:

    (1)我们在工作区目录中添加、修改代码文件;

    (2)我们运行 git add . ,将工作区(workspace)的代码提交到了暂存区(index)中;

    (3)然后我们运行的 git commit -m "修改代码提交说明" 将暂存区中的代码提交到本地仓库(local Repository)中;

    (4)最后我们通过 git push 将本地仓库的代码推送到远程仓库(Remote Repository)了。

    四、Git 文件状态

    在 Git 中,文件的状态主要有如下几种:

    说明:

    (1)新建文件 ---> Untracked

    (2)使用 add 命令将新建的文件加入到暂存区 ---> Staged

    (3)使用 commit 命令将暂存区的文件提交到本地仓库 ---> Unmodified

    (4)如果对 Unmodified 状态的文件进行修改 ---> modified

    (5)如果对 Unmodified 状态的文件进行 rm 操作 ---> Untracked

    五、Git 常用命令

    Git 常用命令如下所示:

    # 创建文档库repository,即.git子文件夹
    git init
    
    # 指定dev分支-b dev,默认克隆master分支内容
    git clone -b dev https://xxxxxxx
    
    # 更新远程代码到本地工作区
    git pull
    
    # 显示当前Git的状态,查看我们当前工作区修改的文件状态
    git status
    
    # 比较当前工作区(即未提交到暂存区),与暂存区(即已经执行了git add)之间文件内容的不同,显示具体内容的修改变化(删除了红色行 ,新增了绿色行的代码)。其实此时运行的 git diff 相当于 git diff HEAD(HEAD 指向的是 local repository 中最新提交的版本)。
    git diff file_name
    
    # 把文件内容加入Git系统的索引,即暂存区
    git add file_name
    
    # 从暂存区将文件提交到本地仓库
    git commit -m 'commentxxxx'
    
    # 将本地仓库代码推送至远程仓库
    git push
    
    # 查看提交日志
    git log
    
    # 显示完整的辅助说明指令列表
    git help -a 
    
    # 显示init指定指令的说明信息
    git init -help
    
    # 使用图形化工具查看
    gitk

    5.1 Git 配置文件

    Git 有三个不同级别的配置文件,它们有不同的优先级,高优先权文件的设置项会覆盖低优先权文件中相同的设置项。以下按照优先权从高到低按序如下:

    (1)项目文件夹中 ".git" 子文件夹内的 config 文件

    这个配置文件具有最高的优先权,使用如下命令可以查看该配置文件的内容。

    git config --local -l

    (2)操作系统登录账号的 home directory 中的 .gitconfig 文件

    这个配置文件具有中等优先权,文件通常在 C:Usersmoonxy.gitconfig,使用如下命令可以查看该配置文件的内容。

    git config --global -l

    (3)Git 程序的安装文件中的 etcgitconfig 文件

    这个配置文件具有最低优先权,文件通常在 C:Program FilesGit-2.24.1etcgitconfig,使用如下命令可以查看该配置文件的内容。

    git config --system -l

    使用 git config -l 可以同时查看上面三个配置文件中的所有设置项。

    如下我们将操作者的姓名和 email 记录在文档库对应的配置文件中:

    git config user.name 'moonxy'
    git config user.email 'moonxy@qq.com'

    此处省略了 --local,默认设置在文档库的配置文件中,也可以添加 --global 和 --system 选项来设置在其他优先级的配置文件中。

    如果要删除文档库配置文件中的操作者姓名,可以执行如下命令:

    git config --unset user.name

    我们可以定义指定的别名(alias),也就是用简短的缩写来表示标准的命令,如下:

    # git config alias.指令别名 '正式的指令和选项'
    git config alias.cfg 'config -l'
    
    之后使用 git cfg 就表示 git config -l
    
    # 删除别名
    git config --unset alias.cfg

    修改默认的文本编辑器,比如从 nano 修改为 vim,命令如下:

    git config --global core.editor 'vim'

    修改文件对比程序,使用 git difftool 命令,在配置文件中指定自己习惯的文件对比程序,比如 KDiff3 或者 WinMerge,如下:

    git config --global diff.tool kdiff3
    
    git config --global difftool.kdiff3.cmd 
    "'C:Program FilesKDiff3kdiff3.exe' "$LOCAL" "$REMOTE""
    
    git config --global difftool.prompt false

    设置好之后再次执行 git difftool 指令,就会启动 KDiff3 程序,并且显示文件对比的结果。

    5.2 把文件存入 Git 文档库

    使用 .gitignore 文件排除不需要加入文档库的文件

    在 .gitignore 文件中可以用 "#" 字符开头表示注释,文件夹路径是由 "/" 字符,文件名可以使用通配符 "*"。另外还可以使用 "!" 字符表示排除,例如以下设置表示要忽略所有扩展名为 txt 的文件,但是不包含 note.txt:

    *.txt
    # 设置不要忽略 note.txt 文件
    !note.txt

    控制 Commit

    "git rm" 指令用来删除文档库中的文件或是 Git 索引(暂存区)中的文件,也可以删除工作区中的文件。如下:

    git rm 文件名

    如果执行 "git rm" 时加入 "--cached" 选项如下:

    git rm --cached 文件名

    表示删除文档库中的文件或是 Git 索引(暂存区)中的文件,但是保留了本地工作区的这个文件,只是不希望这个文件被版本控制。

    Commit 节点

    gitk 指令启动图形查看模式后,窗口下方的 "SHA1 ID" 字段就会显示该节点的标识符,也可以使用 "git log" 指令达到相同的目的,如果加上 "--graph" 选项,会用文本模式排列出 commit 节点的演进图,如果搭配 "--oneline" 选项,可以用最简便的方式显示。

    git log --oneline

    Git 还提供一个叫作 HEAD 的节点标签,这个节点标签可以简写成 "@",这个节点标签永远代表最新的 commit,比如执行如下的指令,显示最新 commit 的详细数据:

    git show HEAD

    要指定某一个节点之前的节点可以使用以下格式:

    节点标签或者标识符^数字
    节点标签或者标识符~数字

    其中 "^" 用来指定是哪一个父节点,"~" 用来表示哪一层的父节点。

    如果要显示指定的 commit 节点中特定文件的内容,可以使用 "git show" 命令,格式如下:

    git show [commit id]:文件名

    commit 节点的标识符是一组很长的16进制数字,一般只要使用最前面4个数字,Git 会自动找出对应的节点。

    除了 Git 内置的 HEAD 节点标签之外,我们可以给 commit 节点贴上自定的标签,"git tag" 指令格式如下:

    # 自定义标签
    git tag 自定义的标签名称 commit节点标识符或者标签
    
    # 删除标签
    git tag -d commit 节点标签

    让文档库恢复到某一个节点的状态,即用于回退版本,可以指定退回到某一次提交的版本,"git reset" 指令格式如下:

    git reset 选项 commit节点标识符或者标签

    其中选项如果是 "--soft",表示只有文档库里面的数据会该表,Git 索引和工作区中的文件都不会受到影响;如果选项是 "--mixed"(这是默认选项),表示 Git 索引也会恢复到指定节点的状态,但是工作区中的的文件仍然不会受到影响;如果选项是 "--hard",则文档库、Git 索引和工作区中的文件,都会恢复到指定节点的状态。

    从 Git 文档库中取出文件

    我们可以从文档库中任何一个 commit 节点取出指定的文件:

    git checkout [commit节点标识符或标签] 文件名1 文件名2

    改变文件或者文件夹的名称

    有时候我们需要更改文件夹中的文件名,然后把它记录在Git 索引中,接着只要执行 "git commit" 指令,就可以更新文档库。

    git mv 原来的文件名或文件夹名 新的文件名或文件夹名

    注意:

    "git add ." 指令会把新增的文件和被修改的文件加入 Git 索引,但是被删除的文件不会记录在 Git 索引中。

    "git add -u" 指令会把修改的文件和被删除的文件加入 Git 索引,但是新增的文件不会加入 Git 索引中。

    "git add -A" 指令会把新增的文件、被修改的文件以及被删除的文件全部加入 Git 索引中。

    参考资料:

    一个小时学会Git

    【Git】(1)---工作区、暂存区、版本库、远程仓库

  • 相关阅读:
    Java实现点击导出excel页面遮罩屏蔽,下载完成后解除遮罩
    文档API生成神器SandCastle使用心得
    Stimulsoft报表操作笔记(一):统计
    在线office文档编辑NTKO使用心得
    oracle与sqlserver利用函数生成年月日加流水号
    解决同一页面中两个iframe互相调用jquery,js函数
    jquery配合.NET实现点击指定绑定数据并且能够一键下载
    页面的div中有滚动条,js实现刷新页面后回到记录时滚动条的位置
    关于datagrid中控件利用js调用后台方法事件的问题
    关于datagrid中数据条件颜色问题
  • 原文地址:https://www.cnblogs.com/cnjavahome/p/14035440.html
Copyright © 2020-2023  润新知