【无标题】

Git

一个免费开源的分布式版本控制系统

       分布式版本控制系统是一种用于管理文件版本的系统,其中每个参与者都拥有完整的文件版本历史记录和存储库副本。这种系统使得团队成员能够在本地工作并进行版本控制,而不需要始终依赖中央服务器。

 

初始化仓库

  1. 打开命令行终端,并进入到你想要初始化仓库的目录中。
  2. 运行 git init 命令。

示例:

$ cd my-project    # 进入到项目目录
$ git init        # 初始化 Git 仓库

 工作区域

  1. 工作目录 :也称为工作区,是你在计算机中能看到的文件夹,包含项目的实际文件,包括源代码、图片、文档等。

  2. 暂存区 :也称为索引(Index),是一个即将被提交到版本库的区域,通过 git add 命令将工作目录中的文件添加到暂存区。在提交之前,你可以对暂存区中的文件进行进一步的修改、调整,以准备提交到版本库中。

  3. 版本库  :也称为本地仓库,包含项目的完整历史记录和元数据信息。所有的版本信息都存储在版本库中,通过 git commit 命令将暂存区中的文件提交到版本库中。

文件在 Git 中具有不同的状态,主要包括以下几种:

  1. 未跟踪 :表示此文件还未纳入 Git 的版本控制中,Git 不会跟踪或管理这些文件。

  2. 已修改 :表示文件已经发生了改变,但还未被提交到暂存区。

  3. 已暂存 :表示文件已经被添加到了暂存区,准备被提交到版本库中。

  4. 已提交 :表示文件已经被安全地存储在版本库中,代表了一个已经被确认的文件版本。

 

  1. 添加追踪命令 (git add):
    • git add <file>:将指定文件添加到暂存区。
    • git add . 或 git add --all:将所有未追踪或已修改的文件添加到暂存区。

示例:

$ git add file.txt    # 将文件 file.txt 添加到暂存区
$ git add .           # 将所有未追踪或已修改的文件添加到暂存区

  1. 提交命令 (git commit):
    • git commit -m "Commit message":将暂存区中的文件提交到本地仓库,并添加一条提交信息。
    • git commit -a -m "Commit message":可以跳过 git add 步骤,直接将修改过的文件提交到本地仓库。

示例:

$ git commit -m "Add new feature"    # 提交暂存区中的文件到本地仓库

 

在 Git 中,回退版本可以使用 git checkout 或 git reset 命令。它们有不同的用途和参数选项,可以选择不同的回退方式。

  1. git checkout 命令:

    • git checkout <commit-hash>:将 HEAD 指向指定的提交,并将工作区和暂存区恢复到此提交的状态。
    • git checkout <branch-name>:切换到指定的分支,并将工作区和暂存区切换到该分支的最新提交状态。
    • git checkout -- <file>:将指定文件从暂存区或最近的提交中恢复到工作区。
  2. git reset 命令:

    • git reset --soft <commit-hash>:回退到指定的提交,保留暂存区和工作区的修改。
    • git reset --mixed <commit-hash> 或 git reset <commit-hash>:回退到指定的提交,重置暂存区,但保留工作区的修改。
    • git reset --hard <commit-hash>:回退到指定的提交,重置暂存区和工作区,丢弃所有的修改。

在回退版本时,<commit-hash> 可以是完整的提交哈希或缩写的提交哈希。此外,还可以使用一些其他参数来进一步控制回退操作,如 --hard--soft--mixed 等。

可选的回退方式有以下几种:

  • 软重置(Soft Reset):使用 git reset --soft,回退到指定的提交,保留暂存区和工作区的修改,并且将回退后的提交标记为未提交状态。
  • 混合重置(Mixed Reset):使用 git reset --mixed 或 git reset,回退到指定的提交,重置暂存区,但保留工作区的修改,并且将回退后的提交标记为未提交状态。
  • 硬重置(Hard Reset):使用 git reset --hard,回退到指定的提交,重置暂存区和工作区,丢弃所有的修改,并且将回退后的提交完全删除。

 

.gitignore 文件中指定需要忽略的文件或目录:

# 忽略所有 .log 文件
*.log

# 忽略所有 build 目录
/build/

# 忽略特定文件
config.ini

# 使用感叹号表示不忽略某个文件
!important.log

 

对于不同的语言和框架,通常会有一些通用的文件或目录被添加到 .gitignore 文件中,这些文件包括但不限于:

  • 编译产生的文件(如可执行文件、中间文件等)
  • 日志文件、临时文件
  • 依赖管理工具生成的目录或文件(如 node_modules、vendor 等)
  • 配置文件(如本地配置、敏感信息等)
  • IDE 或编辑器生成的文件或目录(如 .idea、.vscode 等)

Git 中用于进行分支操作的基本命令包括:

  1. 创建分支:

    • git branch <branch_name>:在当前提交位置创建一个新分支。
  2. 切换分支:

    • git checkout <branch_name>:切换到指定分支。
    • git switch <branch_name>:Git 2.23 版本之后推荐使用的切换分支命令。
  3. 创建并切换分支:

    • git checkout -b <new_branch_name>:创建并切换到新分支。
    • git switch -c <new_branch_name>:Git 2.23 版本之后使用的创建并切换分支的命令。
  4. 查看所有分支:

    • git branch:列出所有本地分支,当前分支前会有一个 * 号。
    • git branch -r:列出所有远程分支。
    • git branch -a:列出所有本地和远程分支。
  5. 删除分支:

    • git branch -d <branch_name>:删除指定分支(如果分支已经合并到主分支,可以使用此命令删除)。
    • git branch -D <branch_name>:强制删除指定分支(无论是否合并)。
  6. 合并分支:

    • git merge <branch_name>:将指定分支合并到当前分支。
  7. 重命名分支:

    • git branch -m <new_branch_name>:重命名当前所在分支。
  8. 查看分支合并情况:

    • git branch --merged:列出已经合并到当前分支的分支。
    • git branch --no-merged:列出尚未合并到当前分支的分支。
  9. 查看每个分支的最后提交:

    • git branch -v:显示每个分支的最后一个提交信息。

版本回退(Version Rollback):

  1. 使用 git log 命令查看提交历史,找到要回退到的目标提交的 commit hash 或者使用相对引用,如 HEAD、HEAD~1 等。

  2. 使用 git checkout <commit_hash> 命令切换到目标提交,这样你就进入了一个“分离头指针(detached HEAD)”的状态,可以查看和测试该提交的代码。

  3. 如果确认回退到该提交,可以创建一个新的分支来保留回退提交,使用命令 git checkout -b <new_branch_name> 创建新分支,并在该分支上进行进一步的工作。

Rebase(变基)操作:

  1. 使用 git checkout 命令切换到需要变基的分支(通常是当前分支)。

  2. 运行 git rebase <base_branch> 命令,将当前分支的提交应用到 <base_branch> 上。这将把当前分支上的提交复制到目标分支上,并将当前分支指向目标分支的最新提交。

    例如:git rebase main 将当前分支的提交应用到 main 分支上。

  3. 在 rebase 过程中,可能会出现冲突。需要手动解决冲突,使用 git add 添加解决冲突的文件,然后运行 git rebase --continue 继续 rebase 过程。

  4. 如果需要中止 rebase 操作,可以使用 git rebase --abort 命令来回到变基开始前的状态

 

  • 32
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值