git入门级教程

git介绍

  • git是一个分布式版本控制工具
  • git一图流概括:

git安装部署

bash 复制代码
sudo apt-get install git
bash 复制代码
# 安装git依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker


# 移除旧的git
yum remove git


# 进入git解压目录,并预编译git
./configure --prefix=/usr/local/git_2.9.5


# 编译并安装git
make && make install


# 将git的脚本软连接到/usr/bin/ 目录下
ln -s /usr/local/git_2.9.5/bin/* /usr/bin/


# 查看是否安装成功
git --version

初始化本地仓库和签名

  • 初始化本地仓库命令
bash 复制代码
# 初始化本地仓库
git init


# 查看本地仓库状态
git status
  • 设置用户签名
    • git config 配置有systemgloballocal三个级别
    • 级别大小分别是 local>global>system,级别大的会覆盖掉级别小的
bash 复制代码
# 默认情况下是 local 级别
git config user.name bugmaker
git config user.email 1597532486@qq.com


# system级别,每个系统用户都共有。存在git安装目录下的/etc/gitconfig	
git config --system user.name bugmaker
git config --system user.email 1597532486@qq.com


# global级别,每个系统用户独有且相互隔离。
# Windows通常保存在C:\Users\xxxx\.gitconfig,Linux为/home/xxx/.gitconfig
git config --global user.name bugmaker
git config --global user.email 1597532486@qq.com


# local级别,当前仓库独有。存在当前仓库的.git目录下
git config --local user.name bugmaker
git config --local user.email 1597532486@qq.com


# 拓展:删除配置项的值
git config --global --unset user.name

配置远程库和拉取代码

  • 配置远程库
bash 复制代码
# 添加远程库
git remote add <name> <远程库url>
git remote add origin https://gitee.com/bugmaker/demo.git


# 查看已配置的远程库
git remote -v


# 删除远程库
git remote rm <name>
git remote rm origin


# 修改远程仓库名
git remote rename <old_name> <new_name>
  • 拉取代码:使用git clone
bash 复制代码
# 拉取代码
git clone https://gitee.com/bugmaker/demo.git

暂存区命令

bash 复制代码
# 工作区 -> 暂存区
git add <file>
git add .


# 暂存区回退到工作区
git restore --staged <file>
git restore --staged .


# 工作区修改的文件回退到修改前
git restore <file>


# 删除工作区文件,并且将这次删除放入暂存区
git rm <file>

# 停止追踪指定文件。不再被 Git 管理,但它还在你的项目文件夹里
$ git rm --cached <file>


# 暂存区提交到本地仓库,不加文件名提交所有暂存区的数据
git commit -m "message" <file>


# 自动把所有已经跟踪过的文件暂存并提交,跳过 git add 步骤
git commit -a -m "message" <file>

本地仓库命令

  • 查看历史版本
bash 复制代码
# 查看详细的历史版本
git log


# 查看简洁版
git log --oneline


# 类似于树形结构
git log --graph
  • 版本回退
bash 复制代码
# 此为默认方式,所有修改的内容和版本回退的内容都会退回到工作区
# 等同于不带任何参数的git reset
git reset --mixed <head>


# 回退到某个版本,所有修改的内容不会变动,版本回退的内容都会退回到暂存区
git reset --soft <head>


# 彻底回退到某个版本,本地的源码也会变为上一个版本的内容,所有修改的内容都会丢失
git reset --hard <head>


# 回退到上一个版本
git reset HEAD^


# 回退到上上个版本
git reset HEAD^^


# 回退到上5个版本
git reset HEAD~5


# 回退到指定版本
git reset <版本号>

本地库与远程库交换

  • 常用命令
bash 复制代码
# 从远程仓库拉取代码
git pull


# 将本地仓库代码推送到远程仓库
git push origin master

git pullgit fetch区别

  • git pull = git fetch + git merge
  • git fetch只拉取,不合并。它只是去远程仓库把最新的提交记录、分支信息下载到本地的 .git 目录中,完全不影响你当前的本地工作区。你的本地文件不会发生任何改变,也不会产生新的合并冲突。
  • git pull它执行两步操作。首先像 fetch 一样下载最新代码,然后立即尝试将这些代码合并到你当前所在的本地分支上。

git pull --rebase命令

  • 相当于git fetch + git rebase
  • 它会将你本地的未推送提交"挪到"远程最新提交的后面,避免产生多余的 Merge Commit。

分支命令

  • 创建和修改分支
bash 复制代码
# 创建分支
git branch <new_branch>


# 修改分支名称
git branch -m <old> <new>
  • 查看分支
bash 复制代码
# 查看分支
git branch


# 查看分支详情
git branch -v


# 查看远程分支
git branch -r


# 查看所有分支
git branch -a
  • 切换分支
bash 复制代码
# 切换分支
git checkout <branch_name>


# 切换到上一个分支
git checkout -


# 创建分支,并切换到创建的分支
git checkout -b <new_branch>
  • 删除分支
bash 复制代码
# 删除分支
git branch -d <分支名称>


# 强制删除
git branch -D <分支名称>

分支合并及冲突解决

  • 分支合并
bash 复制代码
 # 将一个分支合并到另一个分支
 git merge <分支名称>


 # 回退合并
 git merge --abort
  • 分支合并文件冲突,一般解决方案
bash 复制代码
# 1. 解决存在冲突的文件

# 2. 解决完成后将冲突的文件提交到暂存区
git add <冲突文件>

# 3. 将暂存区提交到本地仓库
git commit -m "解决冲突"

# 4. 提交到远程仓库
git push origin master

Tag命令

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签

bash 复制代码
# 给当前所在分支打标签
git tag v1.0


# 指定标签名、说明文字和提交节点
git tag -a v0.1 -m "version 0.1 released" 1094adb


# 查看所有标签
git tag


# 查看指定标签
git show v1.0


# 删除标签
git tag -d v1.0


# 推送标签到远程仓库
git push origin v1.0


# 将本地仓库所有标签都推送到远程仓库
git push origin --tags

stash命令

假设您正在为产品新的功能编写/实现代码,当正在编写代码时,突然出现软件客户端升级。这时,您必须将新编写的功能代码保留几个小时然后去处理升级的问题。在这段时间内不能提交代码,也不能丢弃您的代码更改。 所以需要一些临时等待一段时间,您可以存储部分更改,然后再提交它

bash 复制代码
# 添加到stash
git stash


# 指定提交信息名称
git stash save "message"


# 查看Git栈
git stash list


# 默认恢复git栈中最新的一个stash@{num}
git stash pop


# 指定恢复git栈中的stash
git stash pop stash{1}


# 默认恢复git栈中最新的一个stash@{num},该命令不会将内容从对堆栈中删除
git stash apply


# 指定恢复git栈中的stash,该命令不会将内容从对堆栈中删除
git stash apply stash{1}


# 默认删除git栈中最新的一个stash@{num}
git stash drop


# 指定删除git栈中的stash
git stash drop stash{1}


# 移除所有的栈
git stash clear

其他命令

bash 复制代码
# 显示指定文件是什么人在什么时间修改过
git blame <file>
相关推荐
kyriewen21 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
A_Lonely_Cat3 天前
记一次 GitHub 幽灵协作者大清洗:强制重写 Git 历史与穿透 CDN 缓存实践
git·github
和你看星星5 天前
Git rerere:让重复冲突只解决一次
git
嘻嘻仙人9 天前
Ubuntu中 git上传自己的项目和二次上传一般流程
git·github
Patrick_Wilson9 天前
Squash Merge 的血缘陷阱:为什么删掉的代码又活了过来
前端·git·程序员
沉浸学习的匿名网友9 天前
什么是 .gitignore?为什么每个 Git 项目几乎都离不开它?
前端·git
深海鱼在掘金10 天前
Git 完全指南 —— 第3章:理解工作区、暂存区、版本库三个核心
git
江华森10 天前
Git 基础筑基:从原理到团队协作的全栈实战
git
JakeJiang10 天前
Git 必备命令指南:从日常高频到项目开发实战
git