git:认识git和基本操作(1)

2024-09-07 14:28
文章标签 认识 基本操作 git

本文主要是介绍git:认识git和基本操作(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、版本控制器

1.安装git

2.创建git本地仓库

3.配置git

二、git操作(1)

1.工作区、暂存区、版本库

2.添加文件

3.查看.git

4.修改文件


一、版本控制器

        所谓的版本控制器,就是能让你了解到每一个文件的修改历史。相应的,在企业级开发中,用来记录一个工程的每一次改动和管理版本迭代,同时方便多人协作开发。

        git就是一种版本控制器。

        需要注意的是,所有的版本控制器,只能跟踪文本文件的改动,比如TXT、网页程序源代码。版本控制器可以告诉你当前文件的每次改动,比如在第5行加入了字符串"Linux",删除了第10行。

        而图片、视频等这些二进制文件,虽然也能由版本控制器管理,但是无法跟踪其变动,只能把文件的每次变化记录下来,比如图片大小从100kb变到了150kb,但是具体图片内容,版本控制器无从得知。

1.安装git

  • centos
sudo yum -y install git

查看安装的git的版本

git --version
  • ubuntu
sudo apt-get install git -y

2.创建git本地仓库

        在你的电脑上,新建一个文件夹,我们要对该目录下的所有文件进行版本控制,那么这个文件目录被称为仓库(本地仓库)。

        进入这个目录后,使用下面这条命令创建git仓库

git init

        创建成功后,该目录下生成一个隐藏目录 .git,该目录是git用来跟踪管理仓库的,切记不要改动该目录下的文件。

3.配置git

git config --global user.name "用户名(自填)"
git config --global user.email "绑定的邮箱"

        其中,--global 是一个选项,使用该选项,表示当前这台机器的所有git仓库都使用这个配置。如果你希望在不同仓库中使用不同的用户名和邮箱,则无需使用--global选项,但是要注意,执行命令时,当前路径必须是仓库路径

  • 查看配置的命令
git config -l
  • 删除配置的命令
git config --global --unset user.name
git config --global --unset user.email

二、git操作(1)

1.工作区、暂存区、版本库

        现在要纠正一下原来对“仓库”的解释,严格来讲,我们所创建的文件目录并不是 git仓库。

        在这个文件目录下,去掉 .git  文件目录,其他文件目录均称为工作区,在工作区创建我们要版本控制的代码文件。

        而.git所在的文件夹称为版本库(repository),即真正意义上的本地仓库

        在 .git 目录下,有一个文件为 index ,这是一个索引文件,该文件内容是一个目录树,这个文件也被称为暂存区(stage)。

        

  • 图中左侧为工作区,右侧为版本库。版本库中存有很多东西,其中最为重要的就是暂存区(stage)
  • 在创建git版本库的同时,git为我们自动创建唯一的一个master分支,以及指向master分指的HEAD指针
  • 工作区的一次修改(包括添加文件、删除文件、修改文件)在执行 git add 命令后,这条记录会被记入到暂存区,暂存区的目录树索引会更新。
  • 当执行提交操作 git commit,master分支作出相应的更新,这才是真正意义上的暂存区的目录树写入到版本库中。
  • 值得一提的是,每一次add记录,都对应着objects目录下的一个新git对象
  • 同时,不难看出来,在工作区新创建的文件,不能称为向版本库中新增文件,而是要经过添加命名git add和提交命令git commit 才能将文件添加到仓库进行管理。

2.添加文件

        在包含.git的目录,即工作区,新增一个文件,使用git add将文件添加到暂存区。

  • 添加一个或多个文件到暂存区:
git add [file1] [file2] ···
  • 添加指定目录到暂存区,包括子目录:
git add [dir]
  • 添加当前目录下的所有改动到暂存区:
git add .

        再执行 git commit 命令将暂存区内容添加到本地仓库:

  • 提交暂存区全部内容到本地仓库:
 git commit -m "提交信息"
  • 提交暂存区的指定文件到本地仓库:
git commit [file1] [file2] ··· -m "提交信息"

        注意,git commit通常都要使用 -m 选项,后面紧跟描述本次提交的信息,该部分绝对不要省略,并且要认真描述,用来记录每一个修改的细节,每一次提交信息外界都可以看到。

        提交成功后,一般会显示本次提交的大致变动,比如有几个文件发生了修改。

        也可以执行多次add 命令后,只执行一次commit命令。

        git log命令可以查看历史提交信息,显示从最近到最远的提交日志,并且可以看到commit时的描述信息。可以加上选项 --pretty=oneline打印得更简洁。

git log --pretty=oneline

3.查看.git

[euto@VM-4-13-centos linux]$ tree .git
.git
|-- branches
|-- COMMIT_EDITMSG
|-- config
|-- description
|-- FETCH_HEAD
|-- HEAD
|-- hooks
|   |-- applypatch-msg.sample
|   |-- commit-msg.sample
|   |-- post-update.sample
|   |-- pre-applypatch.sample
|   |-- pre-commit.sample
|   |-- prepare-commit-msg.sample
|   |-- pre-push.sample
|   |-- pre-rebase.sample
|   `-- update.sample
|-- index
|-- info
|   `-- exclude
|-- logs
|   |-- HEAD
|   `-- refs
|       |-- heads
|       |   `-- main
|       `-- remotes
|           `-- origin
|               |-- HEAD
|               `-- main
|-- objects
|   |-- 00
|   |   |-- 471d97625e1da7be60c8330d5ee742ae3de972
|   |   `-- 5bd7898161cf689c01f8fe247d5b78bfb170d8
|   |-- 03
|   |   |-- 0966c31fa8a450374183ddcfb3fa15ead743e3
|   |   `-- f787a22c2c0d4ba6a5e82b66854ee120569ec4
|   |-- 04
|   |   `-- 4ce1b1b76cef2bf2807b4365904608f51f49f7
|   |-- 06
|   |   `-- 7ab93d0eb926463be10ff5cf9499e7615795ef
|   |-- 08
|   |   `-- b9dcc5629e232dad9fe08331efc7e9cfb0d586
|   |-- 0c
|   |   |-- 1387f0456c58b21fee9b1bdb41e94e902b2b4f
|   |   `-- 5e13bb4abdfff62f93a30cb236c47ffafa0d6a
|   |-- 0d
|   |   |-- 4c71acbe849b5d4293208ed3236dc5844793fa
|   |   `-- 4fc5e74b204a41129f8d66ea292552e00e877a
|   |-- 12
|   |   `-- e59bd35202d7a58c67b408718b3d53891ac97c
|   |-- 14
|   |   `-- 0e966c5da9e22bc46197b61a10730e97497332
|   |-- 19
|   |   |-- 4bbc0e0736449d86cd61f3cd956080430f7588
|   |   `-- 8b19d2d6f6429981116f7adbad04a205cf672c
|   |-- 1e
|   |   `-- 57d506173ac36614ad84205f0128b7a46c82d9
|   |-- 27
|   |   |-- 43f50a6fb3c0bdcadf2b53473c52266f20f9d9
|   |   `-- d4d181f35233380f9a5b3666bcba845d40e8cc
|   |-- 28
|   |   `-- 39432fa018ac3497ee3d75c547faad10d1f62e
|   |-- 2d
|   |   `-- 2790a8fcac3a9049d0e21e6eb18f115563bbd2
|   |-- 2e
|   |   `-- 2cb3315239d581ac7e8e837569aa4499804799
|   |-- 32
|   |   `-- 9af3ddffc6dfff3dc00347618dba749b2c95ac
|   |-- 33
|   |   |-- 3667bfc55fb2b6656cbf6396cf5c0e7c8949d3
|   |   `-- 8c0b0e4625d4a35890ded04f70326b968f6a99
|   |-- 34
|   |   |-- 479b790db1fcb09030eb989087f82ae2449785
|   |   `-- 80f4138f12da89b1e0d673cf9861c7749e4538
|   |-- 38
|   |   |-- 089b1c1209bf1a57b9b8bf97b1f219ef16a537
|   |   `-- d64333487dd9efacd9eedca1615d9a2e4785ff
|   |-- 3a
|   |   `-- 295da335fee7e73412e794c19528a7a35883ba
|   |-- 42
|   |   |-- aee1c57253456029768871eca1a7a75f8b73cb
|   |   `-- fd4d4cb51e4cd7937de117c7d923fe00a86761
|   |-- 44
|   |   `-- fd6f6a23cf0f61f7f05352b9e654b09acf2733
|   |-- 45
|   |   `-- 1800beac284115f2ba785758c60d8bad47a7ba
|   |-- 46
|   |   `-- d21224ff78a7709b32d47e9a105ca4ad3f17a1
|   |-- 4a
|   |   `-- 13445342dcac63cb4feb454d3d25af32a6238b
|   |-- 54
|   |   `-- 69635c6cb8ff8bbc382b4aff24e75cfc6cbc94
|   |-- 57
|   |   `-- 5ab719d5c4a7cbb1e253c5a84ff6f8d6f52507
|   |-- 5c
|   |   `-- 5322d606be999bcf8ffa8c8d566caf0c623ff8
|   |-- 5e
|   |   |-- 6569d78cd74d9ee7830db323e8d568daa2196a
|   |   `-- d0a69da953585cc58cf03861406e0e8b8d2c4f
|   |-- 5f
|   |   `-- 8a3d11c4c3037246c458f59186df2f3b51e3b1
|   |-- 62
|   |   `-- 24f291a3ab2532f482627ff0c88b7717bcd2b7
|   |-- 63
|   |   `-- ad196b2d3ca300548364d335fafa8d77aee646
|   |-- 64
|   |   |-- 92bf25a504595983ff71585b3d8b9e91f4c6c6
|   |   `-- d337de3a72a723443b1731999d2719b53fb7eb
|   |-- 67
|   |   `-- 5f84131c79508c1edc4375bc4759d29f044d8b
|   |-- 68
|   |   |-- 2ada5f995f3cae515a6d99f97e7a7b145ca733
|   |   `-- 7a85b539e7098e5f11173bb3b0965841524980
|   |-- 6a
|   |   `-- 779fc3e200129fbafacff53b24208d353f0699
|   |-- 71
|   |   `-- 2d21984a4ff70bdb0de2580556a1cfed756b3a
|   |-- 78
|   |   `-- 3e34e5b527b2017d9c9bbf7e809533e3d35027
|   |-- 79
|   |   `-- 4f2ecd521c823dd04c005c6f158628a5832c60
|   |-- 7a
|   |   |-- 3219ce9e17a833d11421c72ce1a72fd2c14fe6
|   |   `-- 519e37d69cc75cf94ca61a7ac3255e71095fd3
|   |-- 82
|   |   `-- 0ee450b3703159778a6928c201e0c194a55f64
|   |-- 96
|   |   `-- aa6b23d2ec9a9c2303a97d692f353dc60eca2b
|   |-- 98
|   |   `-- 52295b804994c7c90ba84fa1ce10de5845e95d
|   |-- 9e
|   |   `-- e1751b21a33449b7c1fe9a2aabd7a2c09e1f11
|   |-- 9f
|   |   `-- 2719e5efdc93384938f0c1903bc50872396f44
|   |-- ad
|   |   |-- 5c4327c85081b62207bf268b687130c9790462
|   |   `-- c4df3f72a3ec3855e4f414e8d3bf6e817dabba
|   |-- ae
|   |   `-- 22998d9a7cdd4183fedd92916238d2b551809b
|   |-- af
|   |   `-- b5f3234eb68146ba559ba2e5294c5074b6ea50
|   |-- b1
|   |   `-- fad596cb8799c5084bb931d7abf4ce54fdee8f
|   |-- b4
|   |   `-- 781363f17c2bfd3e204c5bf93bd189f137bb60
|   |-- b5
|   |   |-- 8b45a92c412792068414b62efd49d66e19b5d8
|   |   `-- fdfc70e3d67e6d3f679eb6a56f405a5dbe03dc
|   |-- b6
|   |   `-- 18cda73c4b96d544ff4d4cfe6761babd044e23
|   |-- bd
|   |   `-- 4471665031022b2e3a050ae784d90cde7152d3
|   |-- c0
|   |   `-- 7feb66aed4a111add1bc612af7f27dc6081231
|   |-- c6
|   |   `-- 127b38c1aa25968a88db3940604d41529e4cf5
|   |-- ce
|   |   `-- 57ef9eee57b3c4608f3faa05584db445194b78
|   |-- cf
|   |   `-- c581216c31e9317914f506432cc75d523a8e4f
|   |-- d1
|   |   `-- 8e080c80870872840e6a5409cf1c6bb52b4fa3
|   |-- d2
|   |   |-- 4660b353635f9c31e2c73ec6644254bd235ee0
|   |   `-- 8085ff8ac79f9c24e2addf140e483bdc5e5f83
|   |-- d7
|   |   `-- ad7836b2ab00963be1504d50929d2b70e90dac
|   |-- d8
|   |   `-- 2599595fd876ed7e2828d370da4167950f7568
|   |-- dd
|   |   `-- 26317dc8be7964e970eec88e1a845808ebbb21
|   |-- e5
|   |   `-- 20b7b9de20f289c5b9d80473f3a77ad6ff2176
|   |-- ea
|   |   `-- 697bb66baaedc922fe5788b88abebb0b7725b0
|   |-- ed
|   |   |-- a86fc6852005ae53e13f2469830c17eb20a051
|   |   `-- f206860392e5bc08d4136634d8710f546b3fd0
|   |-- ee
|   |   `-- ff1409a04ba4ccaf3f8fd119de8ade1eaf8e31
|   |-- f4
|   |   `-- ffd9071d165902fbbdf9c60f9a3b33ae079849
|   |-- f5
|   |   `-- ecb77f858a338b8f67f01c81b9c147a81b12b6
|   |-- fc
|   |   `-- 4be3706059fe7aac8bbe1a449b92a8e81a2792
|   |-- fe
|   |   `-- a0c9178c67c00e9d5fd66538784c1de3fec302
|   |-- info
|   `-- pack
|-- ORIG_HEAD
|-- packed-refs
`-- refs|-- heads|   `-- main|-- remotes|   `-- origin|       |-- HEAD|       `-- main`-- tags86 directories, 113 files
[euto@VM-4-13-centos linux]$ 

        这是我的一个git仓库,其中:

  • index就是暂存区,add以后的内容都添加到了这里
  • HEAD就是默认指向master分支的指针
//这里我修改我的默认分支为main
[euto@VM-4-13-centos linux]$ cat .git/HEAD 
ref: refs/heads/main
[euto@VM-4-13-centos linux]$ 

        而默认的master分支,其实就是最新一次提交的commit id

//最新的commit id
[euto@VM-4-13-centos linux]$ cat .git/refs/heads/main 
afb5f3234eb68146ba559ba2e5294c5074b6ea50
[euto@VM-4-13-centos linux]$ 
  • objectsgit的对象库,里面包含着记录每一次修改的git对象。当执行git add命令时,暂存区的目录树被更新,同时工作区的修改内容被写入到对象库中新创建的一个git对象中。
[euto@VM-4-13-centos linux]$ ls .git/objects/
00  06  0d  19  28  32  38  44  4a  5c  62  67  71  7a  98  ad  b1  b6  c6  d1  d8  ea  f4  fe
03  08  12  1e  2d  33  3a  45  54  5e  63  68  78  82  9e  ae  b4  bd  ce  d2  dd  ed  f5  info
04  0c  14  27  2e  34  42  46  57  5f  64  6a  79  96  9f  af  b5  c0  cf  d7  e5  ee  fc  pack

        要查找objects中的git对象时,将每一次提交的commit id分为两部分,前2位是文件夹名称,后38位是文件名称。

        找到该文件后,一般不能直接查看文件内容,该类文件是经过SHA(安全哈希算法)加密过的文件,不过可以使用 git cat-file 命令查看文件内容。

        比如我们查看最新一次提交的commit id的git 对象。

[euto@VM-4-13-centos linux]$ git cat-file -p  afb5f3234eb68146ba559ba2e5294c5074b6ea50
tree d18e080c80870872840e6a5409cf1c6bb52b4fa3
parent 2e2cb3315239d581ac7e8e837569aa4499804799
parent d7ad7836b2ab00963be1504d50929d2b70e90dac
author Euto <xydbws@163.com> 1710509194 +0800
committer Euto <xydbws@163.com> 1710509194 +0800main
[euto@VM-4-13-centos linux]$ 
//"main"是最新一次提交的描述

        其中,还有一行

tree d18e080c80870872840e6a5409cf1c6bb52b4fa3

        也使用同样方法打印

[euto@VM-4-13-centos linux]$ git cat-file -p  d18e080c80870872840e6a5409cf1c6bb52b4fa3
100644 blob c6127b38c1aa25968a88db3940604d41529e4cf5	.gitignore
040000 tree 0d4c71acbe849b5d4293208ed3236dc5844793fa	1121
040000 tree 675f84131c79508c1edc4375bc4759d29f044d8b	1123
040000 tree bd4471665031022b2e3a050ae784d90cde7152d3	27
040000 tree 338c0b0e4625d4a35890ded04f70326b968f6a99	313
040000 tree 08b9dcc5629e232dad9fe08331efc7e9cfb0d586	315
100644 blob b5fdfc70e3d67e6d3f679eb6a56f405a5dbe03dc	README.en.md
100644 blob 64d337de3a72a723443b1731999d2719b53fb7eb	README.md
[euto@VM-4-13-centos linux]$ 
//

        打印目录 315

[euto@VM-4-13-centos linux]$ git cat-file -p 08b9dcc5629e232dad9fe08331efc7e9cfb0d586
100644 blob 5e6569d78cd74d9ee7830db323e8d568daa2196a	test.cpp
[euto@VM-4-13-centos linux]$ 

        为了便于对比,此处的test.cpp文件新增一行修改

E>  1 t2 
E>  3 dev cp4 5 //这一行是新增的6 "新增一行用于测试"

        完成addcommit后,按照之前的步骤找到最新一次提交的git对象。对比不同git对象同一个文件的记录:

[euto@VM-4-13-centos linux]$ git cat-file -p 8a476b2cdc47f29ec32b951dca2d035dc6103778
tdev cp"新增一行用于测试"
[euto@VM-4-13-centos linux]$ git cat-file -p  5e6569d78cd74d9ee7830db323e8d568daa2196a
tdev cp
[euto@VM-4-13-centos linux]$ 

        总结:

        在add阶段,所有的add操作变动都被记录下来到一个git对象中,而git对象又是树状管理目录,这样发生修改的每一次add都被有条不紊的记录下来。

        在完成commit提交操作后,只生成一个commit id一个commit id对应一个git对象。一次提交会记录add操作后的所有文件内容,此时有的文件发生了修改,有的文件没有发生修改。

        无论如何,本次提交都把当前状态的所有的文件保存下来,即git控制的一个版本。

4.修改文件

        git比其他版本控制器设计给更优秀,是因为git跟踪并管理的,并非是文件,而是修改

        在工作区,对README文件作一些修改。

[euto@VM-4-13-centos linux]$ cat README.md 
//新增一行修改
"========="
[euto@VM-4-13-centos linux]$ 

        此时,本地仓库中README工作区的README是不同的,可以使用git status查看当前仓库在上次提交后是否有文件被修改。

[euto@VM-4-13-centos linux]$ git status 
# On branch main
# Your branch is ahead of 'origin/main' by 16 commits.
#   (use "git push" to publish your local commits)
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   README.md
#
no changes added to commit (use "git add" and/or "git commit -a")
[euto@VM-4-13-centos linux]$ 

        上面的结果显示,有哪些文件被修改了,需要添加和提交。但是如何知道修改的具体内容呢?可以使用 git diff [文件] 命令显示暂存区和工作区文件的差异,显示的格式正是Unix通用的diff格式,也可以使用git diff HEAD -- [file]查看版本库和工作区的差异。

[euto@VM-4-13-centos linux]$ git diff README.md
diff --git a/README.md b/README.md
index 64d337d..69b6c49 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,2 @@
-# linux
-
-#### 介绍
-这个轮子用来学习linux
-
-#### 软件架构
-软件架构说明
-
-
-#### 安装教程
-
-1.  xxxx
-2.  xxxx
-3.  xxxx
-
-#### 使用说明
-
-1.  xxxx
-2.  xxxx
-3.  xxxx
-
-#### 参与贡献
-
-1.  Fork 本仓库
-2.  新建 Feat_xxx 分支
-3.  提交代码
-4.  新建 Pull Request
-
-
-#### 特技
-
-1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gite
+//新增一行修改
+"========="
(END)
 git diff HEAD -- README.md

这篇关于git:认识git和基本操作(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145314

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus