作者:E4b9a6, 创建:2022-12-07, 字数:4830, 已阅:27, 最后更新:2022-12-07
本文将记录入门的git命令,适用于有其他版本管理经验的人快速了解git的常见操作
Git 是一个分布式版本控制系统,用于跟踪代码更改并协同开发项目
Git 支持在本地进行代码更改,将这些更改推送到远程存储库,以方便其他协作人员拉取以及同步修改进度
git提供的3个主要特性分别是:
以上3个特性在开发工作中都提供了非常强大的支持
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]
以下会针对git的常见操作做介绍,分别是仓库、文件、版本以及分支的使用方法
在创建一个代码项目后,切换到该代码项目下,初始化仓库,请放心,这不会对代码项目有任何污染
git 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 目录
写好忽略规则后,就可以绑定远程空白仓库
git remote add origin http://example/example.git # 绑定远程空白仓库
git push -u origin main # 将当前分支绑定到远程仓库的main分支
通常一次正常的代码开发流程如下
# 拉取同步到最新代码
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
第一步的克隆是针对有原始代码的仓库,也可以是上面的空白仓库创建与绑定
git最主要的是提供了文件管理,在修改文件后,可以与原始仓库对比看看修改了哪些文件
git status
可以丢弃对某个文件的更改
git checkout -- file.txt
可以查看文件修改历史
git log -- file.txt
git实现对代码版本的定义,通过借助tag
来区分不同版本的代码
常见的tag操作如下
git 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方便帮助定位问题以及自动化部署集成
每次修改代码完成后都会推送到远程仓库的具体分支下,常见分支包括:
分支的常见操作如下
git 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)进行管理,合理规范使用分支和标签是必要的
当你修改了代码,却因为各种原因(如生产环境紧急修复)需要紧急修改代码,会发现无法切分分支,因为当前分支有未保存的工作
git stash
可以帮助你暂存当前工作目录的修改,让你可以在不想提交修改的情况下切换到其他分支进行其他操作
使用如下:
# 将当前工作区修改暂存
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}
Gitflow 是一种基于分支管理的工作流程,旨在帮助团队有效地组织和管理代码库中的开发和发布流程
Gitflow通常包含主分支(main/master)、开发分支(develop)、特性分支(feature)、发布分支(release)以及修复分支(hotfix)
代码通常从特性分支开始编写,完成功能后合并到开发分支,在汇聚多个特性分支后合并到release分支进行发布前的测试和验证,通过测试验证后合并到main/master分支并发布产品,在线上发现紧急问题后创建修复分支并合并到main/master分支中修复问题
Gitflow是比较常见的工作流,也有其他的工作流包括Gitlabflow、Githubflow等,可自行查阅
另外一个值得注意的是,Gitflow也有推荐的提交注释格式,包含:
Fix
、Add
、Update
等来描述此次提交的目的示例如下
Add 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
遵循规范的提交注释格式可以使提交历史更清晰易读,方便团队协作和代码维护
在Git中,PR代表Pull Request,是一种用于协作和代码审查的机制,常见于github
中
当你在需要在一个非本人拥有的代码仓库中开发新功能或修复bug时,通常会基于某个分支进行开发,当你完成开发并希望将你的代码合并到目标分支(如主分支)时,你可以创建一个Pull Request来请求仓库的所有者审阅你的代码,审阅通过后你的代码将合并到主目标的分支中
PR多依赖于界面操作,其步骤通常如下:
以上是git的常见用途,git的知识还有非常多,随着使用会愈发惊叹这个程序的不可思议