git常用命令,git学习资料推荐

资料推荐:
推荐万门大学吴海洋老师的课程,讲得非常清楚,本博客内容基本为该课程的内容整理。
同时推荐廖雪峰老师的git教程,两个互相补充着学习,git使用基本无障碍了。
极客时间苏玲老师的《玩转git三剑客》讲得内容更多一些,但个人感觉过于细碎,章节安排不成体系,小白直接看抓不住重点,可以作为补充知识来看。
一、环境配置
git配置

// 配置用户名和邮箱
git config --global user.name "yourname"
git config --global user.email "your@email"

//查看配置文件
git config --list
//查看某项配置
git config user.name
//查看帮助
git help
git help 具体命令 //查看详细说明

git初始化

// 初始化
git init
//创建文件夹并初始化
git init 文件名
//查看文件夹下的全部文件
ls -la 文件名

git追踪

//查看git状态
git status
//将文件添加到暂存区
git add 文件名
//添加所有文件
git add .

git撤销追踪

//将文件从暂存区撤回,取消追踪
git rm --cached 文件名(可写多个文件名)

git提交本地仓库

//commit之后即生成版本号进行保存
git commit
git commit -m 提交信息
//同时做add和commit,但只对已经追踪的文件生效
git commit -am

二、版本追踪
git的log追踪

//命令参数可以组合使用
git log
//查看最近两次提交内容的差异
git log -p -2
git log --author=""
//查看分支图
git log --graph
git log --pretty=oneline //打印的信息是完整的
//定制打印格式,%h表示哈希值,%an表示作者,%ar表示时间,%s表示描述。
git log --pretty=format:"%h - %an, %ar : %s"

git追踪文件修改前后的区别

//git commit之前检查当前版本是否有问题,若无问题则可以直接am提交
git diff //可以指定文件名,默认是展示所有文件的变化
//如果文件已经add到暂存区了,则不能用git diff 直接查看区别,需要加staged参数。
git diff --staged 

git文件删除、重命名和移动

//删除,可以删除原文件再add,相当于git删除
git rm filename
//重命名
git mv oldname newname
//移动,移动本质上是删除旧的,新建新的
git mv filename 路径/文件名

git文件忽略

//在.gitignore中添加需要忽略的文件名
//忽略node_modules文件下下的所有文件
//忽略不同的文件需要换行
/node_modules
//忽略.log结尾的文件
*.log

//删除已经被追踪的文件追踪
//空文件夹不会被发现提示未追踪,空文件会被提示未追踪
//把缓存区所有的文件提出来,在.gitignore中添加需要忽略的文件,再add-commit-push。
git rm -r --cached .

三、复原变更
git一键还原

//本地修改,尚未add
//放弃本地的修改
git checkout -- filename

//新建的文件,还未被追踪,无法用checkout还原,可以直接删除
rm -rf filename

git撤销追踪与一键还原

//已经添加到缓存区的文件
//reset到本文件的上一次操作
git reset HEAD filename
//回到未add的状态,放弃本地修改,回到上一次的状态
git checkout --filename

git版本回退

//强制回退
git reset --hard HEAD^		//回退到上一个版本
git reset --hard HEAD^^		//回退到上上个版本
git reset --hard HEAD的hash号		//回退到指定hash版本
git reflog	//	查看指针的变化情况

git回到旧版本
版本回退:删掉了未来版本,无法回到未来
回到旧版本:将过去的某个版本拉取到现在,保留了已有的所有版本

//
git log
git checkout hash号 -- filename
git checkout hash号 -- .	//把所有文件都恢复到以前的版本,再commit一下

四、分支合并
当前分支有内容未处理时不要切换分支,会导致其他分支内容也发生改变。
在当前分支working tree clean的状态下再切换分支

git新建切换删除分支

git branch //查看分支
git branch name //新建分支
git checkout branch_name //切换分支
git checkout -b branch_name	//新建并切换分支
git branch -d name	//删除分支,需要先切换到其他分支下
git branch -D name 	//强制删除分支,未合并的分支不能用-d删除,可以用-D强制删除

//误删某个分支后,只要有该分支的hash号就可找回
git branch 分支名 hash号

git合并分支
先切换到主分支下,再git merge需要合并的分支

git merge branch_name
git merge --no-ff --no-commit branch_name	//合并后不提交,测试没问题后再提交,--no-ff不用快转模式,可以看到所有的版本
git merge --no-ff --squash branch_name	//--no-ff和--squash不能同时使用
git merge --squash branch_name	//压缩分支,压缩之后要commit
git reset --hard ORIG_HEAD	//回到最开始的版本

git解决冲突

git merge --abort	//放弃合并

<<<<<<<表示现在的分支
=======表示分隔
>>>>>>>表示要被合并的分支

git通过命令查看版本线图

git log
git log --oneline
git log --oneline --graph
git log --oneline --graph --all	//查看所有分支的
git log --oneline --graph -number	//查看最近的几个版本线图

git快转机制
上一个版本和本版本相同时,没必要保留保留两个相同的版本,使用快转机制直接抹除上一个版本

git merge branch_name --no-ff	//不使用快转机制

git一次性删除所有不想要的分支

git branch --merged	//显示所有已经合并的内容
git branch --no-merged	//显示所有未合并的内容
git branch --merged | egrep -v "(^\*|master|develop)"|xargs git branch -d	//括号里的是要保留的分支
git branch --no-merged | egrep -v "(^\*|master|develop)"|xargs git branch -D	//括号里的是要保留的分支,删除未合并的分支要用大写D

五、github使用

git本地仓库推送到远端仓库

git init	//生成本地仓库 
git add .
git commit -m "message"
git remote add origin 远端网址	//设置好以后用origin替代远端网址
git push --set-upstream origin master	//首次提交需进行连接
git push -u origin master 	//上一句命令的简写

git主仓库做服务器

1、项目名为owner_name.github.io
2、解除原有的连接
git remote remove origin
3、建立新连接
git remote add origin 远端网址

git获取远端项目
不要下载了zip文件后再使用git init,会导致分支信息全部丢失。

git clone 远端仓库地址 项目名(可选)//克隆远端仓库,并自动checkout到 master
//添加项目名参数可以重命名项目
git clone --no-checkout	//克隆,但不自动checkou到 master
git clone --bare 远端仓库地址	//克隆一个裸仓库,只有.git文件
如果需要获取代码,则再进行以下操作
git clone 裸仓库地址 项目名

六、git多人协同开发

git push

git push
git push -u origin
git push --set-upstream origin branch_name	//第一次上传要对应远端分支,之后可以直接使用git push
git push --all	//所有分支一次性上传
git branch -a	//可以查看远端追踪分支

git pull

git pull = git fetch + git merge //上班先git pull 
git fetech
git merge
gitr pull 拉取本地没有的远端分支后,本地只有该分支的远端追踪分支,但没有该分支,
此时不可以checkout到远端追踪分支,会产生分离头指针。如果想checkout可以直接
git checkout 对应的远端分支名,本地会自动创建。

git 删除远端分支,仓库迁移

git push origin --delete branch_name	//删除远端分支和远端追踪分支
git remote set-url origin 远端仓库新地址	//仓库迁移,设置好新地址后,git push --all即可。

git 演示

developer A 创建仓库并上传
	git init //初始化本地仓库
	code .gitignore //使用vs code打开.gitignore文件
	git add .
	git commit -m 'first commit'
	git remote add origin 远端仓库名
	git push -u origin master
developer B 拉取项目并开发
	git clone --bare 远端仓库地址
	git clone --no-checkout 裸仓库地址 项目名
	rm -rf 裸仓库
	git checkout master
	git checkout -b developB	//创建自己的分支并开发
	code .
	git add .
	git commit -m 'developB'
	git checkout master 
	git merge --no-ff developB
	git log --oneline --graph
	git remote set-url 远端仓库地址
	git remote -v
	git push --all
developer A 进行开发
	git pull
	git checkout -b developA
	code .
	git add .
	git commit -m 'developA'
	git checkout master 
	git merge developA
	git push	//只push了master,如果需要push其他的,那么可以git push --all或者切换到其他分支,git push origin developA

七、git服务器部署

git 使用ssh连接github

cd ~	//切换到默认文件夹
ls -la
ssh-keygen 	//生成公钥私钥
cat id_rsa.pub	//打开公钥,把公钥放到服务器上
ssh git@github.com	//连接github服务器

git 自动部署到阿里云服务器

1、将项目提交到github
2、使用github的actions进行自动部署,根据语言和功能选择CI,Deploy with rsync插件实现自动部署到服务器的功能。参数在settings--secrets里添加。
3、生成公钥和私钥
ssh-keygen -t rsa -C auto -f deployment
//自定义生成,添加描述,给定项目名字,最终生成了deployment和deployment.pub
把私钥添加在github的secrets的变量里
把私钥添加在本地的ssh文件夹里
cd .ssh/
cp ~/deployment .
把公钥添加在远程服务器的默认文件夹上
scp deployment.pub 用户名@公网ip:.
4、连接远程服务器
ssh root@公网ip地址	//本地连接服务器
将公钥写入到.ssh文件夹的authorized_keys文件中
按dd删除原内容
cat deployment.pub >> ~/.ssh/authorized_keys
5、发起自动部署
回到github,点击start commit。

八、gitlab使用

gitlab

私有仓库免费,操作与github相同

fork使用

用于多开发者之间的协同,或者项目新功能的增加与测试
fork到自己的仓库中进行修改
然后发起merge request

CI和CD

Continuous Intergration	//单元测试
Continuous Delivery	//
Continuous Deployment	//
持续集成、持续交付、持续集成

gitlab runner

安装教程按照官网进行
gitlab-runner --version	//查看是否安装成功

gitlab CI/CD

创建 .gitlab-ci.yml
运行CI/CD Pipelines

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值