Git常用操作速查,没有人比我更简单!!
目录
- Git初始化
- Git配置
- init
- clone
- commit
- branch
- push
- pull
- checkout
- merge
- log
- rm
- reset
- --hard
- rebase
- 应用场景
- 其他操作
- git status
- git fetch
- git diff
- git remote
- git-keygen
- git 暂存工作
- 典型应用场景
- 1.新建本地分支,修改代码,提交到远程同名分支
- 2.重命名本地分支,删除远程分支,并提交到远程
- 3.重置本地仓库
- 4.拉取远程最新分支,并与本地分支合并
- 5.报错内容出现upstream branch与current branch不匹配
- 6.中途修改让.gitignore文件生效
Git工作流中有三个重要点:
Remote远程仓库,是push的目的地
Repository本地仓库,是commit目的地
workspace工作区,是当前编辑区
注意:所有操作都是基于本地分支和本地缓存的远程分支,只有将改动push出去,才能修改版本库(真实远程分支)的内容!!!
举例:git fetch操作,是将真实远程分支拉取到本地缓存起来,而git pull则是将真实远程分支拉取到本地缓存后,与本地分支进行合并!
Git初始化
# 1. 在github上创建项目仓库
# 2. 配置本地git
git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"
# 3. 初始化本地仓库-提交-链接远程仓库
git init
git add .
git commit -m "first commit" (first commit 本次提交的内容)
git remote add origin <your project git url>
git push -u origin master
git push
Git配置
git配置基本上都在config配置文件中
配置级别从顶层到底层:
system | global | local |
---|---|---|
系统 | 用户 | 当前仓库 |
底层配置会覆盖顶层配置
# 查看系统配置
git config --system --list# 查看用户配置
git config --global --list# 查看当前仓库的配置
git config --local --list
可以通过命令来查看当前git的所有配置
# 检查当前config所有配置
git config --list
git初始化配置用户信息
git config --global user.name "xxx"
git config --global user.email "xxx"
init
使用git init
用于初始化本地仓库,一般流程为
git init
git add .
git commit -m "initial commit"
注意:初始化项目后会生成.gitignore
文件,该文件在第一次被提交后,再做修改则不会起作用!!!
原因:.gitignore
只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
clone
使用git clone
将远程仓库拉下来,一般流程为
# 将代码拉下来放在当前目录中
git clone xxx链接# 将代码拉下来放到指定目录中
git cloen xxx链接 xxx目录
commit
提交跟踪文件的改动,会将改动提交到当前所在的分支上,一般流程为
git add .
git commit -m "comment"# 使用-a参数免去add操作,直接提交tracked文件,但是没有tracked的文件不会提交
git commit -a "comment"
branch
用于查看分支,新建分支和修改分支
# 查看所有分支
git branch -a# 新建本地分支
git branch xxx# 建立本地分支,并与远程分支关联
git branch xxx origin/xxx# 修改本地分支名
git branch -m oldxxx newxxx# 删除本地分支
git branch -d xxx
# 强制删除本地分支
git branch -D xxx
push
用于将本地暂存区推送到远程、修改远程分支等操作
# 推送分支
git push origin 本地名:远程名
# 如果推送到远程同名分支可以简写,不存在会被创建
git push origin xxx# 删除远程某个分支(本地空分支推送)
git push origin :远程名
# 等同于
git push origin --delete 远程名# 将当前分支推送到远程origin主机对应分支
git push origin
# 可以通过-u指定远程主机,这样之后就不用指定origin
git push -u origin 分支名
# 若远程主机被-u指定后,可以简写
git push
pull
拉取远程分支到本地,操作其实是两步:拉到本地远程分支,合并本地远程与本地分支:
origin dev—>origin/dev—>dev
注意:此处的合并会将commit记录合并了,不会产生merge的commit
# 将远程主机的某个分支拉到本地的某个分支上合并
git pull 远程主机 远程分支:本地分支
git pull origin dev:xiaopi3# 如果与当前分支合并,可以省略本地分支
# 拉远程dev与当前本地分支合并
git pull origin dev
# 等同于
git fetch origin
git merge origin/dev# 拉取本地分支对应的远程分支并合并
git pull
# 可以采用rebase模式
git pull --rebase origin dev:xiaopi3
checkout
git checkout
命令用于切换分支或恢复工作树文件。git checkout
是git最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区。对于新建文件,由于没有纳入git管理,会被带入切换的分支中,解决方法是commit一下再切换
git branch -a # 查看当前所有分支
git checkout 分支名 # 切换到本地分支
git checkout -b 本地分支 origin/远程分支 # 切换到远程分支对应的本地分支
同时,checkout命令可以用来合并冲突,常在git pull后用:
git checkout --ours file1 file2 file3
// ours:保留当前所在分支的修改
// theirs:保留其他分支的修改
merge
合并两个或者多个分支的内容,一般流程
# 将xxx合并到当前分支,并自动commit
git merge xxx
log
查看提交记录
# 查看提交日志,以下三种都可以
git log # 详细
git log --pretty=oneline # 简单
git reflog # 操作记录
# 回滚本地记录
git reset --hard xxxid
# 回滚远程记录
git push -f [origin xxx]
rm
用于删除工作区、版本库(远程)、暂存区的文件(如果删除文件夹,需要-r参数)
# 删除本地文件,并将改动放入暂存区
# 删除工作区文件,等同于直接资源管理器删除文件,提交后版本库自动删除相应文件,注意如果本地已经修改了的文件再删除会报错(删除的文件必须和版本库一致,才能删除)
git rm xxx.txt# 删除本地文件,并将改动放入暂存区
# 删除文件,强制,无论本地和版本库是否一致,无论是否放入了暂存区,都可以删除,push后版本库相应文件也会删除
git rm -f xxx.txt# 取消文件跟踪,本地不删除,删除暂存区文件,并将改动放入暂存区
# 只删除暂存区文件,工作区保留,即已经被git add过的文件,处理后将不再被git跟踪,push后版本库也删除相应文件
git rm --cached xxx.txt
reset
git reset
命令用于将当前分支的HEAD
复位到指定状态。一般用于撤消之前的一些操作(如:git add
,git commit
等)。该命令不会改变工作区的内容!
HEAD
表示当前分支最新的提交
git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD]
将当前分支重置到指定commit,默认为HEAD
–hard
从commit之后的任何改动都被丢弃,并将HEAD指向commit
# 第一次提交:add test1.c
# 第二次提交:add test2.c
# 第三次提交:add test3.c ---> HEAD# 将HEAD往过去挪一步:此时抛弃了test3.c,只保留了前两个,但是不改变工作区内容
git reset --hard HEAD~1
# 撤销最近一次commit,将其挪回工作区
git reset head~1
rebase
用于将一个分支的修改,合并到当前分支
应用场景
使用情形:同一个分支上,A和B都做了commit,其中一个人做了push,另一个人push时就会失败
此时几种办法:
pull:直接拉取会出现冲突,解决冲突后可以提交,等价于merge
merge:将远端代码拉下来与本地代码merge,然后解决冲突,再add、commit、push
rebase:将当前的commit存为patch,然后拉取最新代码,然后自动合并
图解:
origin和mywork在C2的基础上往右前进两个commit:
如果采用merge,此时工作流为:
如果采用rebase,将改动放置到临时区,然后拉取最新代码,然后合并:
其他操作
git status
查看当前项目的跟踪情况
git fetch
将远程分支拉取到本地远程分支上
本地仓库分为本地分支和本地远程分支:本地远程分支前面加了origin
该命令将远程分支拉到本地远程分支上,但是不会与本地分支合并
git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
$ git fetch origin master
$ git log -p master..origin/master
$ git merge origin/master
以上命令的含义:
- 首先从远程的
origin
的master
主分支下载最新的版本到origin/master
分支上 - 然后比较本地的
master
分支和origin/master
分支的差别 - 最后进行合并
git diff
比较工作区和暂存区文件差异
git diff <file> # 比较当前文件和暂存区文件差异 git diffgit diff <id1> <id2> # 比较两次提交之间的差异git diff <branch1> <branch2> # 在两个分支之间比较git diff --staged # 比较暂存区和版本库差异git diff --cached # 比较暂存区和版本库差异git diff --stat # 仅仅比较统计信息
git remote
# 去除本地缓存的远程主机不存在的分支
git remote prune origin# 将本地仓库关联远程仓库
git remote add origin xxxurl
git-keygen
生成ssh密钥,设置好用户名和邮箱后
ssh-keygen -t rsa -C "邮箱"
连续三个回车即可,将生成的两个文件中的pub后缀的拷贝到github ssh设置中即可
git 暂存工作
将当前工作区的修改暂存起来,之后可以在任意分支上pop出来
git stash # 将当前工作保存
git pop # 将上一次保存的工作恢复到工作区# 给stash备注
git stash save xxxx# 查看当前保存的工作表
git stash list# 查看储存单元和最新提交的diff
git stash show# 恢复指定储存单元
git stash pop 索引
典型应用场景
1.新建本地分支,修改代码,提交到远程同名分支
# 切换到基础分支
git checkout abc# 在该分支上进行coding,结束# 查看所有分支
git branch -a# 新建本地分支
git branch xxx# 切换到分支
git checkout xxx# 提交修改到暂存区
git add .
git commit -m "xxx"# 提交代码到远程分支
git push origin abc
2.重命名本地分支,删除远程分支,并提交到远程
# 查看当前分支
git branch -a
# 重命名原来本地分支
git branch -m oldxxx newxxx
# 切换到分支
git checkout xxx
# 提交修改到暂存区
git add .
git commit -m "xxx"
# 删除远程原来分支
git push origin --delete oldxxx
# 提交代码到远程分支
git push origin newxxx
–delete可以写成-d
3.重置本地仓库
有时候我会把本地的代码彻底搞乱,因此需要放弃本地修改,选择从远端仓库拉取代码覆盖,具体操作如下
git fetch --allgit reset --hard origin/[branch-name]git pull
4.拉取远程最新分支,并与本地分支合并
由于某个分支上有人push了最新的代码,我们在push代码时如果需要防止与其冲突或者某个分支新增了功能,我们当前分支需要使用,则需要将其分支与我们的进行合并
# 切换到分支a
git checkout a
# 将a分支最新代码拉下来
git pull
# 切换回分支b
git checkout b
# 合并
git merge a
# 推送合并分支到b
git push
5.报错内容出现upstream branch与current branch不匹配
git push -u origin currentxxx
6.中途修改让.gitignore文件生效
一般而言创建仓库时添加.gitignore文件,之后add、commit、push会自动生效,但是有时候中途修改该文件后也想让其立即生效,需要清除一下缓存cache,才能使其生效
git rm -r --cache # 清除缓存
git add .
git commit -m "update .gitignore"
git push origin master
Git常用操作速查,没有人比我更简单!!相关推荐
- Git 常用命令速查表(图文+表格)
一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch ...
- Git 常用命令速查表(图文+表格)【转】
转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git co ...
- 转收藏:Git常用命令速查表
一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch ...
- [No0000176]Git常用命令速查表(收藏大全)
名词 master: 默认开发分支 origin: 默认远程版本库 Index / Stage:暂存区 Workspace:工作区 Repository:仓库区(或本地仓库) Remote:远程仓库 ...
- uni-app开发常用操作速查记录
记录一下uni-app中常用的使用方法或是操作步骤,方便后期速查使用. 1.设置对象属性 2.组件中数据变化监听方法 3.微信开发者工具中全局搜索与局部搜索 4 ...
- MYSQL常用操作速查
简介 mysql速查 net start MySQL服务名 net stop MySQL服务名 mysql -h主机名 -u用户名 [-P端口] -p quit;或exit; set names ut ...
- Git 常用命令速查表(收藏大全)
目录 一.新建代码库 二.配置 三.增加/删除/修改文件 四.代码提交 五.分支 六.标签 七.查看信息 八.远程操作 九.撤销 十.其他 名词 master: 默认开发分支 origin: 默认远程 ...
- 【Git命令】Git常用命令速查 Git命令汇总
记录Git的一些常用指令,遗忘时方便快速查询. 符号说明: []里表示可选字段 <>里表示需要用户定义的字段 1. 基础配置 配置用户签名: # 配置用户名 git config [--g ...
- git 常用命令速查 命令速查表
一.克隆项目 把远程仓库上的项目克隆到本地.一般来说项目是有1个或2个分支,主要是做开发和线上的区别.既然所属分支不一样,那命令也会有一点区别.这里假设是有2个分支,dev 和master 克隆mas ...
最新文章
- 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
- Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等)
- windows版本jenkins部署django项目
- 你怕是对MD5算法有误解
- Opencv--图像颠倒的问题
- OpenVINO+OpenCV 文本检测与识别
- 【BZOJ1051】受欢迎的牛,tarjan缩点重构图
- m5310模组数据上传至onenet_基于Semtech SX1276RF1KAS SPI模组及ATMEGA328架构下之烟雾气体感测方案...
- 网络故障处理手册大全
- tensorflow tensorboard summary的工作特点
- 流程机器人 RPA:AI落地的接盘侠 | 甲子光年
- SpringMVC面试题及答案
- 电脑上安装的matlab软件打不开怎么办,电脑软件打不开没反应怎么办?
- java在线截图_JAVA之网页截屏
- 一道逻辑题 房间里有100盏电灯
- 数据库分区、分表、分库,读写分离
- 云计算服务器和vps,云服务器和vps差别
- mouseenter 与mouseover 区别
- 第2章金融市场与金融机构习题---金融学基础
- LiveRTMP内置IPCamera实现RTMP直播摄像机功能