[学习笔记]Git与Github

[学习笔记]Git与Github

学会Git玩转Github

1-使用Github(目的,基本概念,注册账号)

  • 目的:借助github托管项目代码

  • 基本概念

    • 仓库(Repository)

      • 仓库用来存放项目,每个项目对应一个仓库
    • 收藏(Star)

      • 收藏后在个人中心可查看到
    • 复制克隆项目(Fork)

      • fork的会有标识表示fork自哪个仓库
    • 发起请求(Pull request)

      • 李四修改后pullrequest 等待张三同意合并
    • 关注(Watch)

      • 订阅该项目的更新通知提醒
    • 事务卡片(Issue)

      • 发现需要修改的地方,想通知仓库主并讨论,问题ok了可以close掉
  • 基本概念2

    • Github主页
    • 仓库主页
    • 个人主页
  • 注册账号

    • 可以创建公开仓库或私有仓库(现在免费了).私有仓库只能自己或者指定的朋友才有权限操作
    • 因为github服务器在国外,可能需要FQ(shadowsock)

2-使用Github(创建仓库,仓库主页说明)

  • 仓库/项目名称(Repository name)应该英文

3-使用Github(仓库管理)

  • 新建文件需要加后缀 加入仓库需要Commint并注释
  • 点击"创建php1文件"可以看提交前后对比类似svndiff,点击左侧文件名直接查看文件(继而进行编辑,删除的操作)
  • 每次修改文件也需要 Commit Change
  • 此处可点击commits查看log/history
  • 上传(upload file)和查找(Go to file)
  • 下载/检出

4-使用Github(Github Issues)

  • 作用:发现代码BUG,但是目前没有成型代码,需要讨论使用;或者使用开源项目出现问题时使用
  • 双方都可以close issue
  • 可以查看未关闭的/已关闭的issue

5-使用Github(基本概念实战)

  • 用户名可以改

  • 对项目提issue就有贡献contribute

  • fork 到自己的仓库修改后可以pull request

  • 仓库主 查看确认是否合并

  • 开源项目贡献

    • 1)新建issue 提交使用问题或者建议/想法

    • 2)pull request

      • 1,fork 项目
      • 2,修改自己仓库的项目代码
      • 3,新建 pull request
      • 4,等待作者操作审核

6-安装Git

  • 目的:通过git管理github托管项目代码

  • 下载安装

7-Git基本工作流程

  • 概念

    • 工作区(Working Directory)

      • 添加,编辑,修改文件等动作
    • 暂存区

      • 暂存已经修改的文件最后统一提交到git仓库
    • Git Repository(Git仓库)

      • 最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见
  • 向仓库中添加文件流程

8-Git初始化及仓库创建和操作

  • 基本信息设置

    • 1.设置用户名 git config --global user.name "itcast"
    • 2,设置用户名邮箱 git conifg --global user.email 'itcast@itcast.com'
    • 3.用git config --list查看已设置的信息
  • 初始化

    • 1.cd test
    • 2.git init
  • 添加/修改文件

    • 修改后也需要通过git add添加到暂存区
  • 删除文件

    • 1.删除文件 rm test.php
    • 2.从Git中删除文件git rm test.php
    • 3.提交操作git commit -m "提交描述"

9-Git管理远程仓库

  • 之前的操作都是本地仓库

  • 使用远程仓库的目的,作用:备份,实现代码共享集中化管理

  • git clone 仓库地址

    • 仓库地址
  • git push 本地操作完后通过git push将本地仓库同步到远程仓库

  • 解决git push错误

10-Github Pages 搭建网站

  • 个人站点

    • 访问:https://用户名.github.io,也可以自己绑定域名

    • 搭建步骤

      • 1)创建个人站点

        • 新建仓库(注:仓库名必须是[用户名.github.io])
      • 2)在仓库下新建index.html的文件即可

    • 脚下留心

      • 1.github pages仅支持静态网页
      • 2.仓库里面只能是.html文件
  • 项目站点

    • https://用户名.github.io/仓库名

    • 搭建步骤

      • 1)进入项目主页,点击setttings
      • 2)在setttings页面,[launch automatic page generator]来生成主题页面
    • 网页修改

      • 可以重新[launch automatic page generator]
      • 更细致的修改需要在项目页面 点击branch选中page,能看到html文件

11-其他

  • 利用github Issue写博客

    • GitHub Issues 天然支持程序员最爱的 Markdown 格式,用来记录,很舒服
    • GitHub 可以 Watch,还可以针对单条 Issue 进行 Watch / Unwatch. 这功能在很多成熟的博客系统里都还没有呢。
    • 优点:免费,markdown,代码高亮,标签系统,评论系统
    • 缺点:没法自定义样式、域名、没法加社交分享按钮,没法嵌入自定义 html 内容。
  • git修改已经提交到远程仓库的log(修改最近的log)

    • git commit --amend
    • 弹出vim修改log,i输入后wq
    • git push --force

Git基本原理介绍

8. Branch和HEAD

  • 分支的定义
  • HEAD的定义
  • 使用分支切换命令,HEAD指向dev
  • HEAD的内容(git log退出按q)
  • 也可git log --oneline

9. 分支操作的背后

  • 命令

    • git branch

      • 列出当前拥有的分支
    • git branch <branch_name>

      • 新建分支
    • git branch -D <branch_name>

      • 删除分支,但不能删除当前活跃分支
    • git checkout <branch_name>

      • 分支切换
  • 分支示例

    • git branch dev,git checkout dev之后可进行修改提交
    • git branch -d(--delete) 与-D的区别:-d会提示合并merge,-D无提示,建议-d

10.checkout特定的commit

  • 使用场景1,版本回退

    • 普通回退,git log获取SHA-1值
    • git checkout
    • git checkout -b <new_branch_name>
  • 使用场景2,找到误删的分支

    • git branch -D 删除只是删除指向分支的指针,分支本身还在
    • 找到误删的分支,通过git reflog获得所有操作记录以及SHA-1值
    • git checkout
    • git checkout -b <new_branch_name>(brand_name可以为之前删除的名字)

11.聊聊git diff命令

  • diff功能还是IDE,GUI好看

12.Git Merge -Fast Forward

  • 在master上创建bugfix分支

    • 使用git merge bugfix会使master指向C3
  • 命令

    • 在master上git checkout -b bugfix
    • 修改,add,commit
    • git checkout master回到master
    • git merge bugfix
  • 扩展

    • 做了以上动作后,发现错了需要归滚使用git reset ORIG_HEAD(会把bugfix指针删除)

20/21.Git Merge -3 Way merge

  • master分支多走了一个commit

    • git merge bugfix后C5有两个parent
  • 借助sourcetree软件可以看到二维的关系图

  • 对于不冲突的commit(没有去修改同一个文件),git merge bugfix后git会自己处理

  • 带冲突的merge

    • git merge bugfix会提示错误并把test.txt加上冲突的内容
    • 自行将test.txt修改,可借助vscode按操作按钮
    • git add test.txt提交修改
    • git commit后进入vim,确认后:wq

22.什么是git rebase

  • git rebase只推荐在个人使用的dev分支使用

  • git rebase后再merge可以使comit历史从二维转为线性

    • 在dev分支 git rebase master,dev的commit SHA1值变了(因为commit的时间被修改了)

23.标签Tag到底是怎么回事

  • tag操作

    • 创建tag

      • git tag

        • 创建light weight tag
      • git tag -a -m

        • 创建annoted tag不止指针而且有对象,包括email,date等信息
      • git tag -a

        • 为之前的commit创建tag
    • 列出tag

      • git tag
    • 删除tag

      • git tag -d 只删除了tag指针

24/25.本地分支和远程分支

  • git branch查看的是本地的分支

  • git branch -r 才能查看远程分支(需要先git fetch)

  • git fetch将远程仓库同步到本地的remotes/origin/master镜像

  • git remote show origin会连接网络显示本地与远程仓库关联(是否tracked)

  • 如果远程删掉了分支,通过git fetch不会更新本地镜像。用git fetch --prune才可以也删除掉本地的镜像

  • git fetch完再git merge origin/master才能把远程分支同步到本地分支,这两个命令组成git pull

26.git fetch&git pull

  • 当本地与远程都提交了commit

    • 执行完上述操作还需要git push origin master同步到远程

27.什么是FETCH_HEAD

  • FETCH_HEAD第一行是执行上次git fetch的branch信息

Git Best Practice

1.拥抱命令行,远离IDE图形界面

2.写好每一条commit message

3.用好.gitignore文件

4.基于分支或者fork的开发模式

5.Release 版本分支和Tag

  • 比较常用的一种tag版本规划

6.如何修改最后一次commit

  • 应用情景

    • 提交的修改有问题
    • commit message写错了
  • 步骤

    • 修改之后git add hello.py
    • git commit --amend
    • 弹出vim修改log,i输入后wq
    • git push origin main --force
  • 注:在多人共用的分支中慎用git commit -amend

资源链接

https://www.bilibili.com/video/BV1Xx411m7kn?from=search&seid=4032516679558641541

https://space.bilibili.com/364122352/video?tid=0&page=1&keyword=git&order=pubdate

https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1

posted @ 2021-06-01 23:02  wudayemen  阅读(158)  评论(0编辑  收藏  举报