一文带你学会Git的基本使用⭐⭐⭐(超简洁,避免冗余)
一文带你学会Git的基本使用⭐⭐⭐(超简洁,避免冗余)
Git是一个广泛应用于软件开发领域的分布式版本控制系统,它可以帮助开发者高效地管理代码变更、协作开发以及追踪项目历史。本文将从Git的基本概念出发,详细讲解其工作流程和常用命令,帮助读者快速掌握Git的基本使用方法。
1. 什么是Git?
Git是一个分布式版本控制系统,用于管理和跟踪代码或文件的变更。它可以记录文件的每一次修改,帮助开发者协作、管理代码版本、追踪项目历史,并在需要时恢复到之前的版本。
Git是开源的,由林纳斯·托瓦兹(Linus Torvalds)在2005年开发,最初用于Linux内核开发。如今,它广泛应用于各种软件开发项目中,尤其是在团队协作开发中。
2. 为什么要学习Git?
相信大家都接触过Git,最开始可能是为了从GitHub上下载某个开源项目到本地仓库。当然也可以直接手动下载,不过通过git clone
命令克隆到本地显得更酷(bushi)。
那么Git只有这一个用途吗?当然不是。接下来将详细介绍在日常科研中会经常用到的Git操作。
注:关于Git的下载可自行百度,本文仅记录Git的基本原理和简单用法。
3. 工作流程图
上图是Git的一个工作流程图,主要涉及4个模块和6个命令,一般情况下我们只要掌握这些就足够日常使用了。本文也将围绕这个展开。
4. 四个区域/仓库介绍
4.1 工作区(Workspace)
工作区是你当前正在进行开发和编辑文件的地方。它就是你的项目文件所在的目录,包含你正在修改、编辑、编写的所有文件。
4.2 暂存区(Staging Area)
暂存区是一个临时的存储区域,保存你想要提交的改动。它类似于“准备提交”的区域。你可以将修改部分地加入暂存区,只将当前开发的一部分内容提交,而不是整个工作区的内容。
4.3 本地仓库(Local Repository)
本地仓库是你计算机上的Git仓库(要通过git init
提前创建),保存项目的所有历史提交记录。当你对文件进行提交(git commit
)时,文件会被从暂存区提交到本地仓库,成为项目的永久记录。
4.4 远程仓库(Remote Repository)
远程仓库是托管在服务器上的仓库,如GitHub、GitLab或Bitbucket。它与本地仓库不同,通常用于团队协作或代码备份。你可以将本地的提交推送到远程仓库,其他开发者也可以从远程仓库拉取代码。
5. 六个常用命令
5.1 git clone
| git fetch
| git merge
| git log
| git diff
先来介绍一下最常用到的git clone
命令:
Step 1)在一个地方右键打开Git Bash
Step 2)这里我们在GitHub上随便找一个项目做实验:CCFrank4dblp,Copy一下URL
Step 3)在git bash里输入命令
git clone <URL>
git clone
时发生报错怎么办?可以参见下面这篇文章自行解决:
完美解决 git 报错 “fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese-CSDN博客
注:上文方法二中端口号的设置要和clash中的端口号保持一致
当然也可以克隆到指定目录:
git clone <URL> <目标路径>
然后项目就被我们成功从远程仓库clone到本地仓库了
Step 4)打开此文件,可以看到该目录下已经有了一个.git
文件(隐藏的文件),包含了所有远程仓库的版本历史、分支信息等。
Step 5)使用git clone
之后如果远程仓库有更新,本地仓库不会自动更新。你需要手动使用git fetch
或git pull
来获取远程仓库的最新变化。
使用git fetch
来获取远程仓库的最新更新信息,包括新的提交、分支、标签等,但这不会自动更新你的本地工作目录,仅会影响.git
目录
git fetch origin
Step 6)那么我如何查看.git
的信息才能得知有最新的更新呢?
方式一:通过git log
来获取详细的包含时间的更新信息。
git log origin/master --pretty=format:"%h %s %ad" --date=relative
这样我们便可以看到最近是否有过更新啦。
方式二:通过git diff
命令查看本地分支和对应的远程分支之间的差异,以了解具体的更改。
git diff master origin/master
可以看到在我们用git fetch
获取最新的更新信息后比较两者的差异,结果没有任何输出,证明本地仓库的已经是最新版本了。
Step 7)那么如果不是最新版本的话我们如何执行实际的合并更新操作呢?
通过git merge
即可啦。
git merge origin/master
5.2 git pull
git pull
是拉取远程分支更新到本地仓库的操作。比如远程仓库里的学习资料有了新内容,需要把新内容下载下来的时候,就可以使用git pull
命令。事实上,git pull
是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)。
即:git pull = git fetch + git merge
注:git fetch
不会进行合并,执行后需要手动执行git merge
合并,而git pull
拉取远程分之后直接与本地分支进行合并。更准确地说,git pull
是使用给定的参数运行git fetch
,并调用git merge
将检索到的分支头合并到当前分支中。
git pull <remote> <branch>
<remote>
:通常为origin
,表示你想要拉取更新的远程仓库。<branch>
:表示你想要拉取的远程分支(例如main
)。
5.3 git init
| git add
| git commit
| git checkout
为了方便理解,这里我们用一个例子来说明这些命令的使用流程:
假设你在开发一个简单的项目,其中包含一个文件main.py
。你在项目的不同阶段进行修改,并希望使用Git来记录这些变化。
1. 初始化 Git 仓库
首先,你需要在项目文件夹中初始化一个Git仓库:
接着文件夹中自然会出现一个.git
的隐藏文件,包含各种日志、更新信息等,用于存储版本控制相关的信息。
2. 第一次提交:创建文件
接着,你创建一个文件main.py
,写了以下代码:
print("Hello, World!")
将这个文件添加到Git暂存区并进行提交:
git add main.py
git commit -m "Initial commit: add main.py with hello world"
3. 第二次提交:修改代码
你决定修改main.py
,添加了新的功能:
print("Hello, World!")
print("This is version 2 of the script.")
你再一次将修改添加到暂存区并提交:
4. 查看提交历史
现在,你可以查看这个文件的所有修改历史:
git log
这会显示每次提交的提交哈希值、提交信息和时间:
5. 回滚到之前的版本
假设你发现第二次的修改有问题,想要回到第一次提交的状态。你可以使用git checkout
回滚到第一次提交:
git checkout <对应的哈希值>
现在,main.py
就恢复到最初的状态(只有一行print("Hello, World!")
)。
6. 回到最新的提交
如果你想回到最新的版本,你可以这样做:
git checkout master
这样,你的代码会回到最新的状态。
5.4 git push
git push
是一个重要的Git命令,用于将本地仓库的更改上传到远程仓库。这个命令的主要功能是把本地分支的更新推送到对应的远程分支,以便与其他开发者共享代码。
这块过于冗长,网上也有很多详细的教程,就不再展开叙述了,可以参考下面的文章:
手把手教你用git上传项目到GitHub(图文并茂,这一篇就够了)
Github仓库master分支到main分支迁移指南
6. 超级汇总——常用的Git命令
Git命令大全「全面且实用,值得收藏」_git命令这一篇就够了-CSDN博客
7. 参考文献
- git clone、git pull和git fetch的用法及区别
- 手把手教你用git上传项目到GitHub(图文并茂,这一篇就够了)
- Github仓库master分支到main分支迁移指南
- Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!(万字长文)-知乎(zhihu.com)
- Git学习笔记(代码版本管理)-超详细_什么是代码版本管理-CSDN博客
- Git命令大全「全面且实用,值得收藏」_git命令这一篇就够了-CSDN博客
- CCFrank4dblp