语言, 其他语言

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

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

这是之前的一篇:GitHub基础操作和Git常用命令,主要介绍如何使用GitHub(一个Git的远程仓库)以及熟悉Git的一些命令。本篇将侧重于在本地实现文件的版本控制,不涉及到远程仓库。

这里也是推荐使用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中可以显示修改的内容。
  • 另外,有条件以及愿意折腾的可以自建个服务器,安装部署GitLab平台,然后可以将不同时期的文件版本 git push 在这个自建的平台上,会比GitHub更安全些。
  • 更多阅读:关于如何保存和处理历史版本或中间文件

二、命令行的操作

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软件来查看历史。

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

(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

261 次浏览

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

发表评论

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

Captcha Code