Git系列一:基础使用

目录

一、Git中的基本常用命令

二、打标签


一、Git中的基本常用命令

(1)git help config    获得git config命令的手册

(2)git help <verb>  获得对于verb命令的帮助

(3)git init 该命令将创建一个名为.git的子目录

(4)git clone <url>    克隆远程git仓库 如:git clone https://github.com/libgit2/libgit2

如果想在克隆远程仓库的时候,自定义本地仓库的名字,可以使用额外的参数指定新的目录名如:git clone https://github.com/libgit2/libgit2 mylibgit

(5)git status 查看文件已跟踪的文件都处于什么状态。git status -s/--short 会得到一种更为紧凑地输出

(6)git add <file> 把文件放入仓库中(被跟踪),使用文件或目录的路径作为参数,如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件 如:git add README.txt。

        该命令是一个多功能命令,可以用该命令开始跟踪新文件,或者把已跟踪的文件放入到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。将这个命令理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更合适。

(7)git diff 通过文件文件补丁的格式具体地显示了已跟综的文件修改了什么地方,此条命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

         git diff --staged 这条命令将比对已暂存文件与最后一次提交的文件差异

(8)git commit 提交暂存的更新(更改)。备注:使用该命令后,会出现一个COMMIT_EDITMSG文件,该文件中的默认提交消息为最后一次运行git status的输出。可以使用git diff -m "要提交的信息(比如:2021/11/02 进行提交)" 将提交信息与命令放在同一行。

        备注:提交后会告诉你,当前是在哪个分支(master)提交的,本 次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过。请记住,提交时记录的是放在暂存区域的快照。 任何还未暂存文件的仍然保持已修改状态,可以在下次提交时 纳入版本管理。 每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

         git commit -a 跳过使用暂存区域的方式,自动把所有已经跟踪过的文件暂存起来一起提交

  (9)git rm <file> 从git中移除某个文件(从已跟踪文件清单中移除(确切地说,是从暂存区【这里的暂存区可以理解为上一次提交到git的快照】和工作区移除),然后再提交,这样该文件就不再纳入版本管理了,并且该文件也从本地磁盘中删除了)。

        如果要删除之前修改过或已经放到暂存区(还未提交到git中,vscode中为“暂存的更改”下拉菜单)的文件,则必须使用强制删除选项-f。这是一种安全特性,用于防止误删尚未添加到快照的数据,这样的数据不能被Git恢复。具体命令为:git rm -f <file>。

        如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用--cached。具体命令为:git rm --cached <file>

   (10)git mv <原文件名> <现文件名> 对已跟踪的文件进行改名(重命名)。该条指令相当于运行了下面三条指令mv <原文件名> <现文件名>,git rm <原文件名>,git add <现文件名>

   (11)git log 该命令会按照时间先后顺序列出所有提交,最近的更新排在最上面。这个命令会列出每个提交的SHA-1校验和,作者的名字和电子邮件地址、提交时间以及提交说明。

        该命令有许多选项可以帮助搜索所要找的提交,其中比较有用的选项是-p/--patch,它会显示每次提交所引入的差异(按补丁的格式输出),,当进行代码审查,或者快速浏览某个搭档的提交所带来的变化的时候,该参数非常有用,也可以限制显示的日志条目数量,例如使用-2选项来只显示最近的两次提交:git log -p -2。

        可以为git log附带一系列的总结性选项,比如想看到每次提交的简略统计信息,可以使用--stat选项。--stat选项在每次提交的下面列出了所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。

        另一个非常有用的选项是--pretty,这个选项可以使用不同于默认格式的方式展示提交历史,这个选项有一些内建的子选项供使用。比如 oneline 会将每个提交放在一行显示,在浏览大量的提交时非常有用。 另外还 有 short,full 和 fuller 选项,它们展示信息的格式基本一致,但是详尽程度不一。

        最有意思的是 format ,可以定制记录的显示格式。 这样的输出对后期提取分析格外有用——因为你知道输出的 格式不会随着 Git 的更新而发生改变。具体命令如:git log --pretty=format:"%h - %an, %ar : %s"。git log --pretty=format 常用的选项 列出了 format 接受的常用格式占位符的写法及其代表的意义。

        当 oneline 或 format 与另一个 log 选项 --graph 结合使用时尤其有用。 这个选项添加了一些 ASCII 字符串 来形象地展示你的分支、合并历史。

     (12)git commit --amend   这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令), 那么快照会保持不变,而你所修改的只是提交信息。这是为了解决上一次提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了的情况。

      (13)git reset HEAD <file>  取消暂存该文件,该文将状态变为已修改未暂存

      (14)git restore <file> 撤销对该文件的修改,将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)。注意:该命令是一个危险的命令,对那个文件的任何修改都会消失——Git会用最近提交的版本覆盖掉它。

(15)git checkout <commitid>   该命令会用所选取的仓库中的历史版本文件<commitid> ,覆盖索引区(staged or index)和工作目录(work tree)。这样就可以切换到历史版本文件中,<commitid>可以用git status来查看版本的希哈值。注意,这会覆盖当前的工作目录。但是该指令会使你的仓库处于“分离头指针(detached HEAD)”的状态。

        在“分离头指针”状态下,如果你做了某些更改然后提交它们,标签不会发生变化, 但你的新提交将不属于任 何分支,并且将无法访问,除非通过确切的提交哈希才能访问。 因此,如果你需要进行更改,比如你要修复旧 版本中的错误,那么通常需要创建一个新分支:

        如果在这之后又进行了一次提交,version2 分支就会因为这个改动向前移动, 此时它就会和 v2.0.0 标签稍 微有些不同,这时就要当心了。

二、打标签

        像其他版本控制系统(VCS)一样,Git可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0 、 v2.0 等等)。

1.列出标签

(1)git tag 以字母顺序列出标签。也可以按照特定的模式(通配符)查找标签,如git tag -l "v1.8.5*",按照通配符列出标签需要-l或--list选项

2.创建标签

        Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。而附注标签是存储在Git数据库中的一个完整对象,它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间,此外还有一个标签信息,并且可以使用GNU Privacy Guard(GPG)签名并验证。通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签,或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。注:创建的标签如果不是追加的,都是对上一次提交的快照进行打标签

(2)git tag -a 创建附注标签。具体如git tag -a v1.4 -m "my version 1.4",-m 选项指定了一条将会存储在标签中的信息。如果没有为附注标签指定一条信息,Git 会启动编辑器要求你输入信息。通过使用 git show命令可以看到标签信息和与之对应的提交信息:

        输出显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息。

(3)创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字

        如果运行git show,并不会看到额外的标签信息

(4)git tag -a <标签信息,如v1.2> <要打标签的快照的校验和> 在已经提交的快照打标签。具体如git tag -a v1.2 9fceb02d0ae598e95dc970b74767f19372d61af8

3.删除标签

(5)git tag -d <tagname>  删掉本地仓库上的标签。注意上述命令并不会从任何远程仓库中移除这个标签,你必须用git push <remote>  :refs/tags/<tagname> 来更新你的远程仓库。

        第一种变体是git push <remote> :refs/tags/<tagname>:

        上面这种操作的含义是,将冒号前面的空值推送到远程标签名,从而高效地删除它。

        第二种更直观地删除远程标签的方式是:git push origin --delete <tagname>

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值