Git仓库的使用(Linux)

1 Git简介

1.1 什么是Git和版本系统

  • Git是目前世界上最先进的分布式版本控制系统
  • 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

1.2 Git 和其它版本控制系统的差别

Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方式。 从概念上来说,其它大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion、Perforce、Bazaar 等等) 将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异 (它们通常称作 基于差异(delta-based) 的版本控制)
在这里插入图片描述

Git 不按照以上方式对待或保存数据。反之,Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
在这里插入图片描述

1.3 Git的三种状态

Git 有三种状态: 已提交(committed)、已修改(modified) 和 已暂存(staged)。

  • 已修改表示修改了文件,但还没保存到数据库中
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
  • 已提交表示数据已经安全地保存在本地数据库中

1.4 Git 项目的三个阶段

Git 项目的三个阶段:工作区、暂存区以及 Git 目录
在这里插入图片描述

工作区是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。

1.5 Git的工作流程

(1)在工作区中修改文件

(2)将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。

(3)提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

如果 Git 目录中保存着特定版本的文件,就属于已提交状态。 如果文件已修改并放入暂存区,就属于已暂存状态。 如果自上次检出后,作了修改但还没有放到暂存区域,就是 已修改 状态。

2 Git基础操作

(1)安装Git: yum install -y git

(2)获取 Git 仓库通常有两种方式:

  • 将尚未进行版本控制的本地目录转换为 Git 仓库。
  • 从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone

2.2 记录每次更新到仓库
2.3 查看提交历史
2.4 撤消操作
2.5 远程仓库的使用

(3)初始化版本库

[root@server1 ~]# mkdir test
[root@server1 ~]# cd test/
[root@server1 test]# git init
Initialized empty Git repository in /root/test/.git/
[root@server1 test]# ls -a
.  ..  .git
[root@server1 test]# cd .git/
[root@server1 .git]# ls
branches  config  description  HEAD  hooks  info  objects  refs

.git目录是git跟踪管理版本库的

(4)用户信息

  • github注册的邮箱和用户名
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

(5)查看git的状态

[root@server1 test]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
[root@server1 test]# git status -s
[root@server1 test]# echo westos > README.txt
[root@server1 test]# git status -s
?? README.txt
[root@server1 test]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	README.txt
nothing added to commit but untracked files present (use "git add" to track)

(6)跟踪新文件

[root@server1 test]# git add README.txt 
[root@server1 test]# git status -s
A  README.txt
[root@server1 test]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   README.txt

(7)提交更新

[root@server1 test]# git commit -m "add README.txt" ##  -m 选项以在命令行中提供提交注释。
[master (root-commit) 4ab1509] add README.txt
 1 file changed, 1 insertion(+)
 create mode 100644 README.txt
[root@server1 test]# git status 
# On branch master
nothing to commit, working directory clean

(8)状态简览

[root@server1 test]# git status -s
[root@server1 test]# echo linux >> README.txt ## 跟踪文件
[root@server1 test]# git status -s  ## M在右边表示已修改,未暂存
 M README.txt
[root@server1 test]# git status 
# On branch master
# 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.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@server1 test]# git add README.txt ##将修改后的文件添加到缓存区
[root@server1 test]# git status 
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   README.txt
#
[root@server1 test]# git status -s
M  README.txt
[root@server1 test]# git commit -m "modify v1"  ## 提交更新
[master d543221] modify v1
 1 file changed, 1 insertion(+)
[root@server1 test]# git status -s
[root@server1 test]# git log  ## 查看日志
commit d543221b5b31d97e5478028c1b7ad1a4c67db647
Author: kakkka <kakkk@163.com>
Date:   Fri Mar 12 19:40:09 2021 +0800

    modify v1

commit 4ab15094d4ef37a93c8678e60cba7d7600d3b027
Author: kakkka <kakkk@163.com>
Date:   Fri Mar 12 19:37:53 2021 +0800

    add README.txt

(9)撤销和版本回退

[root@server1 test]# git reflog  版本回退
d543221 HEAD@{0}: commit: modify v1
4ab1509 HEAD@{1}: commit (initial): add README.txt
[root@server1 test]# echo linux >> README.txt 
[root@server1 test]# echo linux >> README.txt 
[root@server1 test]# git status -s
 M README.txt
[root@server1 test]# git add README.txt 
[root@server1 test]# git status -s
M  README.txt
[root@server1 test]# cat README.txt 
westos
linux
linux
linux
[root@server1 test]# echo red >> README.txt 
[root@server1 test]# git status -s
MM README.txt
[root@server1 test]# cat README.txt 
westos
linux
linux
linux
red
[root@server1 test]# git status 
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   README.txt
#
# 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.txt
#
[root@server1 test]# git checkout -- README.txt ## 撤消对文件的修改
[root@server1 test]# cat README.txt 
westos
linux
linux
linux
[root@server1 test]# git status -s 
M  README.txt
[root@server1 test]# git status 
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   README.txt
#
[root@server1 test]# git  reset HEAD README.txt  ## 取消暂存的文件
Unstaged changes after reset:
M	README.txt
[root@server1 test]# git status -s 
 M README.txt
[root@server1 test]# cat README.txt 
westos
linux
linux
linux
[root@server1 test]# git status -s 
 M README.txt
[root@server1 test]# git status 
# On branch master
# 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.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@server1 test]# git checkout -- README.txt ## 撤消对文件的修改
[root@server1 test]# cat README.txt 
westos
linux

(10)重命名文件

 git mv README.md README
  • 运行 git mv 就相当于运行了下面三条命令:
 mv README.md README
 git rm README.md
 git add README

(11)删除文件

git rm README.txt
git rm --cached README.txt

3 远程仓库

(1)注册github帐号,并新建一个仓库:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
(2)推送本地仓库内容到github
在这里插入图片描述

  • 推送本地仓库内容到github:
git remote add origin git@github.com:kangkalala/test.git

在这里插入图片描述

(3)生成本地密钥,并上传公钥到github

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
(4)将本地的master分支推送到origin主机,同时指定origin为默认主机(第一次push需要),后面就可以不加任何参数使用git push了

 git push -u origin master

在这里插入图片描述

  • 仓库上传成功

在这里插入图片描述(5)克隆远程仓库

在这里插入图片描述

  • 克隆远程仓库: git clone git@github.com:kangkalala/test.git

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值