Skip to main content

Git 学习

·1 min

原理 #

  • 本地仓库由git维护三棵"树"
  • 第一个是工作目录,它拥有实际的文件
  • 第二个是暂存区,它类似于缓存的存在,临时保存你的改动
  • 第三个是HEAD,它指向最后一次提交的结果
    在这里插入图片描述

概念 #

分支 #

  • 分支是用来将特性开发隔离开。在你创建仓库的时候,mastermain是默认的分支。我们一般在其他分支上进行开发,完成后再将它们合并到主分支上
  • 你在本地创建的分支,如果不推送到远端仓库,这个分支就只能在本地可见

命令 #

  • 命令只介绍在开发过程中,常用的命令

创建新的git仓库 #

git init

添加到暂存区 #

git add <filename>
git add .
  • git add <filename> ,添加具体文件到暂存区
  • git add .,将所有变动添加到暂存区
  • 这是git基本工作流程的第一步,将文件添加到暂存区

提交 #

git commit -m "提交信息"
  • 将改动提交到本地仓库的HEAD
  • 这是git基本工作流程的第二步,将文件提交到本地仓库的HEAD

推送 #

git push origin master
  • 将改动提交到远端仓库,可以将master换成任何你想要推送的分支
  • 这是git基本工作流程的第三步,推送到远端仓库
git remote add origin <server>
  • 将你的仓库连接到远端仓库,若你本地仓库未和远端仓库建立关系

分支 #

git checkout -b feature_xdp
  • 创建一个叫做feature_xdp的分支
git checkout master
  • 切换到主分支

更新与合并 #

git pull <远程主机名> <远程分支名>:<本地分支名>
  • 标准格式
  • 以当前工作目录进行获取(fetch)并合并(merge)远端的改动
git pull
git pull origin
  • 将远端仓库的originmaster分支拉取到本地,并与本地的当前分支进行合并
git pull origin master:feature_xdp
  • 将远端仓库的originmaster分支拉取过来,与本地的feature_xdp分支合并
git pull origin master
  • 如果远端仓库的分支是与当前分支合并,则冒号后面的部分可以省略
git merge <branch>
  • 合并其他分支到当前分支

冲突 #

  • git pull <远程主机名> <远程分支名>:<本地分支名>git merge <branch>,在两种情况下,git 会尝试自动合并改动,但是并不是每一次都会成功,可能会出现冲突。这个时候,需要你手动修改来合并这些冲突
git add <filename>
  • 合并完成后,需要将它们添加到暂存区
git diff <source_branch> <target_branch>
  • 可以使用该命令预览差异,在合并改动之前

log #

git log
  • 查看本地仓库历史记录
git log --author=XdpCs
  • 只看XdpCs的提交记录
git log --pretty=oneline
  • 每一条提交记录只占一行输出
git log --graph --oneline --decorate --all
  • 通过树形结构来展示所有的分支,每个分支都标明它的名字和标签
git log --name-status
  • 查看哪些文件发生改变

标签 #

  • 通过创建标签,发布软件是一个不错的方法
git tag 1.0.0 1fd11181114
  • 创建一个叫1.0.0的标签,1fd11181114是你想要标记的提交ID
  • 提交ID可以通过上面的git log获取
  • 只要提交ID具有指向唯一性,提交ID可以少几位

替换本地改动 #

git checkout -- <filename>
  • 使用HEAD中最新的内容替换掉你工作目录中的文件
  • 已添加到暂存区的改动和新文件不会受到影响
git fetch origin
git reset --hard origin/master
  • 丢弃本地的所有改动和提交,从远端服务器获取最新的版本历史,并将本地分支指向它

克隆仓库 #

git clone ../xdpcs.github.io
  • 创建一个本地仓库的克隆版本
git clone git@github.com:XdpCs/Solidity-Learning.git
  • 克隆一个远端服务器上的仓库