一. 取得项目的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 <file>..." to unstage)## new file: README## Changes not staged for commit:# (use "git add <file>..." 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

Git学习03-----最基本的几个命令相关推荐

  1. Git学习笔记(4)----基本操作及命令(本地仓库篇)

    本篇介绍Git的基本操作及命令,学习后本篇需要达到的效果:满足日常工作使用,对每个命令及其作用有一定的了解.文章通过模拟工作流程的方式,帮助读者更好的理解每个命令的使用场景和作用,但不会单独列出每个命 ...

  2. Git 的安装与初次使用 —— Git 学习笔记 03

    Git 的安装与初次使用 -- Git 学习笔记 03 Git 的安装与初次使用 -- Git 学习笔记 03 安装 Git 在 Linux 上安装 在 Windows 上安装 初次运行 Git 前的 ...

  3. 超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)

    超详细的Git学习笔记 从B站搜到的尚硅谷视频学习了Git,记录了一下学习的内容,收获很大 学习地址: https://www.bilibili.com/video/BV1vy4y1s7k6?p=11 ...

  4. Git 学习札记(二)安装git以及基本操作

    Git 学习札记(二) Linux上的Git基本操作 安装和使用 Git 在linux安装git的命令: sudo apt-get install git 结果如图:(为了截这个图特意卸载了又装了一遍 ...

  5. GIT 学习手册简介

    2019独角兽企业重金招聘Python工程师标准>>> 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作 ...

  6. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  7. Git学习系列之Windows上安装Git之后的一些配置(图文详解)

    不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...

  8. Git 学习第二天(一)

    继续昨天的学习. 回顾一下,昨天我们安装了git 并创建了登录名及邮箱,还向git仓库提交了一个readme.txt的文本文件 下面,我们来修改下这个文件,将内容改为 Git is a distrib ...

  9. 小白也能看懂的git入门实操[狂神聊git学习笔记]

    写在前面:本文为狂神聊git视频的学习笔记,仅供个人学习使用,如有侵权,请联系删除. 视频链接:https://www.bilibili.com/video/BV1FE411P7B3 文档参考:htt ...

  10. Mac~git学习和应用需要注意的几个点

    Git学习推荐网站:廖雪峰-Git教程 - 廖雪峰的官方网站,通俗易懂,简单粗暴,就是平俗的语言,好懂.粗暴的那种 git学习进阶-国外经典git学习网站:Git - Book 目录 1. 全局配置和 ...

最新文章

  1. 科学革命与科学教科书
  2. 白盒测试实践作业任务分配
  3. 一场由nginx优化引起的tcp/ip及tcpdump研究
  4. 政府、学校、企业都需要的轻量级数据填报方案
  5. 基于小程序·云开发构建高考查分小程序丨实战
  6. 线性表顺序表---逆置所有元素
  7. Batch批量替换hosts
  8. Mysql也可以联合多表更新和删除
  9. java ant教程_ant教程(三) ant入门
  10. centos配置虚拟主机
  11. 综合富贵论坛,富贵网,新老富贵的简单解释
  12. 一起来学习Windows Mobile 6.5
  13. 【Day5.1】在坑人的免税店King Power蹭午餐
  14. 首都师范 博弈论 2 1 1占优策略与占优策略均衡
  15. 低频理疗按摩仪8种常用基本波形
  16. python 逻辑回归 复杂抽样_逻辑回归(Logistic Regression) ----转载
  17. 多态的概念,多态的原理,多态解决什么问题
  18. greasemonkey入门
  19. SER 语音情感识别-论文笔记1
  20. Win10笔记本WiFi连接选项不见了?

热门文章

  1. tidyr | 对数据框分行或分列进行嵌套操作
  2. linux根目录如何改代码,linux怎样修改目录字体颜色
  3. Nodejs获取MySQL数据_nodejs同步调用获取mysql数据时遇到的大坑
  4. 华为鸿蒙系统深度体验报告,堪比苹果IOS的存在!
  5. linux shell 批量清空,shell脚本批量删除docker镜像
  6. Linux系统更新并清除旧组建
  7. 滑动窗口1——无重复字符的最长字串
  8. Android学习笔记(九)——Activity的跳转和数据传递
  9. 使用Anaconda安装tensorflow
  10. ajax的post方式传数组参数