一、简介

1.Git是什么

  • Git是分布式版本控制系统:他没有中央服务器,每个开发者电脑就是一个完整的版本库。
  • 这样工作时候就不需要联网了,因为版本都是在自己的电脑上。不需要连接中央服务器提交代码。
  • 每一个开发人员的电脑上都有一个本地仓库,我们就可以使用本地仓库来实现代码的管理,我们可以在本地把代码加到版本库中,就可以对文件进行增删改查的操作。
  • 如果我们在开发一个项目时,只有一个开发人员,不需要和别人交换代码,我们只需要本地仓库,不需要远程仓库
  • 如果是多人协作开发项目,那么我们就需要交换代码,这时就需要一个远程仓库。远程和本地仓库中的内容其实是一样的,我们需要做的是将本地仓库向远程仓库复制 一份。如果别人想把远程仓库的代码拿到本地仓库,需要再复制一份!这样其实就是复制了整个仓库。
  • 开发人员从远程仓库复制一份完整的仓库放到本地,如果不需要交换代码就不需要远程仓库,本地就是一个闭环!

Git应用场景介绍
1.多人开发代码管理
2.异地开发代码管理
3.版本管理、版本回滚
······

2.Git的工作流程

1.从远程仓库中克隆(Clone)Git资源作为本地仓库
2.从本地仓库中Checkout代码然后进行代码修改
3.在进行提交前先将代码提交到暂存区
4.提交修改,提交(Commit)到本地仓库,本地仓库中保存修改的各个历史版本
5.在修改完成后,需要和团队成员共享代码时,可以将本地仓库代码Push到远程仓库

在这里插入图片描述

二、git使用

官方网站:git-scm.com
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@server1 ~]# yum install -y git
[root@server1 ~]# mkdir demo
[root@server1 ~]# cd demo/

初始化版本库
[root@server1 demo]# git init        ##推荐不在主目录,以后执行命令在本目录
Initialized empty Git repository in /root/demo/.git/

查看状态
在这里插入图片描述

[root@server1 demo]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

[root@server1 demo]# git status  -s		 #简化输出

[root@server1 demo]# echo test > README.md
[root@server1 demo]# ls
README.md
[root@server1 demo]# git status  -s
?? README.md                             ##新建的文件,没有添加至版本库


[root@server1 demo]# git add README.md
[root@server1 demo]# git status  -s
A  README.md                             ##新建的文件被添加至暂存区

[root@server1 demo]# git config --global user.email "gong@westos.org"   ##加个人信息
[root@server1 demo]# git config --global user.name "gong"   ##加个人信息
[root@server1 demo]# git commit -m "add README.md"          ##提交暂存区的数据

[root@server1 demo]# echo hello >> README.md
[root@server1 demo]# git status -s
 M README.md                                  ##文件在工作区被修改;可以撤销

[root@server1 demo]# git add README.md
[root@server1 demo]# git status -s
M  README.md                                  ##M变为左边,表示被添加至暂存区;reset可以撤销

[root@server1 demo]# echo world >> README.md
[root@server1 demo]# git status -s
MM README.md                                  ##一部分在暂存区,一部分在工作区

[root@server1 demo]# git commit -m "v1"       ##提交暂存区的数据

[root@server1 demo]# git status -s            ##工作区的,未被提交
 M README.md

[root@server1 demo]# git add .                ##添加至暂存区
[root@server1 demo]# git status -s
M  README.md

[root@server1 demo]# git commit -m "v2"
[root@server1 demo]# git status -s
忽略隐藏文件
[root@server1 demo]# touch .a
[root@server1 demo]# git status -s
?? .a
[root@server1 demo]# vim .gitignore           ##忽略所有
.*
[root@server1 demo]# git status -s

[root@server1 demo]# echo helloworld > test.txt
[root@server1 demo]# git add test.txt         ##添加到版本库
[root@server1 demo]# git commit -m "add test.txt"

撤销文件修改
[root@server1 demo]# rm -f test.txt
[root@server1 demo]# git status -s
 D test.txt                                     ##在工作区被删除
[root@server1 demo]# git checkout -- test.txt   ##撤销对文件修改

取消暂存区文件:
[root@server1 demo]# git rm test.txt            ##理解为add的反面
[root@server1 demo]# git status  -s
D  test.txt
[root@server1 demo]# git reset HEAD test.txt    ##取消暂存区文件

版本回退
[root@server1 demo]# git rm test.txt
[root@server1 demo]# git commit -m "delete test.txt"   ##

[root@server1 demo]# git reflog                        ##
58b1bc2 HEAD@{0}: commit: delete test.txt
...
[root@server1 demo]# git reset --hard 6db53fe          ##版本回退

在这里插入图片描述

三、github/gitee远程代码仓库

登录:https://github.com/
或者:https://gitee.com/

1.建立仓库

本实验:初始化在本地做过了,远端不需要做了

在这里插入图片描述
上传公钥
[root@server1 demo]# ssh-keygen
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.推送仓库

[root@server1 ~]# cd demo/
[root@server1 demo]# git branch -M main     ##设置主分支
[root@server1 demo]# git remote add origin git@github.com:westos007/demo.git  ##添加远端服务器
[root@server1 demo]# git remote -v    ##查看远端信息
origin  git@github.com:westos007/demo.git (fetch)
origin  git@github.com:westos007/demo.git (push)

[root@server1 demo]# git push -u origin main     ##上传
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
ECDSA key fingerprint is MD5:7b:99:81:1e:4c:91:a5:0d:5a:2e:2e:80:13:3f:24:ca.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
Counting objects: 12, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (12/12), 890 bytes | 0 bytes/s, done.
Total 12 (delta 0), reused 0 (delta 0)
To git@github.com:westos007/demo.git
 * [new branch]      main -> main
Branch main set up to track remote branch main from origin.

3.克隆仓库

[root@server1 ~]# rm -fr demo/
[root@server1 ~]# git clone git@github.com:westos007/demo.git     ##从远端ssh/http克隆
Cloning into 'demo'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 12 (delta 0), reused 12 (delta 0), pack-reused 0
Receiving objects: 100% (12/12), done.
[root@server1 ~]# ls
anaconda-ks.cfg  demo
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
README.md  test.txt

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐