1 git 工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

2 Git 基本操作

Git 的工作就是创建和保存你项目的快照,以及与之后项目的快照进行对比。

2.1 git 创建仓库

使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。

所有 Git 需要的数据和资源都存放在创建的.get文件夹中。

 git init

会在当前目录下创建一个.git文件夹(前面说的版本库)

git init new

在当前目录下新建一个new 文件夹,在new文件夹里面创建一个.git 文件夹

2.2 git clone

使用 git clone 从现有 Git 仓库中拷贝项目XXX

git clone XXXgit clone https://github.com/liuwj2000/ls.git
git clone https://github.com/liuwj2000/ls

如果我们需要拷贝到指定的目录 YYY,可以使用如下命令

git clone XXX YYY

2.3 git add

git add 命令可将该文件添加到暂存区。

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后用git commit提交:

git add *.c
git add README
git commit -m "初始化项目版本"

以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。

2.3.1 添加多个文件

git add [file1] [file2] ...

2.3.2 添加指定目录到暂存区(包括子目录):

git add [dir]

2.3.3  添加当前目录下的所有文件到暂存区:

git add .

2.4 git status

git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。

比如我创建了3个文件 1.txt  2.txt  3.txt,将 1.txt和2.txt git add 到暂存区,然后我在命令行中输入

git status

那么有:

2.4.1 git status -s

获得简短的输出结果

??表示没有git add

A表示 已经git add了

2.4.2 修改了已经git add 的file,但是没有再次git add

如果我们修改了1.txt,但是没有再git add,会怎么样呢?

git status 是多了中间这一段:

git status -s 的话,是 1.txt 的状态变成了AM

AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动

2.5 git diff

2.5.1 git diff 内容理解

2.5.2 git diff

  • 当工作区有改动,暂存区为空,git diff的对比是“工作区与最后一次commit提交的仓库的共同文件”
  • 当工作区有改动,暂存区不为空,diff对比的是“工作区与暂存区的共同文件”。

2.5.3 git diff --cached / git diff --staged

对比暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件

2.5.4 git diff HEAD

对比工作区与最后一次commit之间的所有不相同文件

2.5.5 git diff HEAD~X或git diff HEAD^^^…(后面有X个^符号,X为正整数)

对比近一次提交的版本与 倒数第X个版本的所有不相同文件

2.5.6 git diff <分支名1> <分支名2> 

比较两个分支上最后 commit 的内容的差别

2.6 git commit

使用 git add 命令将内容写入暂存区。

git commit 命令则将暂存区内容添加到本地仓库中。

2.6.1 基本用法

提交暂存区到本地仓库中:

git commit -m [message]

[message] 可以是一些备注信息。

如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。

提交暂存区的指定文件到仓库区:

git commit [file1] [file2] ... -m [message]

2.6.2 -a

-a 参数设置修改文件后不需要执行 git add 命令,直接来提交

git commit -a

在 Linux 系统中,commit 信息使用单引号 ',Windows 系统,commit 信息使用双引号 "。

所以在linux中,我们需要 git commit -m 'XXX' ,在 Windows中,我们需要 git commit -m "XXX"。

2.7 git reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

2.7.1 --mixed

--mixed 为默认,可以不用带该参数.

用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变

2.7.2 --soft

用于回退到某个版本

2.7.3 --hard

撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

2.7.4 基本用法

git reset  [HEAD] 
HEAD HEAD~0 

当前版本

(最典型的用法就是 git reset HEAD了,表示取消已经暂存的内容)

(换言之,git reset 的作用

HEAD^ HEAD~1  上一个版本
HEAD^^  HEAD^2  上上一个版本
HEAD^^^ HEAD^3  上上上一个版本
以此类推

2.8 git rm

用于删除文件

git rm <file>
将文件从暂存区和工作区中删除
git rm -f <file>

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。

强行从暂存区和工作区中删除修改后的 runoob.txt 文件:

git rm --cached <file>
把文件从暂存区域移除,但仍然希望保留在当前工作目录中

2.9 git mv

用于移动或重命名一个文件、目录或软连接

git mv [file] [newfile]

3  Git 工作区、暂存区和版本库

工作区 在电脑里能看到的目录
暂存区(stage ,index) 一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

3.1 工作区、暂存区和版本库之间的关系

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。

  • 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区(index)的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

  • 当执行提交操作(git commit)时,暂存区(index)的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树

  • 当执行 git reset HEAD 命令时,暂存区(index)的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

  • 当执行 git rm --cached <file> 命令时,会直接从暂存区(index)删除文件,工作区则不做出改变。

  • 当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

  • 当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

4 git 配置(git config)

git config 专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。

4.1 三种配置

这些环境变量可以存放在以下三个不同的地方:

/etc/gitconfig 文件

系统中对所有用户都普遍适用的配置。

若使用 git config 时用 --system 选项,读写的就是这个文件。

~/.gitconfig 文件:

用户目录下的配置文件只适用于该用户。

若使用 git config 时用 --global 选项,读写的就是这个文件。

.git/config 文件

当前项目的 Git 目录中的配置文件

这里的配置仅仅针对当前项目有效。

每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖~/.gitconfig 和 /etc/gitconfig 中的同名变量。

4.2 配置用户信息

配置个人的用户名称和电子邮件地址:

(设置提交代码时的用户信息)

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

4.3 查看配置信息

git config --list 

在配置里面,可以看到刚才配置的name和e-mail信息

4.3.1 查看特定配置信息

5 从github上下载单个文件

将网址复制到GitZip (kinolien.github.io)即可

参考资料:git diff的最全最详细的4大主流用法_快乐李同学的博客-CSDN博客_gitdiff

Git 基本操作 | 菜鸟教程 (runoob.com)

Git 笔记:基本操作工作流程相关推荐

  1. 浅谈Git的基本工作流程与简单的Git命令

    浅谈Git的基本工作流程与简单的Git命令 什么是GIT? 定义:是一个开源的分布式版本控制工具 功能: 代码备份 版本控制 协同开放 代码追溯 场景: 团队协同开放项目 Git仓库工作流程 Git常 ...

  2. Git之深入解析如何使用Git的分布式工作流程与如何管理多人开发贡献的项目

    一.分布式工作流程 如果现在拥有一个远程 Git 版本库,就能为所有开发者共享代码提供服务:在一个本地工作流程下,如果你也已经熟悉了基本 Git 命令,现在就可以学习如何利用 Git 提供的一些分布式 ...

  3. Git操作指南及工作流程(初学者必看)

    一.Git基本介绍 1.Git概述 git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. Git是Linus Torvalds 为了帮助管理 Linux 内核开发而 ...

  4. Git:分支的工作流程

    分支的工作流程 (A) 短期分支(Short-Lived)/主题分支(Topic Branches) (B) 长期分支 Long-Running Branches 一个简单通用的分支策略 仅仅使用一个 ...

  5. Git团队协作工作流程

    以github的仓库为例,假定已经配置git并有了自己的github账号. 1,通过github,把团队代码仓库(Fork源)Fork一份到自己的github仓库: 2,从自己的github仓库clo ...

  6. Git+Github 的工作流程

    目录 目录 1.fork 开源项目 2.Clone 开源项目 3.进行修改项目内容 ​4. Pull request(提交一个请求) ​​5.原作者就会收到一个请求 6.fetch 7.merge 8 ...

  7. 分布式管理控制系统Git与项目托管平台Github相关概念、工作流程与操作方法

    尐轩web前端技术博客 -- 丛培森 Payen S.Tsung --There's no place like 127. 0. 0. 1 目录视图 摘要视图 订阅 CSDN学院招募微信小程序讲师啦  ...

  8. Git工作流程和rebase与合并问题

    我和其他开发人员一起在一个项目上使用Git几个月了. 我有几年的SVN经验,所以我想我给这段关系带来了很多包袱. 我听说Git非常适合分支和合并,到目前为止,我只是没有看到它. 当然,分支很简单,但是 ...

  9. 基于git的工作流程

    本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...

最新文章

  1. 传统方法的点云分割以及PCL中分割模块
  2. 已开源!谷歌将AutoML应用到Transformer架构,实现机器翻译最佳性能
  3. Java中多线程概念详解
  4. 分布式锁和mysql事物扣库存_这个是真的厉害,高并发场景下的订单和库存处理方案,讲的很详细了!...
  5. 【pmcaff】麦肯锡:预测2025年将出现的12大颠覆技术【图】
  6. Python version 2.7 required, which was not found in the registry
  7. JavaFX UI控件教程(十九)之Hyperlink
  8. Apache服务器下载、安装、启动、关闭及卸载(win版)
  9. 职场必备的30套报表模板,满足95%的报表需求,一键套用无需代码
  10. 使用eclipse编写并运行你的第一个Android程序
  11. javaScript中值传递和引用传递
  12. 大数据-什么是云计算技术,云技术用什么语言开发
  13. 完成领导交代的任务并及时反馈,才叫真的完成任务
  14. 京东推荐商品列表API接口-(item_recommend-获取推荐商品列表API接口),京东API接口
  15. 股价狂跌超70%,特斯拉到底怎么了?
  16. 详细介绍 Node.js
  17. Protobuf 使用和原理
  18. 民生银行加入R3区块链联盟
  19. 支持直接外链的最佳网络硬盘OpenDrive
  20. 中国大数据公司市场价值排行榜发布

热门文章

  1. virtualbox vboxmanage命令
  2. 牛B的调试工具:OzCode
  3. python leetcode 1
  4. Logstash+Redis+Elasticsearch+Kibana+Nginx搭建日志分析系统
  5. JSP页面空指针异常调错办法之weblogic
  6. APACHE-TOMCAT集群环境部署
  7. 上海交通大学乐经良高数手写笔记-一元积分学
  8. 《组织行为学》_09 彩虹理论:人力资本越来越高怎么办?
  9. java怎么创建log4_如何使用log4j记录日志
  10. python如何更新包_python如何更新包 python更新包代码示例