Git详解
先在本地master和dev分支pull一下, 获取到当前远程仓库最新代码, 然后在本地master合并到dev, 如果有冲突解决合并冲突, 解决完冲突后然后dev合并到master上, 最后master推送给远程仓库的origin/master中。5.hotfix分支, 补丁分支后bug修复分支, 基于master分支创建, 修复完成后合并到master和develop分支上, 并推送远程, 一
一. Git基础操作
Git是当下最流行的版本控制器,可以控制电脑上所有格式的文档,可回退之前版本
0.查看Linux版本cat /etc/os-release
1.查看git版本git --version
2.卸载git
Red Hat / CentOS 7-/ 老版 Fedorasudo yum remove git -y
ubuntu环境下sudo apt-get remove git -y
3.安装git
Red Hat / CentOS 7-/ 老版 Fedorasudo yum install git -y
ubuntu环境下sudo apt-get install git -y
4.创建本地仓库git init
5.查看隐藏目录la
6.查看.git中有什么文件tree .git/
7.配置本地仓库
(1)配置用户名git config user,name "---"或者生效于当前机器所有本地仓库git config --global user.name "---"
(2)配置邮件地址git config user.email "---"或者生效于当前机器所有本地仓库git config --global user.email"---"
(3)查看配置git config -l
(4)重置配置
重置用户名git config --unset user.name或者重置当前机器全局本地仓库配置git config --global --unset user.name
重置邮件git config --unset user.email或者重置当前机器全局本地仓库配置git config --global --unset user.email
不可在.git(版本仓库)文件进行任何修改
与.git同一文件夹下, 被称为工作区
HEAD指针指向master
add之后文件会先放到index缓存区
objects对象库储存修改后的文件的新的.git对象, 即工作区内容修改后, 会自动往对象库中写入新的.git对象
1.添加文件
git add 文件名(可以添加多个文件)或者git add .提交所有文件
2.提交文件git commit -m "提交的细节"
3.打印提交记录git log
4.查看master最新一次提交的commit-idcat .git/refs/heads/master
5.通过commit-id来查看提交细节git cat-file -p 提交ID找到tree对应的ID后,再次git cat-file -p tree的ID,再次git cat-file -p 你想要查看的blob的ID
6. 查看当前仓库的修改状态git status
7.查看具体修改了哪些内容git diff 文件名
8.以简洁优美形式来展现自己的修改操作git log --pretty=oneline
1.版本回退
(1)git reset [--soft | --minxed | --hard] commit-ID
–soft: 只回退版本区内容
–mixed: 回退版本区与暂存区的内容(git中的默认级别)
–hard: 回退所有区域内容(慎用)
(2)通过git log --pretty=oneline指令来查看你的commit-ID, 然后进行回退
(3)如果不小心关闭了云服务器, 可以通过指令
git reflog查看历史commit-ID
(4)每次回退只是修改master指针的指向
1.撤销修改
(1)工作区撤销修改git checkout -- 文件名回到最近一次add/commit状态(用于工作区的撤销修改操作)
(2) 暂存区撤销修改
当你add添加了修改文件到暂存区的时候, 还没有提交到版本区, 那么使用版本回退命令, 把工作区与暂存区与版本区的内容保持一致git reset --hard HEAD(如果回到上一个版本HEAD^ 以此类推加^) 文件名
(3) 版本区回退(前提是没有进行push操作推送到远程仓库)git reset --hard HEAD^*(回到上一个版本)
2.删除文件git rm 文件名删除工作区文件并且add到暂存区, 我们只需commit到版本区即可
二. 分支管理
1.查看分支
git branch
2.创建分支git branch 分支名称
3.切换分支git checkout 分支名称
既创建又选择分支快捷方式:git checkout -b dev
4.在分支上修改后add再commit
5.切换成主分支mastergit checkout master
6.合并分支git merge 分支名称
7.删除分支
git branch -d 分支名称要注意, 必须在其他分支上才能删除当前分支, 且merge合并后才能删除
8.合并冲突
在分支dev修改提交后, 又在master进行修改提交, 这时如果合并Git不能分辨我们要选择哪个修改后的结果, 于是就会产生合并冲突, 这时就需要我们进行手动处理冲突
9.查看分支合并情况(图示化)git log --graph --abbrev-commit
10.合并模式
(1)First-forword 模式: 直接使用命令git merge 分支名称, ff
(2)no-ff模式, 合并时使用命令
git merge --no-ff -m "自定义名称" 分支名称, 而我们之前发生合并冲突时使用的就是这种模式
11.bug分支
已知master主分支上运行的程序必须是最稳定最优化的版本, 但实际开发中我们可能会遇到master主分支上也会出现bug的情况, 这时我们不应该直接在master直接修复bug, 因为有可能越修复程序越崩溃, 因此我们需要在当前主分支上建一个bug分支, 专门用来修复bug, 修复好后可以合并到主分支, 而这时可能会有其他同事2在bug分支并入master分支之前另建了一个分支用来增加新功能, 当同事2写完后并入master分支时就会产生合并冲突, 解决合并冲突可以在master并入然后手动解决冲突, 但最好的方式就是master并入到dev上, 在dev修改没有问题后再次并入到master中
12.强制删除
在之前我们合并分支时候, 可以在另一个分支删除当前已经合并的分支, 但是当我们在分支开发过程中, 写完commit之后还没有merge时, 突然不想要这个分支的话, 用git branch -d 分支名称时候删除失败的
我们需要使用命令git branch -D 分支名称强制删除
三. 远程仓库
1.gitee远程仓库中的Issues, 作用是当遇见bug时, 可以通过该按钮来指定人员处理这个bug, 可以设置时间, 负责人, 优先级等等…
2.gitee的Pull Request这个功能是在开发工作中, 当我们新写一个功能时, 不可以直接并入主分支master, 需要提交申请, 负责人同意后才可以并入master
3. 克隆远程仓库
找到HTTPS, 点击复制, 然后在服务器输入命令git clone HTTPS地址进行克隆仓库(克隆远程仓库不能在本地仓库的任意一个文件夹下)
4.查看远程仓库默认名字git remote后者查看更详细信息git remote -v
可以看到我们当前有两个权限 fetch拉取权限| push推送权限
5.使用SSH克隆远程仓库
在xshell查看 .ssh/是否有 id_rsa 和 id_rsa.pub这两个文件
没有那么在主页面输入命令创建服务器公钥私钥ssh-keygen -t rsa -C "gitee邮箱"
然后到gitee设置里面添加公钥==id_rsa.pub中的密钥
在用户主目录克隆仓库git clone SSH地址
6.本地仓库修改推送到远程仓库git push origin 本地分支名称:远程分支名称当本地分支与要推送的远程分支名字一致时, 可以只写一个名字, 但要注意推送之前要先commit提交
7.拉取远程仓库
当远程仓库的修改内容比本地仓库新时, 第一次拉取使用git fetch origin master与git reset --hard origin/master, 之后拉取使用git pull origin 远程分支:本地分支
1.忽略文件
修改 .gitignore文件vim .ignore, *.so表示所有后缀为.so文件都被忽略, !b.so表示, 忽略单个b.so文件
2.有一些文件被忽略时, 但你需要提交该文件, 也可以使用强制添加git add -f 文件名
3.当我们的.gitignore查看文件过多时, 我们不能分清什么时候忽略的该文件, 可以使用命令git check-ignore -v 文件名
4.配置命令别名
一些长命令我们写起来很麻烦, 所以我们可以设置别名, 例如打印漂亮缩写的commit提交日志是命令git log --pretty=oneline --abbrev-commit我们可以设置精简的别名git config --global alias.lpa 'log --pretty=oneline --abbrev-commit'表示设置全局别名, alias.别名 ‘要起别名的命令’
四. 标签
1.创建标签, 默认是给最近一次提交打上标签
git tag 自定义标签名
2.给历史提交打上标签, 并加上详细表述
先查看历史标签git log --pretty=oneline --abbrev-commitgit tag -a v0.9 -m "自定义描述" 历史commit-ID
3.查看标签gti tag
4.查看标签详细信息git show 标签名称
5.删除标签git tag -d 标签名称
6.推送标签git push origin 标签名后者一次推送所有标签git push origin --tags
7.删除标签
在本地仓库删除后, 推送到远程仓库,git push origin :标签
五. 同一分支多人合作(远程仓库创建分支)
1.查看远程仓库分支
git branch -r
2.查看所有分支git branch -a
3.本地创建分支并与远程仓库分支建立联系git checkout -b 本地创建的分支origin/远程分支
4.查看本地与远程分支连接情况git branch -vv
5.与远程仓库建立连接git branch --set-upstream-to=origin/远程分支 本地分支
6.本地修改后提交并推送, powershell修改后再提交推送时, 会产生冲突, 这时就需要先拉取文件后解决冲突再次提交推送
7.推送流程
先在本地master和dev分支pull一下, 获取到当前远程仓库最新代码, 然后在本地master合并到dev, 如果有冲突解决合并冲突, 解决完冲突后然后dev合并到master上, 最后master推送给远程仓库的origin/master中
六. 不同分支多人合作(本地仓库创建分支)
1.在master上先pull拉取最新的数据后, 再在本地master创建分支, 创建文件进行开发后, 采用命令
git push origin 本地分支名称, 远程仓库会自动创建分支
2.开发者1 与 开发者2 开发新功能时, 分别在不同分支上进行开发, 提交的时候不会产生冲突
3.如果开发者2生病, 开发者1代替开发者2继续开发:
先拉取分支git pull
4.开发者1开发一半后提交
5.开发者2病好了, 然后继续开发, 需要先绑定远程仓库分支2, 然后拉取最新信息, 最后开发完成后提交推送该分支
6.合并仓库先拉取master分支内容, 然后切换到feature-1分支, 将master合并到该分支上, 有冲突解决冲突后, push该feature-1分支, 最后在远程仓库通过PR进行合并
7.删除已经在远程仓库删除的分支打印的日志git remote prune origin
七. Git Flow分支模型
1.master分支只读确唯一的分支, 一般由release分支合并, 在master上的推送都需要打上标签tag做记录, 作为主分支不允许直接在master分支上修改代码, 不可被删除
2.develop分支, 为开发分支, 基于master主分支创建的唯一且只读分支, 始终保持最新和bug修复状态, 由feature分支合并
3.feature分支 作为新功能开发分支, 以develop分支为基准创建的, 命名格式为feature/user_createtime_feature, 开发完成后需要合并到develop分支, 上线发布后需要删除
4.release分支, 预发布分支, 本次上线的所有feature合并到develop创建, 可部署到预发布集群, 命名格式:release/version_publishtime, 测试出bug的话, 回归验证develop分支是都也有该问题, 上线后可删除
5.hotfix分支, 补丁分支后bug修复分支, 基于master分支创建, 修复完成后合并到master和develop分支上, 并推送远程, 一旦上线后就删除
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐































所有评论(0)