小和尚学习-Git基础操作

在这里插入图片描述

改变你的想法,你就改变了自己的世界。——文森特·皮尔

Git简介

Git是目前比较流行的分布式版本控制系统之一,能够记录文件的每次修改,还实现了多人并行开发。

Git组成

  • 工作区(用户能开到的文件)
  • 暂存区
  • 本地仓库(.git)

Git安装

Linux系统

Mac OS系统

Windows系统

创建本地仓库

# 1. 创建项目文件夹
$ mkdir my-project

# 2. 进入项目文件夹
$ cd my-project

# 3. 初始化 .git
$ git init

# 4. 查看 .git 文件
$ ls -la

文件提交到本地仓库

文件 ⇒ \Rightarrow 工作区

当项目目录下的文件被修改,修改内容被自动添加到工作区

工作区 ⇒ \Rightarrow 暂存区

git add <file | .>:将修改内容从工作区添加到暂存区

# 1. 创建测试testA.txt,testB.txt文件
$ touch testA.txt testB.txt

# 2. testA.txt添加到暂存区
$ git add testA.txt

# ================ 以下补充 ================
# 将多文件添加到暂存区
$ git add testA.txt testB.txt

# 将所有文件添加到暂存区
$ git add .

暂存区 ⇒ \Rightarrow 本地仓库

git commit -m <description>:将暂存区内容添加到本地仓库,并描述提交的目的
git status:查看文件状态 (红色:文件在工作区;绿色:文件在暂存区;显示nothing no commit, working tree clean说明文件已添加到本地仓库)

# 1. 将暂存区内容提交到本地仓库
$ git commit -m "这是一次测试提交"

# 2. 查看文件状态
$ git status

# ================ 以下补充 ================
# 修改最新commit的description信息
$ git commit --am -m "对最新commit的description修改"

版本回退

git log <-n>:查看n条 git 日志
git reflog <-n>:查看n条历史操作记录
git reset --hard HEAD~n:返回第n个版本 (HEAD 代表当前版本)

# 1. 查看git日志,获取commit ID
# --pretty=oneline:只显示commitID
# --graph:查看日志图谱
# --abbrev-commit:commitID缩写
$ git log --pretty=oneline --graph --abbrev-commit

# 2. 返回当前版本的上一个版本
$ git reset --hard HEAD~1

# ================ 以下补充 ================
# 返回上一个版本,(^一个版本,^^两个版本,以此类推)
$ git reset --hard HEAD^

# 返回指定版本
$ git reset --hard 2a8a604

差异比较

git diff:比较工作区与暂存区的内容

# 比较工作区与暂存区的内容
$ git diff

# 比较工作区与本地仓库最新一次commit的内容
$ git diff HEAD

# 比较暂存区与本地仓库最新一次commit的内
$ git diff --cached

# 比较两个commit之间的内容
$ git diff 2a8a604 2a8a605

文件撤销

git checkout --file:撤销工作区修改内容

# 1. 修改testA.txt
vim testA.txt

# 2. 撤销的 testA.txt 修改
$ git checkout --testA.txt

删除文件

git rm --file:删除本地仓库修改内容

# 1. 删除testA.txt
$ rm testA.txt

# 2. 删除本地仓库里的 testA.txt 文件
$ git rm --READMEA.md

# 3. 提交本次修改
$ git push commit -m "删除了READMEA.md文件"

本地仓库与远程仓库建立连接

一. 创建私钥

# 1. 查看电脑是否存在.ssh文件
$ open ~/.ssh

# 2. 创建SSH key(如果第一步里的.ssh存在,那么请忽略这步)
$ ssh-keygen -t rsa -C "youreamil@example.com"

# 3. 复制id_rsa.pub里文件内容
$ cat ~/.ssh/id_rsa.pub

二. 添加SSH到GitHub

在这里插入图片描述
在这里插入图片描述

三. 创建远程仓库并与本地仓库相关联

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
git remote add origin <rep_url>:让本地仓库员与远程仓库建立联系
git push <-u> origin master:将本地仓库内容推送到远程仓库master分支上

# 1. 与远程test仓库建立联系
$ git remote add origin git@github.com:SmithJson/test.git

# 2. 将本地仓库推到test远程仓库master分支上
# -u只需要在第一次提交的时候添加
$ git push -u origin master

克隆远程仓库

git clone <rep_url>:克隆指定仓库

# 克隆test远程仓库
$ git clone git@github.com:SmithJson/test.git

分支管理

一. 创建分支

git branch <name>:创建分支
git checkout <name>:切换分支

# 1. 创建dev分支
$ git branch dev

# 2. 切换到dev分支
$ git checkout dev

# ================ 以下补充 ================
# 创建并切换到dev分支
$ git branch -b dev

# 本地创建于远程仓库对应的分支
$ git checkout -b dev origin/dev

# 查看分支列表
$ git branch

二. 合并分支

git merge <origin> <name>:合并分支

# 1. 合并本地dev分支(在master分支上)
$ git merge dev

# ================ 以下补充 ================
# 合并远程master分支
$ git merge origin master

# 使用普通模式合并分支
# 普通模式会创建一个合并commit,用于查看合并记录,Fast forward模式无法查看合并记录
# --no-off:禁用Fast forward模式
$ git merge --no-off -m "本次合并commit描述" dev

三. 删除分支

git branch -d <name>:删除本地分支
git branch -D <name>:强制删除本地分支
git push -d origin <name>:删除远程分支

# 1. 切换回master分支
$ git checkout master

# 2. 删除本地dev分支
$ git branch -d dev

# 3. 删除远程仓库dev分支
$ git push -d origin dev

四. 分支冻结

使用场景:需要去其他分支处理BUG,但当前分支还存在未提交的代码时使用

git stash:将当前的分支的修改冻结,使当前分支工作区,暂存区没有内容
git stash list:查看冻结列表
git stash pop:解冻修改
git cherry-pick commit ID:将某个分支的commit合并

# 1. 切换到dev分支
$ git checkout dev

# 2. 修改里面的 testA.txt 文件
$ vim testA.txt

# 3. 冻结当前修改(如果分支存在修改,那么无法切换到其他分支)
$ git stash

# 4. 现在能切换到其他分支了
$ git checkout master

# ========================================
# 将os-12分支的的commit修改赋值在dev分支上
$ git cherry-pick 7a18e07

五. 多人协作

git fetch origin <name>:获取远程指定分支修改
git pull origin <name> ⇔ \Leftrightarrow git fetch + git merge

# 1. 获取远程dev分支修改(每天开发前先fetch,避免后期冲突过多)
$ git fetch origin dev

# 2. 合并远程dev仓库
$ git merge origin dev

# 3. 解决冲突

# 4. 提交到远程dev分支
git push origin dev

# ========================================
# 获取远程dev分支修改,同时与当前分支进行合并
git pull origin dev

标签管理

一. 创建Tag

git tag <name>:创建tag

# 为当期Commit创建tag
$ git tag v1.0

# 为指定Commit创建tag
$ git tag v0.9 59f03c7

# 为tag添加描述语言
$ git tag -a v0.1 -m "创建一个带有描述的tag" 59f03c7

# 查看所有tag
$ git tag

# 查看v1.0 tag对应的commit
$ git show v1.0

二. 删除Tag

git tag -d <name>:删除本地tag
git tag push origin :refs/tags/<name>:删除远程tag
git push origin tag <name>:推送本地tag到远程仓库
git push origin --tags:推送所有未推送的本地tag到远程仓库

# 1. 将多个tag推送到远程仓库
$ git push origin --tags

# 2. 删除本地tag v0.9
$ git tag -d v0.9

# 3. 删除远程仓库的tag v0.9
$ git push origin :refs/tags/v0.9

其他git指令

指令操作
git remote rm origin删除远程关联仓库
git config --list查看git配置项
git config --global <key> <value>设置git配置项,key属性名,value属性值
git config --list查看git配置项

.gitnore配置文件仓库

国庆快乐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值