介绍

Git 是一个分布式版本控制系统,普遍用于多人协作开发软件项目、数据备份管理等场景。

Git 的主要优势在于它支持分支管理,可以同时进行多个版本开发或合并不同的分支,并且还能够记录文件修改历史,从而更方便地追踪代码更改。此外, Git 还具有强大的协作功能,允许多名开发者在同一 Git 仓库中共同工作,并且还具有快速复制和恢复代码的能力。

在使用 Git 进行版本控制时,通常的工作流程如下:

  1. 创建仓库:通过 Git init 命令创建一个新的本地仓库,然后使用 add 命令将需要进行版本控制的文件添加到仓库中。

  2. 提交变更:Git commit 命令会将暂存区中的文件提交到本地仓库中,并且附加一条提交消息,描述这次提交的目的和内容。

  3. 查看状态:使用 Git status 命令查看当前的代码状态,可以了解当前有哪些修改已经被添加到暂存区或者没有被跟踪。

  4. 分支管理:使用 Git branch 和 Git checkout 命令创建分支并切换到不同的分支上,以便进行不同的代码开发或者合并操作。

  5. 合并分支:使用 Git merge 命令将一个分支与当前分支进行合并,这个过程可以让多人协作开发相互独立,并最终整合到同一个版本中。

  6. 远程推送和拉取:将本地仓库的变更推送至远程仓库,使用 Git push 命令实现;从远程仓库拉取最新内容到本地仓库,使用 Git pull 命令实现。

除此之外,Git 还具有丰富的工具集和插件,如图形化界面、GiHub、GitLab 等等,并且在大型软件项目中也广泛应用,被称为是“分布式版本控制系统中的黄金标准”,在软件行业及其他领域发挥着重要的作用。

仓库操作

以下是 Git 操作仓库的常用的一部分指令,包括指令内容和作用:

  1. git clone <repository_url>:从远程仓库克隆代码到本地,并自动创建一个与远程仓库同名的目录。例如,git clone https://github.com/user/repo.git 会将 repo.git 仓库克隆到当前目录下并重命名为 repo。
  2. git init:在当前目录下初始化一个新的 Git 仓库,或将已有的项目转换成 Git 仓库。执行该命令后,Git 将在当前目录下创建一个 .git 目录来存储版本控制所必需的文件。
  3. git add <file>:将指定文件或目录添加到暂存区,准备提交到本地仓库。
  4. git commit -m "<commit_message>":将之前添加到暂存区的变更提交到本地仓库。-m 参数可以指定本次提交的说明信息。
  5. git status:查看当前工作区和暂存区的状态。该命令将列出已修改、已暂存和未跟踪的文件。
  6. git diff:显示当前工作目录与上次提交之间的差异。使用 -cached 参数可以查看暂存区和最后一次提交之间的差异。
  7. git log:查看提交历史记录。该命令将列出所有提交的信息,包括提交作者、提交时间和提交说明等。
  8. git pull:从远程仓库拉取最新代码并合并到本地分支。如果您在进行提交前需要将本地代码更新到最新版本,可以使用该命令。
  9. git push:将本地的代码推送到远程仓库,以同步代码变更。必须先进行 commit 操作后,在使用 push 命令将本地已提交的修改推送到远端仓库中。
  10. git branch:列出本地仓库中的所有分支。使用 -a 参数可以显示所有分支,包括远程仓库的分支。
  11. git checkout <branch_name>:切换到指定的分支并更新工作区中的文件。例如,git checkout main 会将当前分支切换到名为 main 的分支。
  12. git merge <branch_name>:将指定分支上的变更合并到当前分支。例如,git merge feature-branch 会将名为 feature-branch 的分支合并到当前所在的分支上。
  13. git remote add origin <repository_url>:将本地仓库关联到一个远程仓库。例如,git remote add origin https://github.com/user/repo.git 将本地代码库与 GitHub 上名为 user/repo 的仓库关联起来,并将此远程仓库注册为名称为 origin 的别名。
  14. git tag <tag_name>:将当前代码库标记为一个具有指定名称的标签。这通常用于标识重要的版本或里程碑。
  15. git stash:将未完成的工作暂存,以便在后续操作中再次使用。执行该命令后,Git 将保存未提交的更改并清空工作区和暂存区,方便您在切换分支或其他操作时使用。

安装后的配置

设置git的用户名、邮件地址、文本编辑器,自动存储git的用户名和密码。

# 设置用户名
git config --global user.name "Your Name"

# 设置电子邮件地址
git config --global user.email "your_email@example.com"

# 设置默认文本编辑器
git config --global core.editor vim

#将Git仓库的凭据(访问仓库所需的用户名和密码)存储在本地的磁盘上,避免每次都需要手动输入凭据信息。
git config --global credential.helper stroe

# 查看 Git 的完整配置列表
git config --list

配置重置

# 取消全局设置的凭证 helper。
git config --global --unset credential.helper

# 用于删除已存储在 ~/.git-credentials 文件中的凭证。
git credential-store --erase:

 

git强制解决冲突

git checkout --ours /path/to/file
git checkout --theirs /path/to/file

git checkout --ours /path/to/file 命令的作用是使用当前分支(即合并目标分支)指定文件 /path/to/file 的版本来进行合并冲突解决。

在 Git 进行合并操作时,如果一个文件存在冲突,该文件将被标记为 “Both Modified” 或者 “Both added” 状态。你可以使用 git status 命令查看当前工作区状态以找到这些文件。

对于标记为冲突的文件,有两种解决方法:

  • 使用编辑器手动解决冲突,然后使用 git add 命令将更改添加到暂存区,并使用 git commit 提交;
  • 使用 git checkout 命令将文件恢复为一个版本,并将其添加到暂存区以完成冲突解决。

以上命令中,--ours 标志表示应该使用当前分支中的版本来解决冲突,而不是使用其他分支或合并版本。执行此命令将覆盖本地版本库中的文件版本,还需要使用 git addgit commit 将更改提交到本地版本库以完成解决。

git恢复指定文件

git checkout HEAD filename1 filename2

git checkout HEAD filename1 filename2 命令的作用是将指定的文件 filename1filename2 恢复到 HEAD 版本(最新提交版本)的状态。

执行此命令后,Git 会将这两个文件恢复为最新的提交版本,且所有未存储的更改都会被覆盖。而如果你没有指定文件,则为恢复整个工作区至最新版本的状态。

需要注意的是,使用该命令应当谨慎,确保你已经保存了任何修改,并且准备好丢弃这些修改。如果你执行该命令后再次修改了文件,那么 Git 就无法再把它们还原成之前的样子。

为此,推荐在执行前先进行 git status 查看工作区是否有未存储的更改,同时在执行时显式地指定要恢复的文件列表。

git打标签

git tag <tag_name> 命令用于在 Git 代码仓库中打标签,以便在后续需要的时候更方便地找到和使用这个标签。具体来说,它的作用如下:

  1. 标记特定版本:为某个特定的提交设置一个易于识别的名称,方便后续查找和管理。例如,在发布软件时,可以使用标签来标志某个版本号。

  2. 定位特定版本:可以使用标签快速定位某个特定版本的代码,并且避免与其他版本产生混淆。这对团队合作、代码审查、问题追踪等方面都非常有用。

  3. 分支操作辅助:有时还可以使用标签辅助分支操作,例如基于某个标签创建新的预发布分支或者补丁分支等等。

需要注意的是,标签并非像分支一样是动态变化的,而是针对某个提交创建的不可改变的“快照”(或者说“静态”的版本)。因此,不能直接通过标签来进行版本控制等各种修改操作,必须要新建一个分支来进行相关操作。

总之,使用 git tag <tag_name> 命令可以帮助我们更好地管理和使用代码库中的不同版本,提高代码开发和维护的效率。

06-13 10:48