GIT工具实践
2024-11-15 13:43:18 5 举报
AI智能生成
GIT是一个开源的分布式版本控制系统,用于跟踪文件更改,提供协作功能,并帮助用户管理项目。它的核心在于快速、安全地处理任何规模的项目,同时支持非线性工作流和完整的历史记录。GIT文件类型包括但不限于文本、二进制、图像、视频等,适用于各种不同的项目和团队。此外,GIT提供了许多修饰语来描述提交,如feat(新功能)、fix(修复)、docs(文档更改)等,这些修饰语有助于快速理解提交的更改类型。总的来说,GIT是一个功能强大且易于使用的工具,适合各种规模的软件开发和版本控制需求。
作者其他创作
大纲/内容
基本概念
版本库
当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。
工作区
本地项目存放文件的位置
暂存区 (Index/Stage)
顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区
本地仓库(Repository)
通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
远程仓库(Remote)
当我们使用GitHub托管我们项目时,它就是一个远程仓库。
分支介绍
master
这个分支的代码是发布到生产的代码
develop
这个分支的代码是预发布到生产的代码
release
这个分支的代码是新版本发布到生产的代码
feature
这个分支的代码是新需求开发的代码
hotfix
这个分支的代码是紧急修复生产 bug 的代码
常用命令
常看远端仓库信息
git remote -v
查看修改信息
git status
提交到缓存区
git add . 全部上传到缓存区
git add 指定文件
git add 指定文件
提交到本地仓库
git commit -m 'some message'
查看提交历史
git log
拉取分支
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写
提交远程仓库
git push <远程主机名> <本地分支名>:<远程分支名>
查看分支
git branch
切换分支
git checkout <分支名>
创建分支并切换
git checkout -b <分支名>
删除分支
git branch -d <分支名>
删除远程分支
git push -d <分支名>
合并分支
git merge <分支名>
业务场景与解决方案
一库N项目同步
场景:一个GIT存在主干分支,A项目,B项目,C项目时,代码需要同步 ,但又不能整个分支合并,因为存在差异
解决:通过git cherry-pick命令实现,将指定的提交(commit )应用于其他的分支
转移单个:git cherry-pick <commitHash>
转移多个:git cherry-pick <HashA> <HashB>
多库同步
场景:两个GIT库需要互相同步/合并/拉取代码时
解决:通过git remote add <target><git地址> 把该库加入远程仓库
拉取:git fetch <target>
合并:git merge <target>/master
版本标签
场景:项目每次发布时,需要清晰知道对应的是哪条分支的哪条commit
解决:通过创建tag标记,指向某个commit ,从而实现发布版本号
创建本地标签:git tag <tagName>
推送到远程仓库:git push origin <tagName>
查看标签:git show <tagName>
删除标签:git tag -d <tagName>
代码回滚
场景:当发布项目时,发现有BUG,需要回滚到上一个版本
解决:可以通过某个版本,某个提交
回退到上个版本:git reset --hard HEAD^
退到/进到指定版本:git reset --hard commit_id
强推到远程:git push origin HEAD --force
因为回滚提交可能会失败
修改暂存
场景:你正在本地修改的代码,但又想把git服务器上的代码pull到本地
解决:可以使用 git stash来解决(本地刚才修改的代码将会被暂时封存起来)
git stash
git pull origin master
git stash pop
git pull origin master
git stash pop
自动发布
场景:当本地项目开发完成并push时,想实现服务器项目代码自动同步与发布
解决:可以通过git hooks功能来实现
每一个Git 下都包含有.git/hoooks这个目录,你可以在这个目录下自由定制Hooks的功能,当触发一些Git行为时,相应地Hooks将被执行。
详细教程:https://blog.csdn.net/weixin_30693683/article/details/98416829
疑难杂证
代码正常,但是commit校验不通过时,可以使用--no-verify 参数来跳过
git cherry-pick 使用不正常时,记得先同步远端代码
使用git提交到远程仓库,每次都要输入用户名和密码的解决方法,打开 .git/config 文件,增加如下代码
[credential]
helper = store
helper = store
忽略文件 .gitignore后,需要清除缓存git rm -r --cached .
当拉取代码时发生冲突,建议使用vs code来解决,会更清晰; 若冲突代码不明白时,需要找该开发者一起沟通解决,不可随便合并,否则容易弄丢别人的代码
git时出现fatal: Authentication failed for xxxxx.git时,配置信息即可
git config -–global user.name "xxx"
git config –-global user.email "xxx@xxx.com"
git config –-global user.email "xxx@xxx.com"
0 条评论
下一页