当前位置: 首页 > news >正文

Git 的基本操作 ——命令行

Git 的工作流程

详解如下:

本地仓库:是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库)

远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器)

工作区: 我们自己写代码(文档)的地方

暂存区: 在 本地仓库中的一个特殊的文件(index) 叫做暂存区,临时存储我们即将要提交的文件区域。


clone(克隆):将远程仓库中克隆代码到本地仓库。

checkout(检出):从本地仓库中检出一个仓库分支然后进行修订。

add(添加):在提交前先将代码提交到暂存区。

commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本。

fetch(抓取):从远程仓库抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

pull(拉取):从远程仓库代码下载到本地仓库,自动进行合并(merge),然后放到工作区,相当于fetch+merge。

push(推送):修改完成后,需要和团队共享代码时,将本地仓库代码推送到远程仓库。

一、本地仓库操作

1、配置环境

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

# 设置用户信息
git config --global user.name "用户名称"
git config --global user.email "email地址"
# 查看配置信息
git config --global user.name   (查看用户名配置信息)
git config --global user.email  (查看email地址配置信息)
git config --list   (查看git所有配置信息)

2、初始化本地仓库init

# 初始化仓库带工作区
git init

3、添加工作区到暂存区add

git add  <文件名> 或 git add . (添加当前目录所有文件到暂存区)

4、提交暂存区到本地仓库commit

git commit -m "注释内容"  <文件名>  

5、查看修改状态status

git status

6、查看日志提交记录

git log
git reflog (同时存在删除的记录)

7、版本回退/切换

git reset --hard commitID   (commitID可使用git log指令查看)

8、克隆clone

# 从远程仓库克隆
git clone 远程Git仓库地址 
例如: git clone https://gitee.com/harrietmao/git_studyfirst.git

二、远程仓库操作

远程名称:默认是origin,取决于远程服务器设置

1、查看远程

# 查看远程  列出指定的每一个远程服务器的简写
git remote 
# 查看远程 , 列出 简称和地址
git remote  -v  
# 查看远程仓库详细地址
git remote show  <仓库简称>

2、添加/移除远程仓库

# 添加远程仓库
git remote add <远程名称> <仓库地址url>
远程名称:默认是origin,取决于远程服务器设置
仓库地址:从远程服务器获取此地址URL
​
# 移除远程仓库和本地仓库的关系(只是从本地移除远程仓库的关联关系,并不会真正影响到远程仓库)
git remote rm <shortname> 

3、推送到远程仓库push

git push [remote-name] [branch-name]
如果远程分支和本地分支名称相同,则可以只写本地分支
git push origin master == git push origin master:master
​
**--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系
git push --set-upstream origin master--如果当分支已经和远端分支关联,则可以省略分支名和远端名git push 将master分支推送到已关联的远端分支。

4、查看本地分支与远程分支的关联关系

git branch -vv

5、从远程仓库克隆(clone)、抓取(fetch)、合并(merge)、拉取(pull=fetch+merge)

# 从远程仓库克隆
git clone <url> 
# 从远程仓库抓取 (拉取到.git 目录,不会合并到工作区,工作区发生变化)
git fetch  <shortname>  <分支名称>
# 手动合并  把某个版本的某个分支合并到当前工作区
git merge <shortname>/<分支名称>
# 从远程仓库拉取 (拉取到.git 目录,合并到工作区,工作区不发生变化) = fetch+merge
git pull  <shortname>  <分支名称>
git pull  <shortname>  <分支名称>  --allow-unrelated-histories  #  强制拉取合并

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories (如上 命令)

# 将本地仓库推送至远程仓库的某个分支
git push [remote-name] [branch-name]

三、分支

# 默认 分支名称为 master

1、查看分支

# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a

2、创建分支

git branch 分支名

3、切换分支(checkout)

git checkout 分支名
git checkout -b 分支名 (切换到一个不存在的分支--创建并切换)

4、删除分支

不能删除当前分支,只能删除其他分支

# 删除分支(如果分支已经修改过,则不允许删除)
git branch -d  <分支名>    (删除分支前,需要做各种检查)
# 强制删除分支
git branch -D  <分支名>    (不做任何检查,强制删除)
# 删除远程仓库分支
git push origin –d <branchName>

5、提交分支至远程仓库

git push <仓库简称> <分支名称>

6、合并分支,将其他分支合并至当前工作区

git merge <分支名称>

相关文章:

  • LLaMA-Adapter源码解析
  • 【数据结构】树家族
  • Linux背景介绍与环境搭建
  • 你的编程能力从什么时候开始突飞猛进?
  • 2014年亚太杯APMCM数学建模大赛A题无人机创造安全环境求解全过程文档及程序
  • 京东大数据平台-第三方京东平台数据查询分析软件系统
  • 【Ubuntu】安装chrome之后无法启动
  • ChatGLM3设置角色和工具调用的解决方案
  • SkyWalking官方文档-1-概述
  • 程序员笔记本电脑选 windows 还是 MAC
  • Spring Boot 面试题——常用注解
  • uniapp原生插件之安卓文字转拼音原生插件
  • VMware 虚拟机安装 CentOS 7
  • vim手册(vim cheatsheet)
  • 论文阅读 - Detecting Social Bot on the Fly using Contrastive Learning
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java 最常见的 200+ 面试题:面试必备
  • markdown编辑器简评
  • miaov-React 最佳入门
  • orm2 中文文档 3.1 模型属性
  • VUE es6技巧写法(持续更新中~~~)
  • 大快搜索数据爬虫技术实例安装教学篇
  • 分布式事物理论与实践
  • 机器学习 vs. 深度学习
  • 技术发展面试
  • 经典排序算法及其 Java 实现
  • 聊聊sentinel的DegradeSlot
  • 浏览器缓存机制分析
  • 全栈开发——Linux
  • 容器服务kubernetes弹性伸缩高级用法
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 网络应用优化——时延与带宽
  • 微服务核心架构梳理
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 正则表达式小结
  • 自动记录MySQL慢查询快照脚本
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (3)(3.5) 遥测无线电区域条例
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (三)docker:Dockerfile构建容器运行jar包
  • (十) 初识 Docker file
  • (转)jdk与jre的区别
  • (转)memcache、redis缓存
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .gitattributes 文件
  • .net core Swagger 过滤部分Api