Git入门使用指南
Git 是一个分布式版本控制系统,用于跟踪代码更改并协同开发项目
Git 支持在本地进行代码更改,将这些更改推送到远程存储库,以方便其他协作人员拉取以及同步修改进度
git提供的3个主要特性分别是:
分布式 版本控制 多人协作以上3个特性在开发工作中都提供了非常强大的支持
1. 安装
git官网:https://git-scm.com/
git官方支持Windows/MacOS/Linux等,在Windows下安装git还可以顺带获得bash
环境
这也是很多开发人员在Windows上使用Linux Bash环境的常用方法
在安装完成后,请在CLI
中设置git账户信息,这个账户信息会在提交时作为默认值
git config --global user.name [username] git config --global user.email [gmail@gmail.com]
2. 使用
以下会针对git的常见操作做介绍,分别是仓库、文件、版本以及分支的使用方法
2.1. 仓库管理
在创建一个代码项目后,切换到该代码项目下,初始化仓库,请放心,这不会对代码项目有任何污染
Bashcontent_copygit init # 仓库初始化 git add . # 追踪文件
在仓库初始化后,还添加了对所有文件的追踪
如果你需要忽略文件,可以在项目根目录下添加一个.gitignore
文件,忽略规则写法如下:
# .gitignore文件注释以#开头
file.txt # 忽略特定文件
directory/ # 忽略特定目录
*.log # 忽略所有以 .log 结尾的文件
/logs/ # 忽略根目录下的 logs 目录
src/*.txt # 忽略 src 目录下所有以 .txt 结尾的文件
!important.txt # 不忽略 important.txt 文件
!/docs/ # 不忽略根目录下的 docs 目录
*.zip # 忽略所有 .zip 文件
!important.zip # 但不忽略 important.zip 文件
/logs # 忽略根目录下的 logs 目录
logs/ # 忽略任意位置的 logs 目录
写好忽略规则后,就可以绑定远程空白仓库
Bashcontent_copygit remote add origin http://example/example.git # 绑定远程空白仓库 git push -u origin main # 将当前分支绑定到远程仓库的main分支
通常一次正常的代码开发流程如下
Bashcontent_copy# 拉取同步到最新代码 git clone http://example/example.git # 切换新的本地分支 git checkout main # 更新分支代码到最新 git pull origin main # 切换到新功能分支进行代码开发 git checkout -b faeture-branch # 进行代码开发 ... # 提交代码开发 git commit -m "update code to ..." # 切换到主分支并合并代码 git checkout main git pull git merge faeture-branch # 推送代码到远程仓库 git push origin main
第一步的克隆是针对有原始代码的仓库,也可以是上面的空白仓库创建与绑定
2.2. 文件管理
git最主要的是提供了文件管理,在修改文件后,可以与原始仓库对比看看修改了哪些文件
Bashcontent_copygit status
可以丢弃对某个文件的更改
Bashcontent_copygit checkout -- file.txt
可以查看文件修改历史
Bashcontent_copygit log -- file.txt
2.3. 版本管理
git实现对代码版本的定义,通过借助tag
来区分不同版本的代码
常见的tag操作如下
Bashcontent_copygit tag # 查看所有tag git tag v1.0 # 添加当前仓库版本为v1.0版本tag git tag v1.0 8a3 # 为commit为8a3开头的提交添加v1.0版本的tag git tag v1.0 -m "v1.0 version" # 为tag添加注释 git push origin v1.0 # 推送v1.0的标签到远程 git push origin --tags # 推送本地所有标签到远程仓库 git tag -d v1.0 # 删除标签
通常在一次版本代码开发完成后,都会打上tag并推送到远程仓库,tag方便帮助定位问题以及自动化部署集成
2.4. 分支管理
每次修改代码完成后都会推送到远程仓库的具体分支下,常见分支包括:
main/master分支:通常用于发布生产环境,具备最新稳定版本的代码分支,是受保护的分支 develop分支:用于集成各个功能特性分支的中央分支 Faeture分支:用于开发单个功能的分支 Hotfix分支:用于修复生产环境紧急问题的分支,修复后及时删除 Release分支:在发布新版本之前的进行最后测试的分支分支的常见操作如下
Bashcontent_copygit branch -a # 查看所有分支(包括远程仓库) git branch remote -v # 查看远程仓库的分支 git checkout -b feature-branch # 从当前分支切换并创建feature-branch的功能分支 git checkout -b feature-branch origin/main # 拉取远程main分支并创建切换到本地feature-branch分支 git branch --set-upstream-to = origin/main main # 将本地分支main关联到远程仓库的main分支 git merge feature-branch # 合并feature-branch功能分支到当前分支 git branch -D feature-branch # 删除feature-branch分支
分支用于区分不同的工作情况,包括:
本地常规功能开发 本地修复生产环境问题 测试环境进行版本测试 ...如果没有分支,以上情况都在main
分支工作将会变得十分混乱
许多CI/CD
部署基于分支和版本(tag)进行管理,合理规范使用分支和标签是必要的
3. 其他3.1. git stash
当你修改了代码,却因为各种原因(如生产环境紧急修复)需要紧急修改代码,会发现无法切分分支,因为当前分支有未保存的工作
git stash
可以帮助你暂存当前工作目录的修改,让你可以在不想提交修改的情况下切换到其他分支进行其他操作
使用如下:
Bashcontent_copy# 将当前工作区修改暂存 git stash # 查看暂存列表 git stash list # 切分到其他分支完成工作 ... # 切换回来当前分支 ... # 恢复方法一:恢复最近的暂存并将其从 stash 中移除 git stash pop # 恢复方法二:恢复最近的暂存但不移除stash中的记录 git stash apply # 有多个stash,需要恢复指定的stash git stash apply stash@{n} # 丢弃最新的stash git stash drop # 丢弃指定的stash git stash drop stash@{n}
3.2. Gitflow
Gitflow 是一种基于分支管理的工作流程,旨在帮助团队有效地组织和管理代码库中的开发和发布流程
Gitflow通常包含主分支(main/master)、开发分支(develop)、特性分支(feature)、发布分支(release)以及修复分支(hotfix)
代码通常从特性分支开始编写,完成功能后合并到开发分支,在汇聚多个特性分支后合并到release分支进行发布前的测试和验证,通过测试验证后合并到main/master分支并发布产品,在线上发现紧急问题后创建修复分支并合并到main/master分支中修复问题
Gitflow是比较常见的工作流,也有其他的工作流包括Gitlabflow、Githubflow等,可自行查阅
另外一个值得注意的是,Gitflow也有推荐的提交注释格式,包含:
使用动词开头:如Fix
、Add
、Update
等来描述此次提交的目的
描述语法:应该使用"一般现在时"来描述提交内容
分隔行:可以使用空行来分隔标题和正文,以增加可读性
示例如下
TEXTcontent_copyAdd feature to allow users to reset passwords
- Implemented a new feature to allow users to reset their passwords
- Added UI components for password reset form
- Fixed bug related to password reset functionality
Issue #123
遵循规范的提交注释格式可以使提交历史更清晰易读,方便团队协作和代码维护
3.3. Pull Requet(PR)
在Git中,PR代表Pull Request,是一种用于协作和代码审查的机制,常见于github
中
当你在需要在一个非本人拥有的代码仓库中开发新功能或修复bug时,通常会基于某个分支进行开发,当你完成开发并希望将你的代码合并到目标分支(如主分支)时,你可以创建一个Pull Request来请求仓库的所有者审阅你的代码,审阅通过后你的代码将合并到主目标的分支中
PR多依赖于界面操作,其步骤通常如下:
Fork代码仓库到自己账户下 Clone代码仓库并创建分支修改代码 合并代码并推送代码到自己的远程仓库 向目标代码仓库发起PR请求4. 尾语
以上是git的常见用途,git的知识还有非常多,随着使用会愈发惊叹这个程序的不可思议
文章来源:
Author:chancel
link:http://www.chancel.me/markdown/git