Git 是一个分布式版本控制系统,普遍用于多人协作开发软件项目、数据备份管理等场景。
Git 的主要优势在于它支持分支管理,可以同时进行多个版本开发或合并不同的分支,并且还能够记录文件修改历史,从而更方便地追踪代码更改。此外, Git 还具有强大的协作功能,允许多名开发者在同一 Git 仓库中共同工作,并且还具有快速复制和恢复代码的能力。
在使用 Git 进行版本控制时,通常的工作流程如下:
创建仓库:通过 Git init 命令创建一个新的本地仓库,然后使用 add 命令将需要进行版本控制的文件添加到仓库中。
提交变更:Git commit 命令会将暂存区中的文件提交到本地仓库中,并且附加一条提交消息,描述这次提交的目的和内容。
查看状态:使用 Git status 命令查看当前的代码状态,可以了解当前有哪些修改已经被添加到暂存区或者没有被跟踪。
分支管理:使用 Git branch 和 Git checkout 命令创建分支并切换到不同的分支上,以便进行不同的代码开发或者合并操作。
合并分支:使用 Git merge 命令将一个分支与当前分支进行合并,这个过程可以让多人协作开发相互独立,并最终整合到同一个版本中。
远程推送和拉取:将本地仓库的变更推送至远程仓库,使用 Git push 命令实现;从远程仓库拉取最新内容到本地仓库,使用 Git pull 命令实现。
除此之外,Git 还具有丰富的工具集和插件,如图形化界面、GiHub、GitLab 等等,并且在大型软件项目中也广泛应用,被称为是“分布式版本控制系统中的黄金标准”,在软件行业及其他领域发挥着重要的作用。
以下是 Git 操作仓库的常用的一部分指令,包括指令内容和作用:
设置git的用户名、邮件地址、文本编辑器,自动存储git的用户名和密码。
# 设置用户名
git config --global user.name "Your Name"
# 设置电子邮件地址
git config --global user.email "[email protected]"
# 设置默认文本编辑器
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 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 add
和 git commit
将更改提交到本地版本库以完成解决。
举个例子:
# 在进行合并操作时,如果遇到冲突,先运行 git status 命令查看冲突文件的状态
$ git status
On branch mybranch
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git restore --staged ..." to unstage)
both modified: file.txt
# 使用 git checkout --ours 命令标记文件为解决方案(该命令只更新索引,不改变工作目录中的文件)
$ git checkout --ours file.txt
# 运行 git add 命令将解决后的文件添加到暂存区
$ git add file.txt
# 继续完成合并操作,提交解决后的文件
$ git commit -m "Resolve conflict by choosing our version of file.txt"
git checkout HEAD filename1 filename2
git checkout HEAD filename1 filename2
命令的作用是将指定的文件 filename1
和 filename2
恢复到 HEAD 版本(最新提交版本)的状态。
执行此命令后,Git 会将这两个文件恢复为最新的提交版本,且所有未存储的更改都会被覆盖。而如果你没有指定文件,则为恢复整个工作区至最新版本的状态。
需要注意的是,使用该命令应当谨慎,确保你已经保存了任何修改,并且准备好丢弃这些修改。如果你执行该命令后再次修改了文件,那么 Git 就无法再把它们还原成之前的样子。
为此,推荐在执行前先进行 git status
查看工作区是否有未存储的更改,同时在执行时显式地指定要恢复的文件列表。
git tag
命令用于在 Git 代码仓库中打标签,以便在后续需要的时候更方便地找到和使用这个标签。具体来说,它的作用如下:
标记特定版本:为某个特定的提交设置一个易于识别的名称,方便后续查找和管理。例如,在发布软件时,可以使用标签来标志某个版本号。
定位特定版本:可以使用标签快速定位某个特定版本的代码,并且避免与其他版本产生混淆。这对团队合作、代码审查、问题追踪等方面都非常有用。
分支操作辅助:有时还可以使用标签辅助分支操作,例如基于某个标签创建新的预发布分支或者补丁分支等等。
需要注意的是,标签并非像分支一样是动态变化的,而是针对某个提交创建的不可改变的“快照”(或者说“静态”的版本)。因此,不能直接通过标签来进行版本控制等各种修改操作,必须要新建一个分支来进行相关操作。
总之,使用 git tag
命令可以帮助我们更好地管理和使用代码库中的不同版本,提高代码开发和维护的效率。