Featured image of post Git初始化相关配置

Git初始化相关配置

Git配置

  • 在Git安装完成后,windows操作系统上会多出一个Git Bash的软件,如果是linux或者是macOS,那么直接打开终端,在终端中敲击命令即可
1
2
3
4
# 检查git版本
git -v
# 或
git --version
  • 在使用git时,需要配置一下用户名和邮箱
1
2
3
4
5
6
7
8
# 用户名
git config --global user.name "your name"
# 邮箱
git config --global user.email "your email"

# 省略(Local):本地配置,只对本地仓库有效
# --global:全局配置,所有仓库生效,最多使用
# --system:系统配置,对所有用户生效,一般不使用
  • 以上命令只需要执行一次即可,执行以下命令可以用于保存用户名和密码,执行该命令的主要目的是由于使用http时,会出现一个弹窗要求输入用户名和密码,只需要在第一次clone输入用户名和密码,这些信息就被存储起来,以后就可以自动读取,不需要你在手动输入了。
  • 如果是配置了ssh密钥,那么就可以不用执行这个命令
1
git config --global credential.helper store
  • 查看git的配置信息
1
git config --global --list

Git初始化

  • 创建仓库两种方式

    • 在文件夹下执行git init命令
    • 执行git clone命令从远程服务器上clone一个已经存在的仓库
  • 如果使用git init命令初始化一个仓库,是初始化当前所在目录,如果是执行了git init xxx这样的话,是会在当前目录下创建一个xxx目录,并且初始化为一个git仓库

可以看到在执行完成git init后,该目录后面多了一个master标识

image-20250511160435477

  • 出现上面黄色字体的部份,是因为这是Git 2.28 版本之后的新特性。这个提示是在你第一次使用 Git 初始化一个仓库时出现的,它告诉你默认的主分支名称从 master 可能会更改为其他名称(例如 maintrunkdevelopment)。

为了防止出现这个警告,你可以通过在命令行中输入以下命令来配置 Git 初始化默认分支名称,个人一般习惯使用master

1
git config --global init.defaultBranch <name>

执行命令后再次执行git init命令就不会再出现上方黄色字体部份了

image-20250511161124659

如果已经创建一个仓库,但是想要更改主分支名称,则可以使用以下命令

1
2
# <name>是你想要更改后的主分支名称
git branch -m <name>

image-20250511161324020

如何才能确定当前文件夹是一个git仓库

除了会在终端命令行后面显示一个master标识外,最重要的就是当前仓库下有一个.git的目录,这个目录一定不能删除,因为一旦删除后,这个目录就不再是一个仓库,也无法查看历史文件了

image-20250511161550969

工作区、暂存区、本地仓库

  • 工作区(Working Directory)

    • 本地计算机上的项目目录,在这个目录下创建、修改和删除操作。工作区包含了当前项目的所有文件和子目录
  • 暂存区(Staging Area/Index)

    • 暂存区是一个临时存储的区域,它包含了即将被提交到版本库中的文件快照,在提交之前,可以选择性的将工作区中的修改添加到暂存区中
  • 本地仓库(Local Repository)

    • 本地仓库包含了所有的版本历史记录,每一次提交都会在版本库中创建一个新的快照,这些快照是不可更改,具有唯一ID,确保了项目的完整历史记录

img

三者之间的关系

  • 工作区–>暂存区
    • 使用git add命令将工作区中的修改添加到暂存区中
1
2
git add filename
# 如果将filename替换成 . 表示将当前目录下的所有变更的文件全部提交到暂存区中
  • 暂存区–>本地仓库
    • 使用git commit命令将暂存区中的修改提交到版本库
    • 注:该操作不会提交工作区中的文件,只会提交暂存区中的文件
1
git commit -m 'current commit message'
  • 本地仓库–>远程仓库
    • 使用git push命令将本地仓库的提交推送到远程仓库
1
git push origin branch-name
  • 远程仓库–>本地仓库
    • 使用git pullgit fetch命令从远程仓库获取更新
1
2
3
4
git pull origin branch-name
# 或
git fetch origin branch-name
git merge origin/branch-name
  • 文件状态

    • 未跟踪(Untarck):新创建的文件

    • 未修改(Unmodified):已经被git管理的文件

    • 已修改(Modified):已经被修改,但是还没有被添加到暂存区的文件

    • 已暂存(Staged):已经修改,并且已经添加到暂存区的文件

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy
s="cl"> # 在合并的时候,出现合并冲突的文件,需要手动解决冲突,在解决完冲突后,需要重新提交该冲突文件 git add <confict-file> git commit

删除分支

1
2
3
4
5
6
7
8
# 删除本地分支
git branch -d branch-name

# 强制删除未合并的分支
git branch -D branch-name

# 删除远程分支
git push origin --delete branch-name

保存当前文件未提交更改并切换分支

1
2
3
4
5
6
# 保存当前工作目录中的未提交更改,并将其恢复到干净的工作区
git stash
# 恢复最近保存的更改
git stash pop
# 列出所有保存的更改
git stash list

Git提交历史

命令:git log [选项] [分支名/提交哈希]

常用的选项包括:

命令:git blame [选项] <文件路径>

常用的选项包括:

恢复和回退

Git提供了多种方法来恢复和回退到之前的版本,不同的命令适用于不同的场景和需求

以下是几种常见的方法

1、git checkout:检查出特定版本的文件

git checkout 命令用于切换分支或恢复工作目录中的文件到指定的提交

恢复工作目录中的文件到某个提交

1
2
# 将filename恢复到commit-id提交时的版本
git checkout <commit-id> -- <filename>

切换到特定提交

1
git checkout <commit-id>

2、git reset重置当前分支到特定提交

git reset命令可以更改当前分支的提交历史,它有三种主要模式:--soft--mixed--hard

1
git reset --soft <commit>
1
git reset --hard <commit>
1
git reset --mixed <commit>

3、git revert:撤销某次提交

git revert命令创建一个新的提交,用来撤销指定的提交,它不会改变提交历史,适用于已经推送到远程仓库的提交

1
git revert <commit>

4、git reflog:查看历史操作记录

git reflog:命令记录了所有HEAD的移动。即使提交被删除或重置,也可以通过reflog找回

1
git reflog

Git标签

Git标签(Tag)用于给定仓库中的特定提交点加上标记,通常用于发布版本。比如你手里有一个项目完成了第一个阶段的功能,可以标记为v1.0版本,可以使用git tag -a v1.0命令给最新的一次提交打上v1.0的标签

标签语法格式如下

1
git tag tag-name

标签推送

默认情况下,git push不会推送标签,需要显式推送标签

1
2
3
4
git push origin tag-name

# 推送所有标签
git push origin --tags

删除标签

1
2
3
4
5
# 本地删除
git tag -d tag-name

# 远程删除
git push origin --delete tag-name

附注标签

附注标签存储了创建的名字、Email等信息,附注更为正式,适用于需要额外元数据的场景

附注标签语法如下

1
2
3
4
git tag -a tag-name -m "message"

# PGP签名标签命令
git tag -s tag-name -m "message"

查看标签信息

1
git show tag-name

删除标签

1
2
3
4
5
# 本地删除
git tag -d v1.0

# 远程删除
git push origin --delete v1.0