Git学习

Hello Git

Posted by CHY on January 5, 2020

20 分钟教你搞懂 Git!

git 四大工作区域

  • Workspace:你电脑本地看到的文件和目录,在 Git 的版本控制下,构成了工作区。
  • Index/Stage:暂存区,一般存放在 .git 目录下,即.git/index,它又叫待提交更新区,用于临时存放你未提交的改动。比如,你执行 git add,这些改动就添加到这个区域啦。
  • Repository:本地仓库,你执行 git clone 地址,就是把远程仓库克隆到本地仓库。它是一个存放在本地的版本库,其中 HEAD 指向最新放入仓库的版本。当你执行 git commit,文件改动就到本地仓库来了~
  • Remote:远程仓库,就是类似 github,码云等网站所提供的仓库,可以理解为远程数据交换的仓库~ git四大工作区域

git 工作流程

  • 克隆 Git 资源作为工作目录
  • 在克隆的资源上添加或修改文件
  • 如果其他人修改了,可以更新资源
  • 提交前查看修改
  • 提交修改
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交

    或者

  • 从远程仓库拉取文件代码回来;
  • 在工作目录,增删改查文件;
  • 把改动的文件放入暂存区;
  • 将暂存区的文件提交本地仓库;
  • 将本地仓库的文件推送到远程仓库; git基本工作流程

git 工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage, 或 index。一般存放在 “.git 目录下” 下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库。 关系图

git 常规命令

git add filename  # 工作区提交操作,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
git commit -m "add filename"  # 暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
git reset HEAD   # 暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
git rm --cached <file>  # 直接从暂存区删除文件,工作区则不做出改变
git checkout --<file> # 会用暂存区全部或指定的文件替换工作区的文件
git checkout HEAD <file>  # 会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件

Git 创建仓库

git init   # 在任意文件夹初始化仓库
git add *
git commit -m "copy1"
git push # 有时需要运行

git clone <repo> <directory> #拷贝到特定目录
# git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。

git commit -am "" # 一步解决
add的操作让文件存在于stage(暂存区)中,
commit的将stage中的文件剪切到本地仓库
push是将本地仓库中的文件剪切到远程仓库

Git 问题

提交的 markdown 文件不能显示图片 解决办法使用全路径,进入 github 中找到图片位置,复制链接,然后把 blog 修改为 raw 即可。 https://github.com/chenhongyubio/chenhongyubio.github.io/blog/master/img/res0.2_knowen_marker_Endodermis.png 修改为 https://github.com/chenhongyubio/chenhongyubio.github.io/raw/master/img/res0.2_knowen_marker_Endodermis.png

多台电脑同一用户更新代码

# 当在电脑1上工作时,本地代码和远程的代码发生了不一致,为了保持同步,所以需要将远程的代码同步到本地电脑1上
git fetch origin master
# 从远程的origin的master主分支下载最新的版本到origin/master分支上
git log -p master..origin/master
# 然后比较本地的master分支和origin/master分支的差别
git merge origin/master
# 最后进行合并
# 最后再进行提交

git 基础命令使用流程

  1. 克隆远程版本到本地 git clone url
  2. 新建开发分支 git checkout -b edv
  3. 添加文件到暂存区 git add [file1]
  4. 提交暂存区到仓库区 git commit -m [message]
  5. 查看工作区状态 git status
  6. 查看提交历史 git log
  7. 查看暂存区与工作区差异 git diff
  8. 代码更新 git pull 拉取远程仓库所有分支更新并合并到本地分支。 git pull origin master 将远程 master 分支合并到当前本地分支 git pull origin master:master 将远程 master 分支合并到当前本地 master 分支,冒号后面表示本地分支 git fetch –all 拉取所有远端的最新代码 git fetch origin master 拉取远程最新 master 分支代码
# 分支处理
# 新建分支
git checkout -b dev2  # 新建一个分支,并且切换到新的分支dev2
git branch dev2 # 新建一个分支,但是仍停留在原来分支
# 查看分支
git branch    # 查看本地所有的分支
git branch -r  # 查看所有远程的分支
git branch -a  # 查看所有远程分支和本地分支
# 删除分支
git branch -D <branchname>  # 删除本地branchname分支
# 切换分支
git checkout master  # 切换到master分支
# 合并分支
git merge master  # 在当前分支上合并master分支过来
git merge --no-ff origin/dev  # 在当前分支上合并远程分支dev
git merge --abort # 终止本次merge,并回到merge前的状态