历史文章/不再维护

在本地使用Git实现文件的版本控制

Git官网:https://git-scm.com。本篇将介绍如何在本地使用Git实现文件的版本控制,但不建议一开始就在工作中使用Git,防止误操作使得历史版本的数据丢失。当版本管理的要求不高时,日常可以通过复制文件并重命名来进行版本控制,这样更稳妥些。只有当熟练掌握Git原理和操作方法之后,Git版本管理才比较安全。

如果是通过复制文件备份来管理,有一个文本对比的方法是使用VSCode软件。在VSCode中需要打开对应的文件夹,然后在左侧栏中选中某个文件右键“Select for Compare”,再选择一个文件右键“Compare with Selected”。

这是之前的一篇:GitHub基础操作和Git常用命令,主要介绍如何使用GitHub(一个Git的远程仓库)以及熟悉Git的一些命令。本篇将侧重于在本地实现文件的版本控制,不涉及到远程仓库。这里推荐使用GitHub Desktop 或者 VSCode 来管理。而对于复杂的需求,可以通过命令行来完成。

一、GitHub Desktop 简化版的操作

  • 进入需要管理的文件夹中,在终端输入命令:git init,对文件夹进行初始化,在文件夹中会出现一个”.git“的隐藏文件夹。
  • 打开GitHub Desktop,选择 File -> Add local repository,添加该文件夹。
  • 在Change列表中,选择需要忽略的文件,右键 add to .gitignore,例如把.pdf, .jpg, .svg等文件类型添加到忽略列表中。在Summary中添加文字,例如“update”,然后 Commit to master/main。
  • 需要注意的是这时候不要点击 Publish repository。因为本地管理的通常是代码、论文、笔记等具有保密性的重要文件,所以不要上传到GitHub。当日常文件更新后,只需要按上面步骤 Commit to master/main,在History中可以显示修改的内容。
  • 更多阅读:关于如何保存和处理历史版本或中间文件

更多说明:

(1)如果要覆盖之前的修改内容,此时记得要 git commit 一下,保留一份历史记录。
(2)如果有洁癖心理,当“.git”隐藏文件夹达到几十M或者一百多M时,可以将“.git”文件夹剪切到其他地方,如其他文件夹、移动盘、百度云盘等,并做好名称记录。因为所有的历史版本都在里面,而且占用空间也不大,所以不要轻易删除。把“.git”文件夹移走后,在工作文件夹中 git init 一下,生成“.git”文件夹,重新进行版本管理。
(3)使用Git时重要的是创建“.gitignore”文件,添加需要忽略版本管理的文件类型或文件,不然很容易使得“.git”文件夹体积膨胀。不一定需要一次性添加所有可能的文件类型,可以之后有需求时再添加。例如.gitignore文件内容为(仅供参考):

*.pdf
*.svg
*.eps
*.jpg
*.png
*.gif
*.mp4
*.mp3
*.txt
*.dat
*.out
*.o*
*.e*
*.log

二、命令行的操作

1. 基本操作

  • 新建文件夹“git_test”。可通过系统的cmd或VScode软件来打开终端,进入该目录。
  • 第一次使用Git时,需要设置下邮箱和名字:
    • 查看:git config --list
    • 设置邮箱:git config --global user.email "you@example.com"
    • 设置名字:git config --global user.name "your name"
  • 在终端输入命令:git init,对文件夹进行初始化,在文件夹中会出现一个”.git“的隐藏文件夹。
  • 在目录中新建文件“test.md”,输入文本内容“111111"。
  • 在终端输入命令:git add .(后面有个小点),添加修改的内容(存到暂缓区)。
  • 在终端输入命令:git commit -m 初稿,提交修改内容(存到版本库)。建议把后面起的名字'初稿'直接写成具体的修改内容,方便后续查看。
  • 同时执行add和commit的命令:git commit -a -m 初稿
  • 增加文本内容“222222”,输入命令:git commit -a -m 修改版。
  • 增加文本内容“333333”,输入命令:git commit -a -m 修改版2。
  • 在终端中输入命令:git log,查看历史提交记录。
  • 更多阅读:GitHub基础操作和Git常用命令

2. 版本管理

(1)查看历史并修改当前版本

如果想要回退版本,个人建议是直接查看历史记录,然后修改当前的版本,这样会更简洁些,而不至于丢失中间版本的数据。查看历史记录可以使用 git log -p 等命令,不是很直观,可通过 GitHub Desktop 或 使用 VSCode 中的插件来查看历史。

以下是分支管理和回退版本等的操作说明,稍微有点复杂。如果嫌麻烦,可以忽略。

(2)分支管理

如果想创建不同的版本,可以用分支管理。

  • 查看分支:git branch,其中master分支为git init后的默认分支。
  • 创建分支:git branch new_branch,创建名为“new_branch”的分支。
  • 切换分支:git switch new_branch,切换到“new_branch”分支。使用git branch命令查看,可看到星号在“new_branch”前面。
  • 在“new_branch”下,增加文本内容“new_branch_content”,之后输入命令:git commit -a -m 分支测试。
  • 在终端输入命令:git switch master,回到master分支,可以看到文件中没有了“new_branch_content”的内容。
  • 在某分支下(如master分支),合并new_branch分支的命令:git merge new_branch,那么会将new_branch的修改内容合并到master中。如果遇到冲突的情况,则无法合并,需要单独进行处理,比如选择接收哪个分支,或者同时接收两种分支的内容。
  • 在非当前分支下,删除分支的命令:git branch -d new_branch

(3)基于历史版本创建分支

以上是基于当前版本创建分支,在实际应用中比较多的可能是打算在某个历史版本中开始创建分支,从而废弃当前分支。下面是具体步骤(增加了ID的内容):

  • 查询命令:git log,查询历史commit的ID,复制某个ID。
  • 创建分支:git branch new_branch_2 某ID,则基于该ID的版本创建名为“new_branch_2”的分支。
  • 切换分支:git switch new_branch_2

分支管理示意图[1]:

(4)回退版本

  • 查询命令:git log,查询历史commit的ID,复制某个ID。
  • 回退版本命令:git reset --hard 某ID,将内容回退到某个版本。需要注意的是:这种回退方法会使得某个版本后的版本数据全部丢失,所以要谨慎使用,也不推荐使用。推荐使用修改当前内容的方法或者创建分支的方法,因为如果想要重新使用某个版本时,不至于由于中间版本数据的丢失而重新书写。

参考资料:

[1] https://www.runoob.com/git/git-tutorial.html

484 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code