目录

  • 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工作流中有三个重要点:

  1. Remote远程仓库,是push的目的地

  2. Repository本地仓库,是commit目的地

  3. 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

以上命令的含义:

  • 首先从远程的originmaster主分支下载最新的版本到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常用操作速查,没有人比我更简单!!相关推荐

  1. Git 常用命令速查表(图文+表格)

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  2. Git 常用命令速查表(图文+表格)【转】

    转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git co ...

  3. 转收藏:Git常用命令速查表

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  4. [No0000176]Git常用命令速查表(收藏大全)

    名词 master: 默认开发分支 origin: 默认远程版本库 Index / Stage:暂存区 Workspace:工作区 Repository:仓库区(或本地仓库) Remote:远程仓库 ...

  5. uni-app开发常用操作速查记录

    记录一下uni-app中常用的使用方法或是操作步骤,方便后期速查使用.      1.设置对象属性      2.组件中数据变化监听方法      3.微信开发者工具中全局搜索与局部搜索      4 ...

  6. MYSQL常用操作速查

    简介 mysql速查 net start MySQL服务名 net stop MySQL服务名 mysql -h主机名 -u用户名 [-P端口] -p quit;或exit; set names ut ...

  7. Git 常用命令速查表(收藏大全)

    目录 一.新建代码库 二.配置 三.增加/删除/修改文件 四.代码提交 五.分支 六.标签 七.查看信息 八.远程操作 九.撤销 十.其他 名词 master: 默认开发分支 origin: 默认远程 ...

  8. 【Git命令】Git常用命令速查 Git命令汇总

    记录Git的一些常用指令,遗忘时方便快速查询. 符号说明: []里表示可选字段 <>里表示需要用户定义的字段 1. 基础配置 配置用户签名: # 配置用户名 git config [--g ...

  9. git 常用命令速查  命令速查表

    一.克隆项目 把远程仓库上的项目克隆到本地.一般来说项目是有1个或2个分支,主要是做开发和线上的区别.既然所属分支不一样,那命令也会有一点区别.这里假设是有2个分支,dev 和master 克隆mas ...

最新文章

  1. 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
  2. Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等)
  3. windows版本jenkins部署django项目
  4. 你怕是对MD5算法有误解
  5. Opencv--图像颠倒的问题
  6. OpenVINO+OpenCV 文本检测与识别
  7. 【BZOJ1051】受欢迎的牛,tarjan缩点重构图
  8. m5310模组数据上传至onenet_基于Semtech SX1276RF1KAS SPI模组及ATMEGA328架构下之烟雾气体感测方案...
  9. 网络故障处理手册大全
  10. tensorflow tensorboard summary的工作特点
  11. 流程机器人 RPA:AI落地的接盘侠 | 甲子光年
  12. SpringMVC面试题及答案
  13. 电脑上安装的matlab软件打不开怎么办,电脑软件打不开没反应怎么办?
  14. java在线截图_JAVA之网页截屏
  15. 一道逻辑题 房间里有100盏电灯
  16. 数据库分区、分表、分库,读写分离
  17. 云计算服务器和vps,云服务器和vps差别
  18. mouseenter 与mouseover 区别
  19. 第2章金融市场与金融机构习题---金融学基础
  20. LiveRTMP内置IPCamera实现RTMP直播摄像机功能

热门文章

  1. android切换原唱伴唱,切换伴奏和原声/设置KTV播放列表
  2. 最大回撤率 和 移动数组零元素到末尾
  3. nmn有什么功能,nmn对男人的好处,女人只能羡慕
  4. 联想小新 Pad Plus 2023 款评测
  5. YOLO系列之yolo v2
  6. SSD的使用寿命一般有多久
  7. 科研快报 | 三代测序技术-海水微生物态,助力海水微生态及微生物基因组研究
  8. 远程登录多用户同时访问Win7系统远程桌面
  9. 实验!实验!还是实验!
  10. 简述SpringMVC及其工作流程图