admin管理员组

文章数量:1530022

文章目录

    • Git初体验
      • 一、什么是Git?有什么用?
      • 二、如何使用
        • 1.创建一个版本库
          • cd
          • mkdir
          • pwd
          • git init
        • 2.使用版本库
          • add
          • commit
          • status
          • vi,nano
          • diff
          • reset --hard HEAD
          • rm
      • 三、理解工作区与暂存区
      • 四、远程仓库(github)
        • 1.如何添加远程仓库
          • remote
          • branch 与 push
        • 2.如何从远程库上克隆
          • colne

Git初体验

一、什么是Git?有什么用?

Git是目前世界上最先进的分布式版本控制系统。

Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

二、如何使用

1.创建一个版本库

什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。

cd

打开Git Bash

cd F:
mkdir

进入一个系统盘,可以选择一个你常用的。

mkdir testgit

在该目录创建一个名为testgit的文件。

cd testgit
pwd

进入testgit文件夹。

pwd

显示当前目录。

通过git init命令可以将这个目录变成git可以管理的仓库

git init
git init

此时我们打开刚才testgit文件可以看见一个名为.git的文件夹

2.使用版本库
  • 首先在testgit文件下创建一个文本文件:first.txt

  • 将文件发送到暂存区

add

打开Git Bush,使用cd命令找到testgit文件夹输入

git add first.txt

如果像这样没有任何提示说明,没有问题

用命令 git add first.txt是将first.txt添加到暂存区里面去,

  • 将文件提交到仓库
commit
git commit -m "first.txt提交第一个项目"

“first.txt提交第一个项目”:这是提交的注释

  • 检查是否还有文件未提交
status
git status

git status 命令用于显示工作目录和暂存区中文件的状态,以及当前分支的状态信息。

在执行 git status 命令后,会显示当前分支的名称、工作目录和暂存区中文件的状态信息。其中,文件的状态有三种:已修改(modified)、已暂存(staged)和未跟踪(untracked)。如果文件已经被 Git 跟踪,那么其状态会显示在 “Changes to be committed” 或 “Changes not staged for commit” 部分。

git status 命令是 Git 中非常常用的命令之一,它可以帮助我们了解当前 Git 仓库中文件的状态,方便我们进行版本控制。

说明没有东西提交了。

vi,nano
  • 修改first.txt中的内容(vim,nano)
vi first.txt

该命令的意思是使用vim编辑器打开first.txt

进入后按下 i,使用插入的方法编辑

修改内容为:这是我上传的第一个文件,hello file

然后先按Esc在同时按下Shift 和 +

输入:

:wq

保存并退出编辑

  • 再次检查是否还有文件未提交
git status

上面的命令告诉我们 first.txt文件已被修改,但是未被提交的修改。

diff
  • 查看修改了什么内容
git diff first.txt

  • 再次提交文件

提交文件刚刚已经练习过了,先add再commit

git add first.txt
git commit -m first.txt

使用git add first.txt出现的warning

这个warning意味着你的文本文件使用的换行符是LF(Line Feed,仅Unix/Linux系统使用),但是Git会把它替换为CRLF(Carriage Return + Line Feed,Windows系统使用)。 这并不会影响你的git操作,但是如果你的文本文件是一个脚本或程序,可能会对其产生影响,因为Windows的编译器不支持LF的换行符。

可以使用这条命令解决

git config --global core.autocrlf ture

这样,Git会在检出文件时将CRLF转换为LF,提交时转换为CRLF。

git config --global core.autocrlf ture是一条git配置命令,其作用是将提交的文本文件中的行末换行符转换为Unix格式的LF(Line Feed)。在Windows系统上,默认的换行符是CRLF(Carriage Return + Line Feed),而在Linux或macOS系统上,则为LF。这个配置命令会告诉Git在提交文本文件时,将CRLF转换为LF,而在检出(checkout)文本文件时,将LF转换为CRLF。

使用这个配置命令可以避免Windows和Unix系统之间的换行符混乱,保证代码在不同平台之间的一致性。当我们将这个配置设置为input时,Git会自动地将CRLF转换为LF,但不会再将LF转换为CRLF。这样做可以避免因为多次换行符转换而引入不必要的问题。将true改为false可以禁用自动转换

  • 查看历史记录
git log

可以发现我们一共提交了三个版本。

reset --hard HEAD
  • 版本退回

现在我想使用版本回退操作,我想把当前的版本回退到上一个版本,要使用什么命令呢?可以使用如下2种命令,第一种是:git reset --hard HEAD^ 那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可。

git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard HEAD~100 

我们使用cat first命令查看当前版本的内容,然后回退两个版本,再次查看,发现已经回退到第一个版本了

  • 删除缓存区文件命令
rm

假如我现在git add了一个a.txt文件,但是还没有git commit,我想将b.txt删除应该怎么办?可以使用该命令

rm a.txt

三、理解工作区与暂存区

工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。


四、远程仓库(github)

我们在工作时候想要和其他人协作:

我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。

1.如何添加远程仓库
  • 首先打开github,创建一个新的仓库

就成功地创建了一个新的Git仓库。

目前,在GitHub上的这个testgit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

有两种方式推送一种是HTTPS协议,一种是SSH协议

阅读github仓库等的提示:

这组命令用于在本地创建一个新的 Git 仓库,并将它与一个新的 GitHub 远程仓库关联起来,然后将 README.md 文件添加到本地仓库中并推送到 GitHub 上。下面是每个命令的作用:

  • echo "# testegit" >> README.md: 创建 README.md 文件并在其中添加 “# testegit” 的内容。

  • git init: 在当前目录中创建一个新的本地 Git 仓库。

  • git add README.md: 将 README.md 文件添加到本地 Git 仓库中。

  • git commit -m "first commit": 对 README.md 文件进行提交,提交说明为 “first commit”。

  • git branch -M main: 将本地仓库的默认分支名称从 “master” 修改为 “main”。

  • git remote add origin https://github/13008451162/testegit.git: 将本地仓库关联到一个名为 “origin” 的远程仓库,并将其 URL 设为 https://github/13008451162/testegit.git。

  • git push -u origin main: 将本地仓库中的所有分支和提交推送到远程仓库 “origin” 上的 “main” 分支,“-u” 选项会将远程 “origin” 仓库和本地 “main” 分支关联起来。


  • git remote add origin https://github/13008451162/testegit.git: 将远程仓库的地址添加到本地仓库,用于后续推送代码到远程仓库。

  • git branch -M main: 将当前分支重命名为 main 分支,以符合 GitHub 的默认分支命名规范。

  • git push -u origin main: 将本地 main 分支的代码推送到远程 origin 仓库的 main 分支,并将本地 main 分支与远程 main 分支关联起来,以后可以直接使用 git push 命令推送代码。

我们根据GitHub的提示,在本地的testgit仓库下运行命令:

此时使用的SSH协议方法

remote
git remote add origin git@github:13008451162/testegit.git

然后将本地库内容推送到仓库

注意这个main在我们刚刚的操作时这个分支叫做master使用了该命令修改过它的名字

branch 与 push
git branch -M main
然后关联分支
git push -u origin main

把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支main推送到远程。

由于远程库是空的,我们第一次推送mian分支时,加上了 –u参数,Git不但会把本地的mian分支内容推送的远程新的mian分支,还会把本地的mian分支和远程的mian分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了

从现在起,只要本地作了提交,就可以通过如下命令:

git push origin main

把本地mian分支的最新修改推送到github上了,现在你就拥有了真正的分布式版本库了。

2.如何从远程库上克隆

假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?

  • 首先我们找好需要克隆到的地方使用cd命令和mkdir命令
cd F:  #进入F盘
mkdir chatgpt #创建一个文件夹chatgpt
cd chatgpt	#进入这个文件夹

  • 克隆仓库
colne

我们在github上找到一个叫做chatgpt-on-wechat的项目

使用命令克隆该项目

git clone https://github/13008451162/chatgpt-on-wechat.git

打开windows的cmd窗口切换到对应chatgpt目录操作


参考资料:

[1]GitHub入门与实践/(日)大爆弘记著:支鹏浩,刘斌译.-北京:人民邮电出版社,2015.7(2015.10重印)

[2] (34条消息) Git使用详细教程_youzhouliu的博客-CSDN博客[该内容已被华为云开发者联盟社区收录]

本文标签: 教你一篇文章仓库版本操作