博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git学习03-----最基本的几个命令
阅读量:5158 次
发布时间:2019-06-13

本文共 3890 字,大约阅读时间需要 12 分钟。

一. 取得项目的Git仓库

有两个办法:

1.1 在工作目录中初始化新仓库

就是在现有的某个项目中执行git init后,就可以对这个项目进行git项目管理了。

1.2 从现有从库克隆

git clone [url]

通过执行上面这条命令,就可以对这个URL指定的项目进行git项目管理了。

Note:成功进行Git项目管理后,会有一个隐藏文件:.git,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝

二. 跟踪修改

工作目录下的所有文件不外乎两种状态:已跟踪和未跟踪。

1. 未跟踪

假设我们建立了一个新的文件hellworld,这个时候查看git status命令,就会出现提示“nothing added to commit but untracked files present (use "git add" to track) ,意思是出现了未跟踪的文件,我们可以通过执行git add来让它成为跟踪文件。

2. 暂存已修改文件

假设helloworld已经add了,这个时候我再修改里面的内容,并git status,就会发现如下提示信息

$ git status    # On branch master    # Changes to be committed:    # (use "git reset HEAD 
..." to unstage) # # new file: README # # Changes not staged for commit: # (use "git add
..." to update what will be committed) # # modified: helloworld #

说明:a.txt出现在“Changes not staged for commit"下面,说明已跟踪文件的内容已经发生了变化,但是还没有放到暂存区中,要暂存这次更新,需要运行git add命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)

3. 同一个文件多次修改

假设上面的helloword.java文件已经被修改过了,且执行了git status后,是如下状态:

这个时候又再次修改,这个时候git status就会出现同一个文件的两种状态:

git add后,才会得到最新的更新,否则,直接commit的是本次更新前的那一次的修改的内容,即绿色修改部分的内容。

三. 忽略某些修改

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:

 

 

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 logtmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

文件 .gitignore 的格式规范如下:

  • 所有空行或者以注释符号  开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

我们再看一个 .gitignore 文件的例子:

 

四. 查看已暂存和未暂存的更新

假设远程提交的内容是打印Hello World这个字符串,但是本地第一次修改后并暂存(git add)起来后,内容是:Hello World2。 这个时候又修改一次,内容是Hello World222。

1. 对比工作区(未暂存的)和已经暂存的内容差异

执行 git diff

2. 对比暂存的和上一次提交的内容的差异

执行 git diff --staged 或者git diff --cached

五. 文件提交

1. 正规流程git add, git commit提交

2. 快捷流程,可以跳过git add,但是需要添加 -a选项: git commit -a,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。

六. 移除文件

git rm 添加参数选项  文件名

七. 查看提交历史

1. git log

它有很多的可选参数,比如限制在一个提交一行显示,显示的格式,显示的长度等等。

2. 使用图形化工具查阅提交历史

有时候图形化工具更容易展示历史提交的变化,随 Git 一同发布的 gitk 就是这样一种工具。它是用 Tcl/Tk 写成的,基本上相当于 git log 命令的可视化版本,凡是 git log 可以用的选项也都能用在 gitk 上。在项目工作目录中输入 gitk 命令后,就会启动图 2-2 所示的界面。

                                    图 2-2. gitk 的图形界面

上半个窗口显示的是历次提交的分支祖先图谱,下半个窗口显示当前点选的提交对应的具体差异。

八. 撤销操作

有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:

$ git commit --amend

此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。

启动文本编辑器后,会看到上次提交时的说明,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。

如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 --amend 提交:

九. 远程仓库的使用

1. 查看当前的远程仓库

git remote -v命令,就可以看见:

2. 远程仓库的删除和重命名

碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令:

 九. 打标签

标签作用: 在开发的一些关键时期,使用标签来记录这些关键时刻, 例如发布版本, 有重大修改, 升级的时候, 会使用标签记录这些时刻, 来永久标记项目中的关键历史时刻;

查看标签: 列出的标签安装ASCII字母顺序确定, 排序没有很明确的意义;

– 列出所有的标签 :

git tag

– 使用限定列出限定后的标签 :

git tag -l v1.*

这里写图片描述

标签分类

Git中的标签分为 轻量级标签(lightweight) 和 带注释的标签(annotated), 一般情况下推荐使用带注释的标签, 如果标签是临时的可以采用轻量级标签;-- 轻量级标签 : 轻量级标签中的信息含量很少, 这种标签只代表某时刻代码的提交, 相当于指向这个提交的指针;-- 带注释标签 : 这种标签是一种校验和, 包含标签名, 邮箱, 日期, 标签信息, GPG签名 和 验证, 它相当于一个对象, 封装了这些信息;

创建标签 :

– 创建轻量级标签 : 这样的标签没有附带其它的信息;

git tag tag_name

git tag v2.0

这里写图片描述

– 创建带注释标签 : -m 后跟的是注释信息, 当使用git show v2.1的时候, 会显示这个注释信息;

git tag -a v2.1 -m 'first version'

这里写图片描述

– 为之前的提交添加标签 : (直接git tag commitID   这个ID是需要打标签的那一次提交)

先使用 git log –oneline 命令列出之前的提交, 会有一个七位的十六进制数进行标记, 使用git tag -a v3.1 f1bb97a 命令即可为这个提交添加标签;

$ git log --oneline

f1bb97a first commit

git tag -a v3.1 f1bb97a

这里写图片描述

删除标签 : 使用命令 git tag -d 标签名 命令删除标签;

git tag -d v0.1

这里写图片描述

共享标签 : 即将标签提交到GitHub中;

git push origin --tags

这里写图片描述

 

 

 

 参考文献

《Pro Git》

https://blog.csdn.net/u013372487/article/details/52937077

 

转载于:https://www.cnblogs.com/Hermioner/p/10061339.html

你可能感兴趣的文章
实验四+087+饶慧敏
查看>>
python基本操作之列表,元组,string字符串
查看>>
Spring Boot热部署 学习笔记
查看>>
Android之Adapter用法总结
查看>>
CF1106F Lunar New Year and a Recursive Sequence
查看>>
<iframe> 标签 中 src 的三种形式. display , echart
查看>>
MATLAB 程序计算结果出现 复数(a+bi)问题
查看>>
An Android APK is really a zip file
查看>>
Linux常用命令大全(转)
查看>>
poj 3669 Meteor Shower
查看>>
存储控制器使用【转】
查看>>
Spring浅谈
查看>>
使用路径arc-奥运五环
查看>>
Mybatis(三)返回值四.注解配置
查看>>
Robot Motion
查看>>
分布式设计
查看>>
[今日干货]一个吸粉效果也不错的APP
查看>>
bzoj1010: [HNOI2008]玩具装箱toy
查看>>
关于网络的一些总结
查看>>
2015大型互联网公司校招都开始了,薪资你准备好了嘛?
查看>>