通俗易懂的 Git 入门

2,127 阅读5分钟

本文已参与掘金创作者训练营第三期「话题写作」赛道,详情查看:掘力计划|创作者训练营第三期正在进行,「写」出个人影响力

Git 简介

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

Git 工作流示例

image.png Workspace:就是平时进行开发改动的地方,是当前看到最新的内容,在开发的过程也就是对工作区的操作

Index:当执行 git add 的命令后,工作区的文件就会被移入暂存区,暂存区标记了当前工作区中那些内容是被 Git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add 先提交到暂存区。

Repository:位于自己的电脑上,通过 git commit 提交暂存区的内容,会进入本地仓库。

Remote:用来托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码后通过 git push 命令同步代码到远程仓库。

Git 的基本操作

 配置 Git 、初始化仓库

  1. 配置 Git 账户信息
git config --global user.name "userName"
git config --global user.email "userEmail"
  1. 创建一个新目录(版本库)并初始化
mkdir demo
cd demo
git init

clone远程仓库

// 远程仓库克隆到本地、默认会创建和仓库名相同的文件夹名称
git clone 代码仓库地址

创建分支

// 1.查看仓库状态
git status

// 2.创建dev分支并选择此分支
git checkout -b dev

 新建文件、提交、回滚、日志查看

// 0. 在demo文件夹 `dev`分支上创建 `readme.md` 文件
// 1. 查看仓库状态: 此时应有提示有文件需要被加入到文件缓存区
git status
 
// 2. 把有改动的文件加入到文件缓存区
git add readme.md
 
// 3. 查看仓库状态:此时应有提示有文件需要 commit
git status
 
// 4. 把文件缓存区的文件加入到版本库中(即把改动点更新到对应分支)
git commmit -m "新增 readme.md 文件"
 
// 6. 对文件修改并重复上面的操作
// 因为进行了 commit 提交了文件修改,当前空文件的分支被激活
git branch
git status
git add readme.md
git commit -m "readme.md被修改了"
git status
 
// 7. 代码回滚:如果上步commit时有失误的操作,想回到上次commit的状态可以使用文件回滚操作
git reset --hard HEAD~1
 
// 8. 代码回滚后,如果文件缓存区的修改需要移除
git checkout readme.md
git status
 
// 9. 当一次性修改多个文件时,可通过以下命令批量操作
git add .
git checkout .
 
// 10. 在提交了若干提交和更新之后,可以使用 git log 命令查看操作历史
git log
 
// 11. git reflog 可以查看所有分支的所有操作记录
git reflog
 
// 12. 在webstorm中查看 git log
File -> git -> show History -> log

本地git仓库关联远程仓库

// 1. 本地仓库与远程仓库关联
git remote add origin http://jcode.cbpmgt.com/git/weus-git-demo.git
 
// 3. 拉取远程分支代码
git pull orign dev
 
// 4. 修改代码并更新到本地
git add .
git commit -m "修改代码描述"
 
// 5. 上传本地代码到远程分支
git push orign dev
 
// 6. 此后可以直接使用 git pull 、git push 操作远程分支代码
git pull
// 改动代码
git add .
git commit -m "改动点描述"
git push
 
// 7. push 本地代码到远程 master 分支时需要权限
// 8. 关联远程仓库后、最好把本地文件夹名称改为和仓库名一致

远程仓库中有部分代码,不允许直接把本地的代码覆盖上去时

// 1. 更新所有的远程分支到本地
git fetch  
 
// 2. 更新内容与本地合并
git merge
 
// 3. merge 报错:fatal: refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
 
// 4. 再次合并
git merge
 
// 5. merge 报错:Please, commit your changes before you merge.
git add .
git commit -m "提交信息"
git merge
 
// 6. 拉取远程分支代码
// 此时本地与远程分支代码相同不会报错
git pull
 
// 7. 更新本地代码到远程分支
git push orign 远程分支名称

解决代码冲突

情景:建立两个目录来模拟代码冲突,真实情况是多人之间协作开发时冲突较多。

// 1. clone 远程分支代码到本地另一个目录
git clone http://jcode.cbpmgt.com/git/weus-git-demo.git
 
// 2. 修改 readme.md 文件内容、并push到远程分支
git status
git add .
git commit -m "代码内容修改描述"
git push
 
// 3. 找到最开始的该工程文件夹,修改和第2步中文本的同一行内容
git status
git add .
git commit -m "代码内容修改描述"
 
// 4. 拉取远程分支代码
git pull
 
// 5. 冲突报错,解决冲突
// 根据冲突提示内容,手动修改代码
git add .
git commit -m "修改代码描述"
 
// 6. 解决冲突后再次拉去取代码
git pull
 
// 7. 将解决冲突后最新的代码push
git push

点赞支持、手留余香、与有荣焉,动动你发财的小手哟,感谢各位大佬能留下您的足迹。

往期精彩推荐

前端性能优化实战

聊聊让人头疼的正则表达式

获取文件blob流地址实现下载功能

Git 相关推荐

我在工作中是如何使用 git 的

git 实现自动推送

面试相关推荐

前端万字面经——基础篇

前端万字面积——进阶篇

更多精彩详见:个人主页