当前位置: 首页 > article >正文

git操作总结

git基本知识

工作区域

  • 远程仓库: 就是我们托管在github或者其他代码托管平台上的仓库。
  • 本地仓库: 就是在我们本地通过git init命令初始化的新建的仓库。
  • 工作区: 就是我们写代码、编辑文件的地方。
  • 暂存区: 当工作区的内容写好了之后,就会通过add命令,将工作区的内容放到暂存区,等待commit命令提交到本地仓库中。

文件状态

  • 未跟踪的(untracked): 表示在工作区新建了某个文件,还没有add。
  • 已修改(modofied): 表示在工作区中修改了某个文件,还没有 add。
  • 已暂存(staged): 表示把已修改的文件已add到暂存区域。
  • 已提交(commit): 表示文件已经commit到本地仓库保存起来了。

 

git常用操作

1.git clone [远程仓库的HTTP/SSH的URL]

用于将远程仓库克隆到本地。克隆后本地就有一个本地仓库。注意:远程仓库不管哪个分支都是一个url,所以你想要克隆其它分支时就要指定分支,例如,如果你要克隆develop分支,可以使用以下命令:

git clone -b develop <repository-url>

或者

git clone --branch develop <repository-url>

2. git init 

用于初始化一个本地仓库

本地已经有个本地仓库,但是对应的远程仓库还未创建,怎么将本地代码推到远程仓库? 

1.创建一个远程仓库

2.检查本地仓库是否与远程仓库关联:

git remote -v

 

输出空说明没有任何关联

3.将本地仓库与远程仓库关联:

git remote add origin <远程仓库地址>

 origin:远程仓库的默认名称

4.将本地文件push到远程仓库:

git push -u origin main

-u:设置默认的上游分支(upstream),便于后续操作。这会让main分支与远程的main分支关联起来,之后可以直接用 git push 或 git pull

main:远程仓库分支名称

3.日常操作

①.git add

②.git commit -m

③. git push

④. git pull

⑤.git fetch

git fetch和git pull的区别?

git fetch和git pull的区别?

git fetch命令用于从远程仓库获取最新的代码提交和分支信息,但它不会将获取到的内容应用到你的工作目录或当前分支,也不会改变你本地仓库的历史记录。相当于是将远程仓库的最新信息下载到你的本地仓库,你可以通过git merge或git rebase将这些更新合并到你的当前分支。

 

 git pull=git fetch+ git merge

⑥.git merge

⑦.git rebase

git merge/rebase到底是哪合并到哪了?

一句话,就是你站在哪个分支上就合并到了哪个分支上,例如:git checkout feature , git merge main 就是将main主分支的新内容合并到功能分支上

git merge和 git rebase的区别是什么?

当我们从主干(Main)创建了一个新的分支(Feature)开始开发代码时,然后另外有人把自己的代码提交到主干(Main)之后,就会产生分叉的提交记录。

这时候我们想把main分支上的新内容合并到我们的分支上就有两种选择:

1.git merge

git checkout feature //站在feature分支
git merge main //将main合并到feature

提交纪录上就会有下面效果:

 

相当于在feature分支中创建一个新的“merge commit'”,它将两个分支的更改合并到一个新的提交中。

2.git rebase

git checkout feature
git rebase main

rebase意思变基,其实就是重新设立新起点的意思,我们在feature上执行的rebase,就重新设立了feature的起点,就是将main上的commit记录在feature上回放了一遍 

这时候如果我们想将feature合并到主干上,就可以执行

git checkout main
git merge feature 

merge完后,整个合并线条是直的,就会使提交记录变得清爽。可以参考rebase这个大佬对rebase的介绍,很详细。

分支操作 

git branch -v

查看都是有哪些分支,当前处于的分支会被星星标记 

git checkout -b <分支名称>

切换到新分支,并创建该分支 


http://www.kler.cn/a/402132.html

相关文章:

  • Oracle RAC仲裁交换机的小科普
  • AutoUpdater.NET 实现 dotNET应用自动更新
  • 微众银行申请专利:不过分丢失泛用能力,提高语音大模型对困难样本学习效率
  • 深度学习之目标检测的技巧汇总
  • 图像处理学习笔记-20241118
  • 每日一练:【动态规划算法】斐波那契数列模型之第 N 个泰波那契数(easy)
  • 在Unity中实现电梯升降功能的完整指南
  • 关于selenium元素找不到的问题(Unable to locate element: {“method“:“xpath“,“selector“:“)
  • 使用GDB或Delve对已经运行起来的Go程序进行远程调试
  • 11.13机器学习_KNN和模型选择调优
  • 基于docker搭建mysql主从架构
  • 网络安全协议
  • git在创建分支时如何将默认分支名字设为master
  • Python 使用Django进行单元测试unittest
  • 活着就好20241120
  • I.MX6U 裸机开发12.主频修改和PLL配置
  • 用PHP实现一个简单的http服务器
  • 学习记录:js算法(九十八):课程表 II
  • 【Python数据可视化分析实战】数据爬取—京东手机品牌信息数据爬取和数据分析与可视化
  • 等保二级需要哪些安全设备?
  • openfoam中通过precice耦合的流固耦合案例如何单独运行流体这样可以防止报错float exception
  • 如何利用virtualenv和python命令创建Python虚拟环境
  • AI赋能电商:开启智慧零售新纪元
  • 高阶数据结构——图
  • Go语言里简短声明语句词法域问题
  • 【Electron】Electron Forge如何支持Element plus?