Git 学习打卡Day1-基础、高级、远程仓库初步

基础篇

  • git commit :将当前版本与仓库中上一版本进行对比,把所有的差异打包作为一个提交记录。
  • git branch ** :分支非常轻量,只是简单地指向某个提交记录。
  • git checkout **:切换到新的分支上。
  • git checkout -b ** :创建一个分支同时切换到该分支。
  • git merge ** :把**分支的修改合并到当前分支,并生成一个新的合并提交。这个合并提交会同时指向两个分支的最新提交,保留了分支的 "分叉" 历史。
  • git rebase ** :将当前分支的所有提交 "移动" 到**分支的最新提交之后,相当于以**分支的最新状态为 "新基准",重新应用当前分支的修改。不会生成新的合并提交

高级篇

1.分离的 HEAD
  • HEAD :对当前分支的符号引用,总是指向当前分支最近一次提交记录。
  • 分离的 HEAD :让其指向某个具体的提交记录而不是分支名。

2.相对引用
  • 通过哈希值指定提交记录很不方便,所以 Git 引入了相对引用。
    • 使用 ^ 向上移动 1 个提交记录。如 git checkout main^^。tips:可以一直使用 HEAD^ 向上移动。
    • 使用 ~数字 向上移动多个提交记录,如 ~3。
    • -f 选项让分支指向另一个提交。
  • 强制修改分支位置git branch -f main HEAD~3 会将 main 分支强制指向 HEAD 的第 3 级 parent 提交。
3.撤销变更
  • 本地------ git reset:通过把分支记录回退几个提交记录来实现撤销改动。
  • 远程------ git revert

远程篇

  • git clone :在本地创建一个远程仓库的拷贝(比如从 github.com)。
1.远程分支
  • 命名规范:<remote name>/<branch name>。
  • 反映了远程仓库在你最后一次和它通信时的状态。
  • 远程分支有一个特别的属性,在你切换到远程分支时,自动进入分离 HEAD 状态。Git 这么做是出于不能直接在这些分支上进行操作的原因, 你必须在别的地方完成你的工作, (更新了远程分支之后)再用远程分享你的工作成果。
2. git fetch
  • Git 远程仓库的操作可以归纳为两点:向远程仓库传输数据以及从远程仓库获取数据。
  • git fetch 完成了仅有的但是很重要的两步:
    • 从远程仓库下载本地仓库中缺失的提交记录。
    • 更新远程分支指针(如 o/main)。
  • git fetch 实际上将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态。
  • git fetch 通常通过互联网(使用 http:// 或 git:// 协议) 与远程仓库通信。

git fetch 并不会改变你本地仓库的状态。它不会更新你的 main 分支,也不会修改你磁盘上的文件。它可能已经将进行这一操作所需的所有数据都下载了下来,但是并没有修改你本地的文件。你可以将 git fetch 的理解为单纯的下载操作。

3. git pull
  • Git 提供了一个专门的命令来完成先抓取更新再合并到本地分支 这两个操作------ git pull。 它就是 git fetchgit merge 的缩写!
4. git push
  • git push 负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录。一旦 git push 完成, 你的朋友们就可以从这个远程仓库下载你分享的成果了!

注意: git push 不带任何参数时的行为与 Git 的一个名为 push.default 的配置有关。它的默认值取决于你正使用的 Git 的版本,但是在教程中我们使用的是 upstream。 这没什么太大的影响,但是在你的项目中进行推送之前,最好检查一下这个配置。


相关推荐
zzqssliu4 小时前
煤炉自动代拍系统的队列设计与超时控制机制
git·github
一支绝命钩4 小时前
FPGA工程Git常用操作手册
git
fthux6 小时前
“装闭”,让装修套路“装”不下去
人工智能·ai·开源·github·open source
a1117767 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao8 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
不搞学术柒柒8 小时前
Git新功能完整开发提交流程
git
用户84913717547169 小时前
想做护眼工具却脑子一片空白?我用 OpenSpec 把模糊想法聊成了 v0.1
github·vibecoding
你想知道什么?9 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御9 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
wangruofeng10 小时前
git-filter-repo 把 .git 从 112MB 砍到 1.4MB,但漏推 tag 让 clone 又胖回来
github·devops