当前位置: 首页 > 编程日记 > 正文

【学习笔记】git 使用文档

安装 git

# mac 环境
brew install git

检查是否安装成功

➜  ~ git --version
git version 2.20.1 (Apple Git-117)

卸载 git

➜  ~ which -a git
/usr/bin/git
➜  ~ cd /usr/bin
➜  bin sudo rm -rf git*

git init 命令

  1. 对一个空文件,git 初始化。文件名称增加了’git:(master)’,说明初始化成功了。
➜  mygit git init
Initialized empty Git repository in /Users/maimai/Documents/Demo/mygit/.git/
➜  mygit git:(master)
  1. 查看当前文件目录结构。发现原空文档下,多了一个.git文件夹。
➜  mygit git:(master) tree -a
.
└── .git├── HEAD		# 包含了一个分支的引用,通过这个文件Git可以得到下一次commit的parent,可以理解为指针├── config		# git仓库的配置文件├── description	# 仓库的描述信息,主要给gitweb等git托管系统使用├── hooks		# 存放一些shell脚本,可以设置特定的git命令后触发相应的脚本│   ├── applypatch-msg.sample│   ├── commit-msg.sample│   ├── fsmonitor-watchman.sample│   ├── post-update.sample│   ├── pre-applypatch.sample│   ├── pre-commit.sample│   ├── pre-push.sample│   ├── pre-rebase.sample│   ├── pre-receive.sample│   ├── prepare-commit-msg.sample│   └── update.sample├── info		# 存放仓库的一些信息│   └── exclude├── objects		# 存放所有的git对象│   ├── info│   └── pack└── refs├── heads	# 保存当前最新的一次提交的哈希值└── tags

查看部分文件:

➜  mygit git:(master) cat .git/HEAD		# 下一次commit的parent
ref: refs/heads/master
➜  mygit git:(master) cat .git/config	# git仓库的配置文件
[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = trueignorecase = trueprecomposeunicode = true

取消 git init 操作的命令为 rm -rf .git。git 初始化本质是增加了一个.git文件,删除之后即取消了初始化。

文件的状态变化周期

untrackedstagedmodifiedunmodifiedgit add {file}git reset HEAD {file}git commit -mgit rm --cached {file}编辑文件git rm --cached {file}git checkout -- {file}git add {file}untrackedstagedmodifiedunmodified
  1. untracked:未跟踪状态 —— 工作区增加新文件s, 但并没有加入到 git 库, 不参与版本控制。通过 git add 命令变为 staged 状态。
  2. staged: 已暂存状态 —— 对已修改文件的当前版本做了标记,存放在一个不可见的暂存区域,做为下次提交的内容的一部分。执行git commit则将修改同步到库中.
  3. unmodified:未修改状态 —— 文件已入库, 即版本库中的文件快照内容与文件夹中完全一致。
  4. modified: 已修改状态 —— 在工作目录下修改了文件。

查看初始状态

初始状态,工作区为最新代码,.git 文件保存版本库和暂存区内容【初始化的 git 项目,无暂存区】

➜  mygit git:(master) git status	# 初始状态
On branch masterNo commits yetnothing to commit (create/copy files and use "git add" to track)

增加文件

初始状态,增加文件 README.md 后,由初始状态转化为 untracked 状态(修改也存在的文件,状态更新为 modified)
修改内容仅存在本地工作区,版本库和暂存区都与master保持一致,未被修改【.git文件夹未更新】

➜  mygit git:(master) vi README.md
➜  mygit git:(master) ✗ tree		# 查看文档结构,其中添加了一个文件
.
└── README.md0 directories, 1 file
➜  mygit git:(master)git status	# 增加文件后,查看git状态,更换为 untracked
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)README.mdnothing added to commit but untracked files present (use "git add" to track)

git add .

使用 git add . 命令,将工作区中的修改文件 README.md 放进暂存区。此时处于暂存区的 README.md 文件处于staged状态【.git 目录下增加 index 和 objects/d6/1d841cf82eef2774ac3e57fb5072b9ef67b4fb】

➜  mygit git:(master)git add README.md	# 使用 add 命令,将修改内容放进暂存区
➜  mygit git:(master)git status			# add 命令后,原 untracked 状态修改为committed
On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   README.md

查看此时 mygit 的结构,发现 .git 文件夹下多了一个index的文件。

➜  mygit git:(master) ✗ tree -a
.
├── .git			# 保存项目的元数据、版本和分支的地方
│   ├── HEAD
│   ├── config
│   ├── description
│   ├── hooks
│   │   ├── applypatch-msg.sample
│   │   ├── commit-msg.sample
│   │   ├── fsmonitor-watchman.sample
│   │   ├── post-update.sample
│   │   ├── pre-applypatch.sample
│   │   ├── pre-commit.sample
│   │   ├── pre-merge-commit.sample
│   │   ├── pre-push.sample
│   │   ├── pre-rebase.sample
│   │   ├── pre-receive.sample
│   │   ├── prepare-commit-msg.sample
│   │   └── update.sample
│   ├── index			# 暂存区。Git 术语叫做“索引”
│   ├── info
│   │   └── exclude
│   ├── objects			# 对象数据库
│   │   ├── d6
│   │   │   └── 1d841cf82eef2774ac3e57fb5072b9ef67b4fb
│   │   ├── info
│   │   └── pack
│   └── refs
│       ├── heads
│       └── tags
└── README.md10 directories, 19 files
➜  mygit git:(master)cat .git/index	
DIRC_ÛE$Ya�_ÛE$Ya<��������.�'t�>W�Pr��g��	README.md`��\A�k�$�����mdU%

使用 git ls-files --stage 命令可以查看暂存区内容

➜  mygit git:(master) ✗ git ls-files --stage	
100644 0d862c702122bb62b6c21a2fc2f83128aa5a57b3 0	README.md

git丢弃本地修改 git checkout . && git clean -xdf

git commit -m

使用 git commit 命令,将暂存区的目录树写到版本库中。处于 staged 状态的 README.md 处于unmodified 状态。

➜  mygit git:(master)git commit -m 'first initial'	# 提交更新
[master (root-commit) 9d5ae58] first initial1 file changed, 1 insertion(+)create mode 100644 README.md
➜  mygit git:(master) git status		# 暂存区的文件写入.git文件
On branch master
nothing to commit, working tree clean

非初次提交状态,使用 git commit -a -m 'xxx' 可替代 git addgit commit 过程。直接从本地提交到版本库

git rm / git restore

修改文件并提交到暂存区后,使用 git rm --cached {filename} 命令 或 git restore --staged {filename},直接从暂存区删除文件,工作区修改保持不变

➜  mygit git:(master)git rm --cached README.md
rm 'README.md'
➜  mygit git:(master)git status
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)README.mdnothing added to commit but untracked files present (use "git add" to track)

git checkout

使用 git chekout . 命令 或 git chekout -- {filename},工作区的全部或指定文件被替换为暂存区中的文件。工作区的被更新的文件或存在被覆盖的风险。

➜  mygit git:(master) vi demo1.py
➜  mygit git:(master) ✗ python demo1.py
hello word!
➜  mygit git:(master)git checkout .
Updated 1 path from the index
➜  mygit git:(master) git status
On branch master
nothing to commit, working tree clean
➜  mygit git:(master) ls
README.md demo1.py
➜  mygit git:(master) cat demo1.py
➜  mygit git:(master)

git checktout HEAD .git checktout HEAD . 命令,会用 HEAD 指向的master分支中全部或部分文件替换暂存区及工作区的文件。

cat .gitignore		# 忽略某些文件
git diff			# 查看尚未暂存的文件更新了哪些部分
git diff --cached	# 查看已暂存的文件与上次提交的快照之间的差异
git commit			# 提交更新
git commit -a -m 'first initial'	# 跳过使用暂存区域的方式,自动将已跟踪过的文件暂存起来一并提交
git rm -f a.test		# 从git强制移除文件a.text
git rm --cached readme.txt
git restore --staged readme.txt

相关文章:

UIBezierPath和CAShapeLayer创建不规则View(Swift 3.0)

最近一个朋友在做图片处理的 App&#xff0c;想要实现类似 MOLDIV App 拼图的UI效果&#xff08;如何创建不规则的 view&#xff09;&#xff0c;就问我有什么想法。我首先想到的就是 UIBezierPathCAShapeLayer的方式&#xff0c;为了验证自己的想法&#xff0c;写了一个小 dem…

http响应状态

Servlet API&#xff1a; javax.servlet.http.HttpServletResponse 用于创建HTTP响应&#xff0c;包括HTTP协议的状态行、响应头以及消息体 HTTP状态码&#xff1a; 100-199&#xff1a;表示信息性代码&#xff0c;标示客户端应该采取的其他动作&#xff0c;请求正在进行。 200…

antlr.collections.AST.getLine()I问题的起因及解决

在我们的java web 项目中引入hibernate和struts&#xff0c;当我们使用HQL语句进行查询时会报 antlr.collections.AST.getLine()I的错误&#xff0c;导致程序无法继续运行&#xff0c;这并不是我们的程序写的有错误&#xff0c;出现这个异常的原因是因为我们使用的hibernate和s…

2018湖湘杯海选复赛Writeup

2018湖湘杯Writeup0x01 签到题0x02 MISC Flow0x03 WEB Code Check0x04 WEB Readflag0x05 WEB XmeO0x06 Reverse Replace0x07 MISC Disk0x08 Crypto Common Crypto0x09 Reverse HighwayHash640x10 Web Mynot0x01 签到题 关注合天智汇公众号&#xff0c;回复hxb2018得到flag。0x…

Operation Queues并发编程

并发、异步在我们的编程中&#xff0c;见到的太多了。在iOS中&#xff0c;实现并发的主要三个途径Operation Queues、Dispatch Queues、Dispatch Sources&#xff0c;今天我们就来详细介绍Operatin Queues的使用&#xff0c;花了两天时间写这一篇&#xff0c;值得一看。 为什么…

socket 服务器浏览器与服务器客户端实例

一、服务器与浏览器 // 取得本机的loopback网络地址&#xff0c;即127.0.0.1 IPAddress address IPAddress.Loopback; IPEndPoint endPoint new IPEndPoint(address, 49152); Socket socket new Socket(AddressFamily.InterNetwork, Socke…

匹配3位或4位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔...

public bool IsPhone(string input){string pattern "^\\(0\\d{2}\\)[- ]?\\d{8}$|^0\\d{2}[- ]?\\d{8}$|^\\(0\\d{3}\\)[- ]?\\d{7}$|^0\\d{3}[- ]?\\d{7}$";Regex regex new Regex(pattern);return regex.IsMatch(input);} 转载于:https://www.cnblogs.com/…

Mac MySQL配置环境变量的两种方法

第一种&#xff1a; 1.打开终端,输入&#xff1a; cd ~ 会进入~文件夹 2.然后输入&#xff1a;touch .bash_profile 回车执行后&#xff0c; 3.再输入&#xff1a;open -e .bash_profile 会在TextEdit中打开这个文件&#xff08;如果以前没有配置过环境变量&#xff0c;那么这…

linux之x86裁剪移植---字符界面sdl开发入门

linux下有没有TurboC2.0那样的画点、线、圆的图形函数库&#xff0c;有没有grapihcs.h&#xff0c;或者与之相对应或相似的函数库是什么&#xff1f;有没有DirectX这样的游戏开发库&#xff1f;SDL就是其中之一。SDL&#xff08;Simple DirectMedia Layer&#xff09;是一个夸平…

iOS 视频捕获系列Swift之AVFoundation(一)

iOS 视频捕获系列之AVFoundation(一) AVCaptureMovieFileOutput系列 在iOS开发过程中&#xff0c;或多或少的都涉及视频的操作。 尤其在去年直播行业的带动下&#xff0c;移动端对视频的处理也愈来愈发要求严格。 本文也是在 这篇 中参考而来。 Swift 版本哦&#xff01; 本文 …

C#做外挂常用API

using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; //这个肯定要的 namespace WindowsApplication1 {class win32API{public const int OPEN_PROCESS_ALL 2035711;public const int PAGE_READWRITE 4;public con…

phpinfo 信息利用

0x01 基础信息 1.system info:提供详细的操作系统信息&#xff0c;为提权做准备。 2.extension_dir:php扩展的路径 3.$_SERVER[‘HTTP_HOST’]:网站真实IP、CDN什么的都不存在的&#xff0c;找到真实ip&#xff0c;扫一扫旁站&#xff0c;没准就拿下几个站。 4.$_SERVER[‘…

iOS三种录制视频方式详细对比

先附上参考资料 http://www.jianshu.com/p/16cb14f53933 https://developer.apple.com/library/content/samplecode/AVSimpleEditoriOS/Introduction/Intro.html https://github.com/objcio/VideoCaptureDemo https://github.com/gsixxxx/DTSmallVideo https://github.com/Andy…

C# 实现Oracle中的数据与Excel之间的转换

最近项目要求实现数据库之间数据在各个数据库之间导入导出&#xff0c;在此做个笔记 1. 将Oracle中的表导入到Excel中&#xff0c;反之亦然 private static readonly string connectionString ConfigurationManager.ConnectionStrings["OracleConnection"].Connecti…

【转】Word2007中不连续页码设置 多种页码设置

【转】Word2007中不连续页码设置 多种页码设置 页码是论文必不可少的部分。我们看一下如何添加页码&#xff0c;并且针对一些特殊的格式要求怎么应对&#xff1a; 如果是【毕业论文】有多种混合页码&#xff0c;有Ⅰ、Ⅱ、Ⅲ。。。还有1、2、3 。。。请直接看【第二种方法】。 …

vim编辑器异常退出产生备份文件

当非正常关闭vim编辑器时&#xff08;比如直接关闭终端或者电脑断电&#xff09;&#xff0c;会生成一个.swp文件&#xff0c;这个文件是一个临时交换文件&#xff0c;用来备份缓冲区中的内容。 需要注意的是如果你并没有对文件进行修改&#xff0c;而只是读取文件&#xff0c…

从0到1思考与实现iOS-Widget

讲述之前首先看下demo效果图&#xff1a; 基本的展开收起、本App本体交互然后再展示几个效果不错的 Widget app 毒物 && KeepESPNPCalcMusixmatchFantastical 2Carrot Weatherdemo 地址在此&#xff01;欢迎star 比心一、Widget总览 Widget 是 iOS8 推出第一版&…

Android Studio 初体验

Google在I/O2013大会上发布了Android新的开发工具Android Studio&#xff0c;趁周末时间做了一下尝试。有需要的可以在http://developer.android.com/sdk/installing/studio.html下载&#xff0c;当前版本是V0.1。官方解释&#xff1a;Android Studio is anew Android developm…

JAVA面试题(2)

1 String 与 new 的不同 使用“”赋值不一定每次都创建一个新的字符串&#xff0c;而是从“字符串实例池”中查找字符串。使用“new”进行赋值&#xff0c;则每次都创建一个新的字符串。 2 String与StringBuffer String类是不可变类&#xff0c;字符串一旦初始化后&#xff0c…

限制HTTP数据包发送Referer

一般点击一个A标签的时候都会发送 Referer 什么是 Referer&#xff1f; 就是你点击A标签 Referer的信息告诉服务端你从哪里点击出来的 可在HTML上加 <meta name"referrer" content"no-referrer">这样就不发送Referer头了

TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

把这三个协议放到一起学习是因为这三个协议处于同一层&#xff0c;ARP协议用来找到目标主机的Ethernet网卡Mac地址&#xff0c;IP则承载要发送的消息。数据链路层可以从ARP得到数据的传送信息&#xff0c;而从IP得到要传输的数据信息。 1.IP协议 IP协议是TCP/IP协议的核心&…

数据结构与算法分析(C++版)(第二版)

查看书籍详细信息&#xff1a; 数据结构与算法分析&#xff08;C版&#xff09;&#xff08;第二版&#xff09; 内容简介 本书采用程序员最爱用的面向对象C语言来描述数据结构和算法&#xff0c;并把数据结构原理和算法分析技术有机地结合在一起&#xff0c;系统介绍了各种…

nginx反向代理原理讲解

一 、概述 反向代理&#xff08;Reverse Proxy&#xff09;方式是指以代理服务器来接受Internet上的连接请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff1b;并将从服务器上得到的结果返回给Internet上请求连接的客户端&#xff0c;此时代理服务…

cojs 简单的数位DP 题解报告

首先这道题真的是个数位DP 我们考虑所有的限制&#xff1a; 首先第六个限制和第二个限制是重复的&#xff0c;保留第二个限制即可 第五个限制在转移中可以判断&#xff0c;不用放在状态里 对于第一个限制&#xff0c;我们可以增加一维表示余数即可 对于第四个限制也是同理 对于…

iOS ERROR ITMS - 打包上传报错整理

作者 Silence_广 关注 2017.03.24 11:12 字数 706 阅读 45评论 1喜欢 12ERROR ITMS-90034 ERROR ITMS-90034这个问题就是你的包里面的证书和开发者中心的证书不一样所以提交的时候回报错. 如果试过网上很多的解决方法之后&#xff08;诸如重新制作证书&#xff0c;删调过期证书…

照片墙瀑布流加载与阻止加载

网上大部分主流的瀑布流应用基本都是由后端在提供图片地址的同时提供图片宽高&#xff0c;这样&#xff0c;前端不必等待图片渲染完成&#xff0c;可以根据图片的宽高先把装载图片的容器或父节点先放上页面&#xff0c;完成基础性的布局&#xff0c;再让图片以渐变或其他方式逐…

利用Nginx实现简易负载均衡

基本思路如下&#xff1a; 比如我们有三个服务器&#xff1a; 其中: 130.251是反向代理转发服务器 130.251和130.238分别是负载服务器 Mysql服务器没有标出来, 为方便区分,我们先把1号负载的首页写成111111111 2号负载的首页写成222222 然后我们现在控制130.251, 把nginx配置文…

两行代码搞定iOS自定义HUD风格动画弹窗(支持选择记录) - SKChoosePopView的使用和实现思路

作者 ShevaKuilin 关注 2017.03.25 18:28* 字数 2014 阅读 270评论 0喜欢 23さらい屋五葉原文地址----> MyBlog HUD风格的选项弹窗是我们在日常开发中经常会碰到的一类需求&#xff0c;通常因为项目周期等因素&#xff0c;很少会专门抽出时间来对此类弹窗进行专门的定制开发…

yii2框架随笔29

今天我们来看UrlRule.php <?php /*** link http://www.yiiframework.com/* copyright Copyright (c) 2008 Yii Software LLC* license http://www.yiiframework.com/license/*/ namespace yii\web; use Yii; use yii\base\Object; use yii\base\InvalidConfigException; /*…

八种简易健康减肥瘦身法

①原地跑&#xff0c;紧实大腿肌肉&#xff1b;②上楼梯&#xff0c;瘦小腿、大腿、臀&#xff1b;③步行&#xff0c;瘦腿、腰&#xff1b;④瑜珈&#xff0c;瘦全身&#xff1b;⑤跳舞&#xff0c;瘦全身&#xff1b;⑥跳绳&#xff0c;瘦大腿、小腿&#xff1b;⑦晨操&#…