技术标签: Git
先来理解一个概念,repository。你可以简单将它理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。这个目录通常称为仓库,或者叫版本库。
通过 git init 命令把这个目录变成 Git 可以管理的仓库:
1 |
git init |
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。不过,不建议你使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责。
初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。
我们看看这个目录下的文件结构:
01 |
$ ls |
02 |
HEAD |
03 |
config |
04 |
description |
05 |
index |
06 |
branches/ |
07 |
hooks/ |
08 |
info/ |
09 |
objects/ |
10 |
refs/ |
该目录下有可能还有其他文件,但这是一个全新的 git init 生成的库,所以默认情况下这些就是你能看到的结构。新版本的 Git 不再使用 branches 目录,description 文件仅供 GitWeb 程序使用,所以不用关心这些内容。config 文件包含了项目特有的配置选项,info 目录保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件。hooks 目录保存了客户端或服务端钩子脚本。
另外还有四个重要的文件或目录:HEAD 及 index 文件,objects 及 refs 目录。这些是 Git 的核心部分。
首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
现在我们编写一个readme.txt文件,内容如下:
1 |
Git is a version control system . |
2 |
Git is free software. |
一定要放到NowaMagicOnGit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。
和把大象放到冰箱需要3步相比,把一个文件放到Git仓库只需要两步。
第一步,用命令git add告诉Git,把文件添加到仓库:
1 |
$ git add readme.txt |
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令git commit告诉Git,把文件提交到仓库:
1 |
$ git commit -m "wrote a readme file" |
2 |
[master (root-commit) cb926e7] wrote a readme file |
3 |
1 file changed, 2 insertions(+) |
4 |
create mode 100644 readme.txt |
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。
git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
1 |
$ git add file1.txt |
2 |
$ git add file2.txt |
3 |
$ git add file3.txt |
4 |
$ git commit -m "add 3 files." |
现在总结一下今天学的两点内容:
1. 初始化一个Git仓库,使用git init命令。并且了解到一个仓库的文件组成结构。
2. 添加文件到Git仓库,分两步:
原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272一:原题内容Problem Description上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那
学习移动机器人SLAM、路径规划必看的几本书声明:推荐正版图书,文末也整理了pdf电子版的资源1.《鸟哥的Linux私房菜-基础篇》第四版快速入门linux操作系统,学习Linux相关命令,必须推荐的书2.C++ Primer Plus目前移动机器人开发的主流语言仍是C++,掌握C++是学习移动机器人的必经之路,该书也是被极力推荐的工具书3.ROS学习相关书籍(1)ROS机器人开发实践 -胡春旭(2)ROS_Robot_Programming_CN(3)ros_by_example_1
在master分支上执行git merge dev, 相当于把dev分支上的内容按时间顺序合并到master分支,最后会形成一笔新的commit。在master分支上执行git rebase dev 相当于在master分支上先缓存原有所有的commit,再把dev分支中的内容塞进去,最后再把原来master分支中不包含dev中的内容追加进去,所得结果形成新的master,commit无时间顺序。各分支原始状态和执行结果如下。master分支,作为操作基分支拉出mergeTest2、rebas
Java架构师成长之道之Java概述与开发环境搭建Java架构师成长之道2.1 Java概述Java自从1995年诞生以来,由于赶上了互联网、移动互联网以及大数据的信息技术发展趋势,逐渐由一门高级编程语言演变成开发平台以及运行平台。开发平台经过20多年(1995年正式对外公开发布)的发展已经逐步建立起自己强大的生态体系,在大型互联网应用开发,移动端Android...
一.Hive数据仓库(Data Warehouse):存储各种数据源,分析数据。存储需要采集工具数仓的特征:主题性(ETL:数据抽取);集成性:数据源多,抽取清洗转换;稳定性:历史数据周期内不允许修改;时变性:定期更新(月,季度,年);数据库:联机分析处理(OLAP)数据仓库的分层:源数据—>数据仓库—>数据应用源数据层:(ODS)数据比较乱数据仓库层:(DW)数据不会被修改,一致的准确的干净的数据对源数据进行了清洗后的数据...
最近对一个django项目进行修改,其中在models.py添加了新的字段,需要同步到数据库。尝试使用python manage.py syncdb提示成功,但未对数据库进行任何操作,到数据库中查看,新字段并没有同步进来。解决办法如下:python manage.py shell进入后 from django.db import connection新建一个
使用jinfo命令查看 RemoteMavenServer(Idea的一个进程) 时报错:Error attaching to process: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.101-b13. Target VM is 25.152-b28sun.jvm.hotspot...
为了过bluetooth的PTS测试,最近研究蓝牙相关的android源代码,发现很多不错的文章,这里准备研究一下下面一些列的博客连载文章。下面链接是一系列蓝牙源码分析的连载博客。希望看完后有所帮助。https://blog.csdn.net/shichaog/article/category/6445694/2https://blog.csdn.net/u012439416/articl...
文章目录更新内容新增方法getKeysextendsetSQL、setSQLRow修改方法hasItemstringify修改属性pretty_stringify源代码更新内容新增方法getKeys获取属性名列表,返回属性个数n_json ljsonstring ls_key_list[]long ll_key_countljson = create n_jsonljson.p...
1、提示应用工程配置错误,scheme没有配置,请检查appid并参考SDK使用文档原因:(1)检查QQ开放平台中URL schema的值是否为:QQ+转化成十六进制的App ID(2)检查工程中APP ID有没有写错_tencenOAuth = [[TencentOAuth alloc] initWithAppId:@"app id" andDelegate:self]...
1.什么是Origin header使用跨域url,会报Missing required request header. Must specify one of: origin,x-requested-with参考:https://www.jianshu.com/p/ccc4416ea298Origin: ""Origin: "<schema>://<ho...
修改配置文件并训练天天学Java,好久没跑过实验了,记录下,防止日后踩坑将mmdet.models.utils.se_layer.SELayer注册为plugin注意修改下参数channels为in_channels,否则会出现unexpected args channels的参数解析错误,不太明白源码怎么解析的# Copyright (c) OpenMMLab. All rights reserved.import mmcvimport torch.nn as nnfrom mmcv.c