建一个网站问谁,html5 wap网站模板,网络营销就是seo正确吗,英语网站建设费用Git 完全指南#xff1a;从入门到精通
Git 是现代软件开发中最重要的版本控制工具之一#xff0c;它帮助开发者高效地管理项目#xff0c;支持分布式协作和版本控制。无论是个人项目还是团队开发#xff0c;Git 都能提供强大的功能来跟踪、管理代码变更#xff0c;并保障…
Git 完全指南从入门到精通
Git 是现代软件开发中最重要的版本控制工具之一它帮助开发者高效地管理项目支持分布式协作和版本控制。无论是个人项目还是团队开发Git 都能提供强大的功能来跟踪、管理代码变更并保障项目的稳定性与可持续发展。本篇文章从基础命令讲起逐步深入帮助你全面了解并掌握 Git最终达到精通。 目录 Git 完全指南从入门到精通1. Git 概述1.1 什么是 Git1.2 Git 与其他版本控制系统的区别1.3 Git 的主要特点 2. Git 安装与配置2.1 Git 安装WindowsmacOSLinux 2.2 Git 配置 3. Git 基础命令3.1 克隆 Git 仓库3.2 查看 Git 仓库状态3.3 查看提交历史3.4 创建、切换和删除分支创建分支切换分支删除分支 3.5 合并分支 4. Git 提交与变更管理4.1 提交文件变更4.2 查看差异4.3 使用暂存区暂存所有更改暂存单个文件 5. Git 分支管理5.1 分支的概念5.2 创建、切换和删除分支创建分支切换分支删除分支 5.3 合并分支与解决冲突合并分支解决冲突 6. Git 工作流6.1 基本工作流6.2 Git Flow 工作流6.3 Fork 与 Pull Request 工作流 7. Git 高级命令与技巧7.1 Rebase 与 Merge7.2 使用 Tag7.3 Git 忽略文件7.3.1 创建 .gitignore 文件7.3.2 编辑 .gitignore 文件7.3.3 忽略已跟踪的文件7.3.4 适用的忽略规则7.3.5 常见的 .gitignore 配置1. Node.js 项目 .gitignore2. Python 项目 .gitignore3. Java 项目 .gitignore 7.3.6 提交 .gitignore 文件 7.4 查看提交历史7.5 撤销修改7.5.1 撤销未暂存的更改7.5.2 撤销暂存的更改7.5.3 撤销整个提交 8. Git 与远程仓库8.1 查看远程仓库8.2 拉取远程仓库的更新8.3 推送本地更改到远程仓库8.4 克隆远程仓库 9. Git 高级特性9.1 子模块 (Submodule)添加子模块更新子模块 9.2 使用 Git 钩子 (Hooks)设置钩子示例钩子pre-commit 9.3 Git 配置与别名设置别名查看配置 10. Git 性能优化与高级技巧10.1 使用 Git LFS (Large File Storage)安装 Git LFS跟踪大型文件类型提交 LFS 文件 10.2 Git 分支管理高级技巧删除本地分支删除远程分支 10.3 Git 合并与冲突解决合并分支解决冲突 11. Git 工作流程11.1 基本工作流程11.2 Git Flow 工作流程安装 Git Flow创建新特性分支完成特性分支发布分支 12. Git 进阶技巧12.1 使用 Stash 临时保存更改保存当前更改查看 Stash 列表恢复 Stash删除 Stash 12.2 使用 rebase 重新应用提交执行 Rebase 12.3 使用 Bisect 查找提交中的 bug启动 Bisect标记提交为好或坏 13. 寄语14. 结束语 1. Git 概述
1.1 什么是 Git
Git 是一个分布式版本控制系统用于跟踪文件的变化尤其是程序代码的变化。它由 Linus TorvaldsLinux 操作系统的创建者于 2005 年开发。Git 允许开发者在本地创建代码仓库进行文件修改、提交等操作直到准备好与远程仓库同步。Git 提供强大的分支管理功能可以在不干扰主分支的情况下开发新功能或修复 bug。
1.2 Git 与其他版本控制系统的区别
集中式版本控制系统如 SVN所有的代码版本保存在一个中央服务器中。每次操作都需要连接到服务器。分布式版本控制系统如 Git每个开发者的工作站都有完整的代码历史记录可以脱离服务器工作直到需要同步时才连接。
1.3 Git 的主要特点
速度快Git 的本地操作速度非常快因为大多数操作是在本地完成的。分布式架构每个开发者的机器上都有完整的代码库副本不依赖于中央服务器。支持分支和合并Git 提供强大的分支管理和合并功能便于团队协作。数据完整性Git 使用 SHA-1 哈希值确保版本数据的完整性防止数据丢失。
2. Git 安装与配置
2.1 Git 安装
Git 支持多种操作系统包括 Windows、macOS 和 Linux。以下是不同操作系统的安装方法
Windows
前往 Git 官方网站 下载 Windows 版 Git。运行安装程序按照向导完成安装选择默认选项即可。安装完成后在命令行输入 git --version如果显示 Git 的版本号表示安装成功。
macOS
可以使用 Homebrew 安装 Git打开终端并输入brew install git安装完成后在命令行输入 git --version如果显示 Git 的版本号表示安装成功。
Linux
在 Debian/Ubuntu 系统上可以使用以下命令安装sudo apt update
sudo apt install git在 Red Hat/Fedora 系统上sudo yum install git2.2 Git 配置
Git 安装完成后第一次使用时需要进行一些基本配置主要包括设置用户名和邮箱。
命令
git config --global user.name username
git config --global user.email email示例命令
git config --global user.name John Doe
git config --global user.email johndoeexample.com效果
这些配置将用于你所有的 Git 提交确保每次提交时正确记录提交者信息。配置成功后使用 git config --list 可以查看所有配置信息。
3. Git 基础命令
3.1 克隆 Git 仓库
命令
git clone repository_url示例命令
git clone https://github.com/example/repo.git效果
克隆远程仓库到本地。此命令会创建一个与远程仓库同名的文件夹并将所有文件和历史记录下载到本地。终端输出Cloning into repo...
remote: Counting objects: 50, done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 50 (delta 15), reused 20 (delta 5), pack-reused 0
Unpacking objects: 100% (50/50), done.3.2 查看 Git 仓库状态
命令
git status示例命令
git status效果
显示当前工作目录的状态列出哪些文件有变更哪些文件已经暂存哪些文件没有被跟踪。终端输出On branch master
Your branch is up to date with origin/master.Changes not staged for commit:modified: index.htmlno changes added to commit (use git add and/or git commit -a)3.3 查看提交历史
命令
git log示例命令
git log效果
查看当前 Git 仓库的提交历史。Git 会显示每次提交的哈希值、作者信息、提交日期和提交信息。终端输出commit 1234567890abcdef1234567890abcdef12345678
Author: John Doe johndoeexample.com
Date: Tue Oct 28 18:32:01 2024 0800Fixed the bug in index.htmlcommit 0987654321abcdef0987654321abcdef09876543
Author: Jane Smith janesmithexample.com
Date: Mon Oct 27 12:15:45 2024 0800Added new feature to main.js3.4 创建、切换和删除分支
创建分支
命令
git branch branch_name示例命令
git branch feature-xyz效果
创建一个新的分支 feature-xyz但并不切换到该分支。
切换分支
命令
git checkout branch_name示例命令
git checkout feature-xyz效果
切换到指定的分支 feature-xyz。
删除分支
命令
git branch -d branch_name示例命令
git branch -d feature-xyz效果
删除分支 feature-xyz如果分支已经合并到当前分支则可以成功删除。如果没有合并Git 会提示你需要使用 -D 强制删除。
3.5 合并分支
命令
git merge branch_name示例命令
git merge feature-xyz效果
将 feature-xyz 分支的更改合并到当前分支。如果没有冲突Git 会自动合并并创建一个新的提交。终端输出Updating abcdef1..1234567
Fast-forwardfile1 | 2 -1 file changed, 1 insertion(), 1 deletion(-)如果合并过程中出现冲突Git 会标记出冲突文件需要手动解决冲突后再提交。
4. Git 提交与变更管理
4.1 提交文件变更
命令
git commit -m commit_message示例命令
git commit -m Fix bug in header component效果
将已暂存的更改提交到本地 Git 仓库并附带一条提交信息。终端输出[master 1234567] Fix bug in header component1 file changed, 2 insertions(), 1 deletion(-)4.2 查看差异
命令
git diff示例命令
git diff效果
显示工作目录与暂存区之间的差异或者暂存区与最后一次提交之间的差异。它是用来查看文件改动的详细内容。终端输出diff --git a/index.html b/index.html
index abcdef1..1234567 100644
--- a/index.htmlb/index.html-1,3 1,3 header
- h1Welcome to My Website/h1h1Welcome to Our Website/h1/header4.3 使用暂存区
Git 使用暂存区来暂存更改等待提交。你可以使用 git add 将修改的文件添加到暂存区然后使用 git commit 提交更改。
暂存所有更改
命令
git add .示例命令
git add .效果
暂存当前目录下的所有更改包括新增、修改和删除的文件。然后使用 git commit 提交这些更改。
暂存单个文件
命令
git add file_name示例命令
git add index.html效果
将 index.html 文件的更改添加到暂存区准备提交。
5. Git 分支管理
5.1 分支的概念
分支是 Git 中一个非常强大的功能它允许你在不影响主分支通常是 master 或 main的情况下进行开发。每个分支都是代码的一个独立版本开发者可以在不同分支上并行开发最后再将它们合并。
主分支通常是主开发线的分支生产环境代码通常部署在主分支上。功能分支通常用于开发新功能。每个功能分支在完成开发后合并回主分支。发布分支用于准备代码发布确保代码在生产环境中运行良好。
5.2 创建、切换和删除分支
创建分支
命令
git branch branch_name示例命令
git branch feature-login效果
创建一个名为 feature-login 的新分支但不切换到该分支。
切换分支
命令
git checkout branch_name示例命令
git checkout feature-login效果
切换到 feature-login 分支开始在该分支上进行开发。
删除分支
命令
git branch -d branch_name示例命令
git branch -d feature-login效果
删除 feature-login 分支。如果该分支已经合并到当前分支删除将成功。如果尚未合并Git 会发出警告。
5.3 合并分支与解决冲突
当开发者在不同分支上进行开发并且最终需要将这些更改合并时Git 提供了合并操作。合并时如果两个分支修改了相同的部分Git 会提示冲突并要求开发者手动解决。
合并分支
命令
git merge branch_name示例命令
git merge feature-login效果
将 feature-login 分支的更改合并到当前分支。如果没有冲突Git 会自动完成合并并创建一个新的提交。
解决冲突
如果合并时发生冲突Git 会标记出冲突文件开发者需要手动编辑冲突部分解决后再执行提交。 查看冲突文件 git status编辑冲突文件删除冲突标记修改内容。 暂存解决冲突的文件 git add conflicted_file完成合并并提交 git commit6. Git 工作流
6.1 基本工作流
Git 的基本工作流包括以下步骤
从远程仓库克隆项目。在本地创建新的分支进行开发。完成开发后提交更改并推送到远程仓库。合并到主分支并推送到远程仓库。
6.2 Git Flow 工作流
Git Flow 是一种非常流行的 Git 工作流适用于持续集成和团队合作的项目。Git Flow 使用几个固定的分支来管理开发周期
master用于发布的分支生产环境代码总是保持稳定。develop用于开发的主分支所有的开发和集成工作都发生在这里。feature每个新功能都应该在独立的分支上开发。release当开发周期结束时创建一个发布分支进行最终调试。hotfix用于修复生产环境的紧急问题。
6.3 Fork 与 Pull Request 工作流
在开源项目中通常使用 Fork 和 Pull RequestPR工作流。开发者可以 fork 一个远程仓库修改自己的分支最后通过 Pull Request 将修改提交给原仓库的所有者进行合并。
Fork在 GitHub 上 fork 仓库创建该仓库的副本。Clone将 fork 的仓库克隆到本地。修改与提交在本地修改代码并提交。Pull Request在 GitHub 上发起 Pull Request将修改提交给原项目。
7. Git 高级命令与技巧
7.1 Rebase 与 Merge
git merge 和 git rebase 都用于合并分支但它们的工作方式不同。
Merge合并分支时会产生一个合并提交保留合并历史。Rebase将一个分支的修改应用到另一个分支的最顶端从而产生一个线性的提交历史。
命令
git rebase branch_name示例命令
git rebase master效果
将当前分支的更改应用到 master 分支的顶部从而产生一个线性的提交历史。
7.2 使用 Tag
Git 使用标签Tag来标记特定的提交点通常用于标记发布版本。
命令
git tag tag_name示例命令
git tag v1.0效果
为当前提交创建一个名为 v1.0 的标签。
7.3 Git 忽略文件
在 Git 中.gitignore 文件用于指定 Git 不需要跟踪的文件或目录。它通常用于忽略临时文件、编译产物、操作系统生成的文件等不需要版本控制的内容。合理使用 .gitignore 能有效保持 Git 仓库的整洁避免不必要的文件进入版本控制系统。
7.3.1 创建 .gitignore 文件
命令
echo pattern .gitignore示例命令
echo node_modules/ .gitignore效果
这个命令将 node_modules/ 目录添加到 .gitignore 文件中表示 Git 将忽略所有 node_modules 目录下的文件。如果 .gitignore 文件不存在它会自动创建并将指定的内容追加到文件末尾。运行命令后执行 cat .gitignore 可以看到文件内容$ cat .gitignore
node_modules/注意事项
.gitignore 是一个文本文件你可以手动编辑该文件来添加其他需要忽略的文件或目录模式。使用 操作符会将内容追加到 .gitignore 文件如果该文件已经存在内容将不会被覆盖。
7.3.2 编辑 .gitignore 文件
在项目开发中可能会有多个文件需要被忽略或者更改忽略规则。你可以手动编辑 .gitignore 文件添加新的忽略规则。
命令
nano .gitignore示例命令
nano .gitignore效果
这会打开 .gitignore 文件允许你进行手动编辑。你可以在文件中添加或删除需要忽略的文件或目录模式。例如添加以下内容以忽略某些常见文件和文件夹*.log
*.tmp
node_modules/
dist/这样所有 .log、.tmp 文件以及 node_modules/ 和 dist/ 目录下的文件都会被 Git 忽略。
提示
使用 nano 命令时编辑完文件后需要按 Ctrl O 保存文件按 Ctrl X 退出编辑器。
7.3.3 忽略已跟踪的文件
如果某个文件已经被 Git 跟踪但之后你希望忽略它可以通过修改 .gitignore 文件来实现。需要先将该文件从 Git 的索引中移除然后才能正确忽略。
命令
git rm --cached file_name示例命令
git rm --cached node_modules/效果
这个命令将 node_modules/ 目录从 Git 的索引中移除但不会删除本地文件。在移除索引后node_modules/ 目录将被 .gitignore 忽略不再被 Git 跟踪。执行 git status 会看到该文件或目录从暂存区移除的提示$ git status
Changes to be committed:(use git restore --staged file... to unstage)deleted: node_modules/注意事项
使用 --cached 参数仅会从 Git 的索引中删除文件文件本身会保留在本地工作区。在移除文件后记得提交 .gitignore 文件和 git rm 操作git commit -m Remove node_modules from version control7.3.4 适用的忽略规则
在 .gitignore 文件中可以使用不同的模式来指定忽略哪些文件或目录。以下是常见的忽略规则
通配符 *匹配零个或多个字符。例如*.log 会忽略所有 .log 文件。目录模式 /*匹配目录中的所有文件。例如build/* 会忽略 build/ 目录下的所有文件。否定符 !在忽略规则中使用 ! 来指定不忽略某个文件或目录。例如!important.log 会保留 important.log 文件。注释 #注释行以 # 开头Git 会忽略注释行。例如# Ignore logs。
命令
echo *.log .gitignore
echo !important.log .gitignore效果
*.log 忽略所有 .log 文件。!important.log 保留 important.log 文件即使它符合 .log 模式。
注意事项
在 .gitignore 中添加规则时一定要注意规则的顺序因为后面的规则会覆盖前面的规则。例如如果先添加 *.log 忽略所有 .log 文件再添加 !important.log 来保留 important.log。
7.3.5 常见的 .gitignore 配置
以下是一些常见的 .gitignore 配置适用于不同的开发环境和工具。
1. Node.js 项目 .gitignore
# 忽略 node_modules 目录
node_modules/# 忽略编译的日志文件
npm-debug.log*# 忽略临时文件
*.tmp
*.swp2. Python 项目 .gitignore
# 忽略虚拟环境目录
venv/
# 忽略 Python 编译的文件
*.pyc
*.pyo3. Java 项目 .gitignore
# 忽略 Maven 构建输出目录
target/
# 忽略 IntelliJ IDEA 配置文件
.idea/
# 忽略 Eclipse 配置文件
.project
.classpath7.3.6 提交 .gitignore 文件
一旦你修改了 .gitignore 文件并确保它包含了所有需要忽略的文件和目录记得将它提交到 Git 仓库以便其他开发者也能够使用相同的忽略规则。
命令
git add .gitignore
git commit -m Add .gitignore to ignore unnecessary files
git push origin branch_name示例命令
git add .gitignore
git commit -m Add .gitignore to ignore node_modules
git push origin main效果
将 .gitignore 文件添加到暂存区提交到版本控制中并推送到远程仓库。其他开发者拉取代码时.gitignore 文件将自动应用到他们的本地仓库确保不再跟踪忽略的文件。
7.4 查看提交历史
命令
git log示例命令
git log效果 显示当前分支的提交历史包括每个提交的哈希值、提交作者、提交时间和提交信息。输出格式如下 commit 1234567890abcdef1234567890abcdef12345678 (HEAD - master)
Author: John Doe johndoeexample.com
Date: Thu Oct 28 12:15:42 2024 0000Fix bug in header componentcommit abcdef1234567890abcdef1234567890abcdef12
Author: Jane Smith janesmithexample.com
Date: Wed Oct 27 15:22:08 2024 0000Add new feature to handle user login额外选项 git log --oneline简洁模式只显示提交的哈希值和提交信息。git log --graph以图形化方式显示提交历史。
7.5 撤销修改
Git 提供了多种方式撤销更改视不同的场景而定。
7.5.1 撤销未暂存的更改
命令
git checkout -- file_name示例命令
git checkout -- index.html效果
撤销文件 index.html 中的未暂存更改恢复到上次提交时的状态。
7.5.2 撤销暂存的更改
命令
git reset file_name示例命令
git reset index.html效果
将已暂存的 index.html 文件从暂存区移除但不影响文件内容。如果你已经执行了 git add此命令将取消暂存但不会丢失文件中的更改。
7.5.3 撤销整个提交
命令
git reset --hard commit_hash示例命令
git reset --hard abcdef1234567890abcdef1234567890abcdef12效果
重置当前分支到指定的提交 abcdef1234567890abcdef1234567890abcdef12并且丢弃所有当前工作目录中的更改。请谨慎使用因为此命令会删除所有未提交的更改。
8. Git 与远程仓库
8.1 查看远程仓库
命令
git remote -v示例命令
git remote -v效果
显示当前项目的远程仓库信息包括远程仓库的名称通常为 origin和 URL 地址。输出示例如下origin https://github.com/example/repo.git (fetch)
origin https://github.com/example/repo.git (push)8.2 拉取远程仓库的更新
命令
git pull示例命令
git pull origin master效果
从远程仓库的 master 分支拉取最新的更改并自动合并到本地当前分支。如果没有冲突Git 会自动合并。终端输出remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (14/14), done.
From https://github.com/example/repo* branch master - FETCH_HEADUpdating abcdef1..1234567Fast-forwardfile1 | 2 -1 file changed, 1 insertion(), 1 deletion(-)8.3 推送本地更改到远程仓库
命令
git push remote_name branch_name示例命令
git push origin master效果 将本地 master 分支的提交推送到远程仓库。确保本地分支与远程分支一致后执行推送操作。 终端输出 Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 329 bytes | 329.00 KiB/s, done.
To https://github.com/example/repo.git1234567..89abcdef master - master8.4 克隆远程仓库
命令
git clone repository_url示例命令
git clone https://github.com/example/repo.git效果
克隆远程仓库到本地创建一个新的 Git 仓库并自动设置远程 origin 指向该仓库。终端输出Cloning into repo...
remote: Enumerating objects: 123, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (90/90), done.
remote: Total 123 (delta 10), reused 90 (delta 6), pack-reused 0
Receiving objects: 100% (123/123), 3.64 MiB | 2.50 MiB/s, done.
Resolving deltas: 100% (10/10), done.9. Git 高级特性
9.1 子模块 (Submodule)
Git 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。它特别适合将第三方库或依赖项目引入到你的项目中。
添加子模块
命令
git submodule add repository_url path示例命令
git submodule add https://github.com/example/other-repo.git submodules/other-repo效果
将一个外部仓库添加为子模块并将其内容放置在指定路径如 submodules/other-repo下。
更新子模块
命令
git submodule update --remote示例命令
git submodule update --remote效果
更新所有子模块到最新的远程版本。
9.2 使用 Git 钩子 (Hooks)
Git 钩子是 Git 中的一个机制允许在执行某些操作前或后运行自定义脚本。常见的钩子包括 pre-commit 和 post-commit。
设置钩子
命令
cd .git/hooks示例命令
cd .git/hooks效果
进入 .git/hooks 目录所有的钩子脚本都存放在该目录中。
示例钩子pre-commit
命令
echo #!/bin/sh .git/hooks/pre-commit
echo echo Running pre-commit hook... .git/hooks/pre-commit
chmod x .git/hooks/pre-commit效果
创建一个 pre-commit 钩子每次提交之前都会运行这个脚本。脚本内容会输出 Running pre-commit hook...并且该钩子需要执行权限。
9.3 Git 配置与别名
Git 允许你为常用命令设置别名帮助提高工作效率。
设置别名
命令
git config --global alias.alias_name git_command示例命令
git config --global alias.co checkout效果
为 git checkout 命令设置别名 git co以后可以使用 git co 来代替 git checkout。
查看配置
命令
git config --list示例命令
git config --list效果
显示所有 Git 配置项例如用户信息、别名设置等。
10. Git 性能优化与高级技巧
10.1 使用 Git LFS (Large File Storage)
Git LFS 用于管理大型文件如二进制文件、视频文件等它将这些大文件存储在 Git 外部的专用服务中从而避免仓库变得过于庞大。
安装 Git LFS
命令
git lfs install示例命令
git lfs install效果
安装 Git LFSLarge File Storage使其可以用于管理大型文件。终端输出Git LFS initialized.跟踪大型文件类型
命令
git lfs track *.psd示例命令
git lfs track *.psd效果
开始跟踪所有 .psd 文件类型的文件将它们存储在 Git LFS 中。输出示例Tracking *.psd to Git LFS.提交 LFS 文件
命令
git add file_name
git commit -m Add large file示例命令
git add image.psd
git commit -m Add large PSD file效果
将大文件如 image.psd添加到 Git LFS 管理的文件中然后提交。
10.2 Git 分支管理高级技巧
删除本地分支
命令
git branch -d branch_name示例命令
git branch -d feature-xyz效果
删除本地分支 feature-xyz如果该分支未完全合并到当前分支Git 会阻止删除。使用 -D 强制删除git branch -D feature-xyz删除远程分支
命令
git push remote_name --delete branch_name示例命令
git push origin --delete feature-xyz效果
删除远程仓库中的 feature-xyz 分支。
10.3 Git 合并与冲突解决
合并分支
命令
git merge branch_name示例命令
git merge feature-xyz效果
将 feature-xyz 分支的修改合并到当前分支。如果没有冲突Git 会自动合并修改并创建一次新的提交。
解决冲突
命令
git status示例命令
git status效果
查看当前分支的状态Git 会提示哪些文件存在冲突。通常会显示为 both modified需要手动编辑冲突文件。
解决冲突步骤 打开冲突文件手动解决冲突。Git 会在冲突部分标记出不同的修改类似如下 HEAD
// Your changes here// Changes from the other branchfeature-xyz在解决冲突后标记为已解决 git add file_name完成合并并提交 git commit11. Git 工作流程
11.1 基本工作流程
命令
git clone repository_url
git checkout -b new_branch
git add file_name
git commit -m Your commit message
git push origin new_branch示例命令
git clone https://github.com/example/repo.git
git checkout -b feature-xyz
git add index.html
git commit -m Add new feature to index
git push origin feature-xyz效果
这是一个基本的 Git 工作流程包括从远程仓库克隆、创建新分支、修改文件、提交更改、推送到远程仓库等步骤。
11.2 Git Flow 工作流程
Git Flow 是一种常见的 Git 工作流程它定义了多个分支类型和对应的管理策略旨在简化团队协作。
安装 Git Flow
命令
git flow init示例命令
git flow init效果
启动 Git Flow 工作流程初始化设置默认的分支策略。会提示输入分支名称等设置通常选择默认设置即可。
创建新特性分支
命令
git flow feature start feature_name示例命令
git flow feature start feature-xyz效果
使用 Git Flow 创建一个新的特性分支 feature-xyz用于开发新功能。
完成特性分支
命令
git flow feature finish feature_name示例命令
git flow feature finish feature-xyz效果
完成 feature-xyz 分支的开发并将其合并回 develop 分支。
发布分支
命令
git flow release start release_name示例命令
git flow release start 1.0.0效果
创建一个新的发布分支 1.0.0用于准备发布版本。
12. Git 进阶技巧
12.1 使用 Stash 临时保存更改
Git 提供了 stash 命令用于将当前的更改暂时保存之后可以恢复以便切换到其他任务。
保存当前更改
命令
git stash示例命令
git stash效果
保存当前工作区的修改并将工作区恢复为最近一次提交时的状态。
查看 Stash 列表
命令
git stash list示例命令
git stash list效果
显示所有的暂存更改stash列表。输出示例stash{0}: WIP on master: 1234567 Add feature X
stash{1}: WIP on feature-xyz: abcdef0 Fix bug Y恢复 Stash
命令
git stash apply stash_index示例命令
git stash apply stash{0}效果
恢复指定的暂存更改将其应用到当前分支。
删除 Stash
命令
git stash drop stash_index示例命令
git stash drop stash{0}效果
删除指定的暂存更改。 12.2 使用 rebase 重新应用提交
rebase 用于将一组提交应用到另一个分支上常用于整理提交历史。
执行 Rebase
命令
git rebase base_branch示例命令
git rebase master效果
将当前分支的提交重新应用到 master 分支的最新提交上。
12.3 使用 Bisect 查找提交中的 bug
Git Bisect 是一个二分查找工具用于定位某个 bug 引入的提交。
启动 Bisect
命令
git bisect start示例命令
git bisect start效果
启动 bisect 过程Git 会要求你指定已知的“坏”提交和“好”提交。
标记提交为好或坏
命令
git bisect good commit_hash
git bisect bad commit_hash示例命令
git bisect good abcdef1234567890
git bisect bad 1234567890abcdef效果
标记提交为好不包含 bug或坏包含 bug。Git 会通过二分查找来缩小范围直到定位到引入 bug 的提交。
13. 寄语
Git 是一种强大的版本控制工具掌握了其基本命令和高级特性后可以大大提高开发效率并方便团队协作。通过本篇文章你已经学会了 Git 的核心命令及其使用方法希望你能够灵活运用 Git 在实际项目中进行版本管理。
14. 结束语 本节内容已经全部介绍完毕希望通过这篇文章大家对 Git 有了更深入的理解和认识。感谢各位的阅读和支持如果觉得这篇文章对你有帮助请不要吝惜你的点赞和评论这对我们非常重要。再次感谢大家的关注和支持点我关注❤️