1. git 本地仓库

  1. 先进行git六行配置,在帮助文档里面查找
  2. 可利用vscode的终端进行
  3. 在终端中先git init 初始化,创建一个本地仓库 .git 目录
  4. git add .添加需要提交的文件
  5. git commit -v 提交文件
  6. 成功将vscode中的文件快照到本地.git仓库下

2. git 远程仓库与本地仓库 联动

2.1 本地仓库上传到云端仓库之 git push

  • 要先在本地设置私钥;云端github设置公钥;两者进行匹配才能 有 后续的 上传git push 和下载 git clone,特殊情况下需要 git pull
  1. 先在github上创建云端仓库new
  2. 匹配自己本地电脑用ssh链接
  3. git remote add origin + ssh链接
  4. git push -u origin master(第一次上传的全写,以后只用 git push)

2.2 云端仓库下载到本地仓库之 git clone

  • 二连操作
  1. git clone +ssh(自己代码)/https(别人代码)
  2. cd 本地仓库的目录(注意:不能新建目录然后在仓库目录中克隆仓库)

2.3git修改远程仓库地址

方法有三种:
1.修改命令
git remote origin set-url [url]

2.先删后加
git remote rm origin
git remote add origin [url]

3.直接修改config文件

分支管理

HEAD 指针在哪,哪里就是当前分支

常用基本流程

  • [x] 创建次分支→ 在次分支进行功能补充和修改→切换到主分支→合并次分支 → 删除次分支

  • 创建分支:git branch fenzhi

  • 切换分支:git checkout fenzhi

等同于:

  • 创建分支并切换到该分支:git checkout -b fenzhi

  • 合并分支:在当前分支上输入 git merge 另一分支,一般是在主分支上合并次分支

  • 删除分支:git branch -d fenzhi
  • 查看已合并的分支:git branch —merged
  • 查看未合并的分支:git branch —no-merged

注意:
创建新分支的时候:提交点若和主分支相同,即内容都一样的,则合并无效,因为没有diff
通过查看已合并的分支和未合并的分支,有助于我们安全地删除分支
删除分支的时候:已合并的分支可以删除,未合并的分支不能删除,若确认要删除则 git branch -D fenzhi
分支是树状的
HEAD -> main 表示当前指针指向main分支,当前分支即为main分支
image.png

记忆点:只有当涉及 “切换”才用到 checkout

分支冲突

产生:某个文件被几个分支同时占用和修改,在切换后合并的时候产生冲突
举例:
创建了a次要分支和c次要分支,它俩同时对index.html文件进行修改并各自提交commit,然后切换回b主分支进行合并,先合并a次要分支显示成功,再合并c次要分支的时候失败,需要手动解决冲突后再合并

git rebase 和 git merge

git rebase 即 replace base 移动子分支的提交点到主分支最新的提交点,即改变子分支的基础点

应用场景:
之前的合并分支:
子分支补充修改功能后,切换回主分支,合并子分支,这种情况下主分支的提交点没有发生变化,则合并子分支的时候,会直接成功后显示fast-forword快进,即将主分支提交点往前移动了

现在的合并分支:
子分支补充修改功能的同时,主分支也在做修改提交,提交点也在向前移动,当子分支切换回主分支进行合并操作时,出现“交织”
image.png
引发问题:
“交织”太多的话视觉混乱
因为是主分支合并次分支,所以如果出现冲突则由主分支进行维护修改

解决方法:
git rebase 即 replace base 移动子分支的提交点到主分支最新的提交点,即改变子分支的基础点
git入门笔记 - 图3

区别:
git rebase 会省略中间创建分支细节的git log,只保留主线的提交历史

避免繁琐的git历史记录追踪产生的无意义“交织”,可以使用rebase

3. git 注意事项

  1. 防止文件被添加提交的方法: vscode中新建.ignore文件;在内输入不需要被添加提交的文件名称即可;且在vscode文件列表中该被添加的文件名称会变成灰色
  2. 以“.”开头的文件名称一般不能被添加提交
  3. git log 和git reflog 的区别 : 体现在 :重置版本git reset —hard **的时候;若输入git log 只能查看当前所在版本之前的提交版本记录,即“过去” ;而 git reflog 能查看当前版本前后提交的版本记录,即“过去和未来”
  4. git branch x 分支创建 前提 :基于 主线版本 提交的快照 ,而不是基于当前代码 ,即分支的产生是基于 提交的产生
  5. 分支与主线有未提交的代码 且 不冲突 的话 ,切换分支主线不影响
  6. 删除文件: rm +文件 ,也要添加提交文件 git add 文件和 git commit -v
  7. 就算本地仓库 .git 目录更换位置 ,云端仓库仍能获取连接