生活, 版本控制

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

本篇将介绍如何在本地使用 Git 实现文件的版本控制,但不建议一开始就在工作中使用 Git,防止误操作使得历史版本的数据丢失。当版本管理的要求不高时,日常可以通过复制文件并重命名来进行版本控制,这样更稳妥些。只有当熟练掌握 Git 原理和操作方法之后,Git 版本管理才比较安全。如果是通过复制文件作为备份来进行管理,有一个文本对比的方法是使用 VSCode 软件,参考:两个文本文件的修改对比方法(VSCode方案)。另外,还有一种是 Git 版本管理和复制文件夹两种方式同时使用,但复制文件夹后,要把 .git 文件夹删掉,重新 git init 一份,然后再进行 Git 版本管理,这样可以避免历史记录的冗余。

这是之前的两篇:Git常用命令GitHub和GitHub Desktop的使用。本篇内容可能和之前的有些重复,但步骤会更详细和清晰些,按操作的顺序给出。本篇将侧重于在本地实现文件的版本控制,不涉及到远程仓库。这里推荐使用 GitHub Desktop 或者 VSCode 来管理。对于复杂的需求,可以通过命令行来完成。

一、使用 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 中可以显示修改的内容。

以上操作在 VSCode 的 Git 管理中也可以实现,参考:使用VSCode写Python、Latex、Markdown等

其他说明:

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

例如 “.gitignore” 文件内容为:

*.pdf
*.svg
*.eps
*.jpg
*.png
*.gif
*.mp4
*.mp3

二、使用命令行进行版本控制

以下是使用命令行进行版本控制的具体流程:

  • 新建文件夹“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,查看历史提交记录。

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

以下是关于分支管理和回退版本等的操作说明,稍微有点复杂。如果没有这方面需求或者嫌麻烦,可以忽略以下内容。

(1)分支管理【暂不推荐】

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

  • 查看分支: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

(2)基于历史版本创建分支【暂不推荐】

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

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

分支管理示意图 [1]:

(3)回退版本【不推荐】

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

参考资料:

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

1,052 次浏览

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

发表评论

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

Captcha Code