Git学习笔记

Git学习笔记

from 稀土掘金扔物线老师的Git原理详解及实用指南课程
git指令练习网站:gitbranching

1.中央版本控制系统与分布式版本控制系统

中央版本控制系统

每个人开发独立的功能,开发完成后上传中央仓库,其他人可下载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jVpCPKrj-1664762522313)(https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2017/11/30/1600a9978ea4bec3~tplv-t2oaga2asx-zoom-in-crop-mark:3024:0:0:0.image)]

分布式版本控制系统

每个成员都有本地仓库,内含所有历史版本

每个人开发独立的功能,每完成一部分改动都可以上传本地仓库,完成整体功能后上传中央仓库,其他人可查看中央仓库的改动,并下载到本地与自己本地仓库合并

在这里插入图片描述

2.快速尝试

git status 查看当前状态
git add [file] 将新文件存入staging area(暂存区)/修改文件也是相同操作
git commit 提交暂存区里的新文件
git log 查看提交历史
git push 将本地提交发布到中央仓库

Origin/main : origin为远程中央仓库名 main(之前为master)为默认分支名

遇到的坑:

1.在git push的时候会提示输入用户名密码,用户名即为github用户名,而密码是需要在github网站上手动生成的token

3.HEAD、main、branch

1.简单工作模型

为了解决多人协作同时push冲突问题,在git push前需要先git pull(git fetch +
merge)将远程commit与本地commit合并

2.基于branch工作模型

HEAD

当前commit的引用

每当有新的commit,HEAD就会自动指向新的commit

branch

HEAD指向commit,也指向branch

提交新commit时,HEAD会带着branch向前移动

创建commit过程:

创建commit4前:
在这里插入图片描述

创建commit4后:

在这里插入图片描述

ps:因为并没有提交commit4,所以origin/HEAD和origin/master依然不动
git clone下来的项目默认将HEAD指向master分支

branch命令

git branch [branch_name] 创建分支
git checkout [branch_name] 更换HEAD指向位置
git checkout -b [branch_name] 将上述两个操作合并
git branch -d [branch_name] 删除分支

ps:
1⃣️HEAD指向的branch不能删除
2⃣️删除branch只会删除引用,不会删除下面的commit,但是当git回收机制意识到这些commit是没有归属的branch会自动清除
3⃣️没有合并到master的分支需要使用 -D 删除

引用的本质

SHA-1(指向commit)或者路径(branch 例:ref: refs/heads/feature3)以文本形式存储在.git文件中

4.push的本质

git push会将当前HEAD所指向的分支同步到中央仓库,但命令有所不同

当前HEAD指向master
git push    将master分支同步到中央仓库
git checkout [branch_name]
git push origin [branch_name] 将新分支同步到中央仓库(已有的分支无需加后面两个参数,不过这个通过push.default更改)

ps

中央仓库HEAD一直指向master

5.merge

git merge [branch_name] 将branch合并到main中
HEAD/master指向了合并后的节点,而分支指向未变

解释图
冲突

merge操作的时候,如果各个操作的是不同文件,或者同一文件不同行,merge会自动将所有改动都生效,但如果各个操作改的是同一行,则会报错(conflict),然后只能解决矛盾+手动commit

手动提交

git add [filename] 此处需add冲突文件
git commit
git merge --abort 放弃merge

commit领先HEAD

场景就是自己分支的代码还没写,远程同事上传了新的代码,这时候需要执行git pull(fetch+merge),执行之后,HEAD/master指向就和origin/master指向一样了,保持除了自己分支的

6.Feature Branching

任何功能都添加一个branch,完成后合并到master并删除branch

流程图:feature branching

7.log

git log -p   查看每个commit的具体细节
git log --stat   查看简要统计
git show   查看当前commit
git show [commit的SHA1码]   查看指定commit
git show [commit的SHA1码]   [filename]    查看指定commit下的指定文件
git diff    查看工作区与暂存区不同(提交commit后)
git diff HEAD   查看工作区与提交HEAD后的不同(提交commit前)
git diff --staged   查看暂存区与上一条commit不同

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nostrawberry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值