首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
分布式数据库
›
git根本利用
返回列表
发新帖
git根本利用
[复制链接]
发表于 2025-9-29 10:32:30
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
git
默认环境下,克隆的长途堆栈会被定名为 origin
git remote remove origin
# 移除默认的远程仓库 origin
git remote add origin https://github.com/CS144/minnow.git
# 添加一个新的远程仓库 origin,指向自己的 GitHub 仓库
git branch -M main
#将当前分支重命名为 main(如果默认分支是 master,这一步会将其改为 main)
git push -u origin main:
# 将本地的 main 分支推送到远程仓库 origin,并设置 origin/main 为上游分支(-u 参数的作用)
# 之后可以直接使用 git push 和 git pull,而不需要指定远程分支
git remote add upstream https://github.com/CS144/minnow.git
# 添加一个新的远程仓库 upstream,指向原始的上游仓库
# 保留与上游仓库的连接,以便后续可以拉取上游的更新
git remote -v
# 查看远程仓库列表
git fetch upstream(前面设置的https://github.com/CS144/minnow.git,将仓库改为upstream名,origin是git clone后默认的名;) branch_name
# 拉取upstream的分支名
git branch -d <branch_name>
# 删除已经合并的本地分支
git branch -D <branch_name>
# 强制删除本地分支
git merge upstream/check1-startercode
# 将上面拉取的upstream/check1-startercode合并到本地分支main中
复制
代码
git 提交
A <- B<- C(main)
复制
代码
A是第一次提交;
B是第二次提交;
C是第三次提交;
当前C是最新一次的提交,以是main分支当前指向了C
git 创建新分支
假设如今 基于main分支创建了一个 新分支 feature:
git checkout -b feature
复制
代码
feature 分支也指向提交 C,而且继承了 C 的全部父提交(B 和 A)
在 feature 分支上开始新的工作,比如修改文件并提交:
A <- B <- C (main)
\
D (feature)
复制代码
通过创建 feature 分支,可以在不影响 main 分支的环境下举行新的开发
完成工作后,可以将 feature 分支归并回 main 分支,大概继承在 feature 分支上开发
git 归并分支merge
git merge 下令归并两个分支时,Git 会实验将两个分支的汗青记载整合到一起
假设有以下提交汗青:
A <- B <- C (main)
\
D <- E (feature)
复制代码
main 分支的最新提交是 C
feature 分支的最新提交是 E
它们的共同先人是提交 A
实验 git merge feature(在 main 分支上归并 feature 分支)时,Git 会创建一个新的归并提交 F:
A <- B <- C <- F (main)
\ /
D <- E <- (feature)
复制代码
归并提交 F 有两个 parent 节点:
第一个 parent 是 C(main 分支的最新提交)
第二个 parent 是 E(feature 分支的最新提交)
通过 F,Git 可以同时访问 main 和 feature 分支的全部汗青记载
git rebase
Git 中另一种归并分支的方法;通过“重新定位”提交记载来创造更线性的提交汗青
找到当前分支和目的分支(通常是 main 或 master)的共同先人
将当前分支上新增的提交提取出来,生存为临时文件
将当前分支指向目的分支的最新提交
将提取的提交
逐个重新应用
到目的分支的最新提交之后
A <- B <- C (main)
\
D <- E (feature)
复制代码
Rebase之后:
A <- B <- C <- D' <- E' (feature)
(main)
复制代码
HEAD
利用git checkout <commit-has>可以让HEAD直接指向某个提交记载,从而分离HEAD
^利用符
^ 利用符
用于访问某个提交记载的
父节点
假设:
C0 <- C1 <- C2 <- C3 (main)
复制代码
main 分支的最新提交是 C3
git checkout main
^
复制代码
此时 HEAD会指向C2
git checkout main
^
^
复制代码
此时,HEAD 会指向 C1
切换分支的父节点
git branch -f main C6
逼迫将 main 分支指向提交记载 C6
git branch -f 用于逼迫移动分支的指向
将 main 分支移动到提交记载 C6,无论 main 分支之前指向那里
git checkout HEAD~1
将 HEAD 移动到当条件交记载的第一个父节点
git branch -f bugFix HEAD~1
逼迫将 bugFix 分支指向当前 HEAD 的父节点
reset 和 revert 撤回
假设原始提交链条:
C0 <- C1 <- C2 <- C3 (HEAD -> main)
复制代码
实验 git reset C1后:
C0 <- C1 (HEAD -> main)
复制代码
C2 和 C3 被抛弃(但内容大概生存在工作目次,取决于 reset 的模式)
--soft
:仅移动分支指针,生存工作目次和暂存区的修改
--mixed(默认)
:移动分支指针,并重置暂存区,但生存工作目次的修改
--hard
:彻底抛弃全部修改,分支指针、暂存区和工作目次全部回退
git revert:取消某个提交
假设原始提交链:
C0 <- C1 <- C2 <- C3 (HEAD -> main)
复制代码
实验 git revert C3 后:
C0 <- C1 <- C2 <- C3 <- C4 (HEAD -> main)
复制代码
C4 是一个新提交,内容是取消 C3 的更改
此时:
C4 的内容与 C2 雷同
git cherry-pick
复制提交
:将某个提交的更改应用到当前分支,天生一个新的提交
选择性归并
:只归并某个分支上的特定提交,而不是整个分支
将修复 bug 的提交从开发分支应用到生产分支
假设以下提交汗青:
C0 <- C1 <- C2 (main)
\
C3 <- C4 <- C5 (feature)
复制代码
如今:将 feature 分支上的提交 C4 应用到 main 分支
git checkout main
复制代码
git cherry-pick C4
复制代码
结果:
C0 <- C1 <- C2 <- C4' (main)
\
C3 <- C4 <- C5 (feature)
复制代码
C4' 是 C4 的副本,
内容与 C4 雷同,但哈希值差别
UI交互式变基 Interactive Rebase
Git 中一种高级利用,通过 git rebase -i 下令触发。它允许你以更风雅的方式修改提交汗青,比方
重写、归并、拆分或删除提交
git rebase -i <目标提交>
复制代码
git pull
git pull 就是 git fetch 和 git merge 的缩写
git pull --rebase; git push
如果长途堆栈被别人提交了一次,当地的o/main没有更新,就无法push到长途堆栈;
此时:
拉取长途堆栈的新更新;
然后将当地的一次提交,归并后再push
回复
使用道具
举报
返回列表
浏览过的版块
Oracle
数据仓库与分析
Java
云原生
程序人生
鸿蒙
用多少眼泪才能让你相信
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表