Git 学习笔记(一):Git基本用法

本贴最后更新于 4435 天前,其中的信息可能已经事过景迁

1. Git 是一个分布式的版本控制工具

2. Git 只关心文件数据的整体是否发生变化,并不保存前后变化的差异数据。
3. Git 在本地磁盘上保存着所有有关当前项目的历史更新,所以绝大多数操作只需要访问本地文件和资源,无需联网。
4. 通过指纹字符串来时刻保持数据的完整性。
5. 任何文件在Git内都只有三种状态:
      已提交(committed):表示文件已经被安全保存到本地数据库中了。
      已修改(modified):表示已经修改了某个文件但是还没有提交保存。
      已暂存(staged):表示把已修改的文件放在下次提交时要保存的清单中。
6. 由于上述三种状态,在用Git管理项目时,文章流转的三个工作区域:
      Git的本地数据目录:每个项目都有一个 git 目录,它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。
      工作目录:从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。
      暂存区域:所谓的暂存区域只不过是个简单的文件,一般都放在 git 目录中。
7. Git 配置,Git的配置信息保存在三个位置:
      /etc/gitconfig 文件:该文件中的配置对系统的所有用户都有效。通过--system选项,读写的就是这个文件。
      用户目录下的.gitconfig文件:该文件中的配置只对当前用户有效。通过--global选项,读写的就是这个文件。
      当前项目下.git/config文件:该文件只对当前项目有效。
8. 通过在项目目录下建立 .gitignore 文件来指定让Git忽略的文件或者目录。
9. Git本地仓库的基本用法:
     ① git init :初试化当前目录为一个Git本地仓库。
     ② git add <filename> : 如果一个文件是未被跟踪的,将 一个文件加入到版本控制当中,让Git对其进行跟踪;如果一个文件是已修改状态,则将一个文件放到暂存区中。
     ③ git status : 查看当前Git仓库中文件的状态。
     ④ git diff:比较工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
     ⑤ git commit:提交暂存区域。
               git commit -m <说明信息>
               git commit -a 可以跳过暂存区域,直接将已跟踪的文件暂存起来一并提交。
     ⑥ git rm <filename>:从Git中删除一个文件。
               git rm --cached:从暂存区删除一个文件,但是仍保留在工作目录中。也就是将文件变为未跟踪状态。
     ⑦ git log:查看项目提交历史记录。
               git log -p 选项展开显示每次提交的内容差异
               git log --stat 仅显示简要的增改行数统计
               git log --pretty=<option> ,其中option可以是:oneline(使每条历史信息在一行中显示),short,full,fuller,format(按指定的格式输出)
               gitk 可以打开历史记录的可视化查看窗口。
     ⑧ git commit --amend:修改最后一次提交。该命令是提交当前缓存区快照,并修改最后一次的说明。
     ⑨ git checkout -- <filename>:撤销对文件的修改,慎用!   
     ⑩ git reset HEAD <filename>:撤销对文件的暂存,让文件回到暂存前的状态。
10. Git远程仓库的基本用法:
     ① git clone [url]:将一个远程仓库克隆到本地。
     ② git remote:查看当前配置的远程仓库,在克隆完某个项目后,至少可以看到一个名为origin的远程仓库,Git 默认使用这个名字来标识你所克隆的原始仓库。
               -v :显示对应的克隆地址。
               git remote add [remote-name] [url]:添加一个新的远程仓库。
               git remote show [remote-name]:查看远程仓库信息。
               git remote rm [remote-name]:移除远程仓库。
               git remote rename [old-remote-name] [new-remote-name]:重命名远程仓库。
     ③ git push [remote-name] [branch-name]:推送数据到远程仓库,remote-name指的是远程仓库简称,branch-name指的是分支名称。对于克隆的仓库默认分别为:origin,master
              
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
GodFather
再牛逼的伟人,也有苦逼的青春。

推荐标签 标签

  • 叶归
    5 引用 • 16 回帖 • 9 关注
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1794 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 2 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖 • 2 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 253 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 590 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    76 引用 • 389 回帖
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 260 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1440 引用 • 10067 回帖 • 489 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    28 引用 • 197 回帖 • 28 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    12 引用 • 54 回帖 • 168 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • gRpc
    11 引用 • 9 回帖 • 89 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 542 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 27 回帖 • 1 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 17 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 116 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 1 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    157 引用 • 289 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    169 引用 • 1527 回帖 • 1 关注
  • Excel
    31 引用 • 28 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 253 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 297 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    131 引用 • 869 回帖