Git常用命令用法

参考视频:真的是全能保姆

git、github 保姆级教程入门,工作和协作必备技术,github提交pr - pull request_哔哩哔哩_bilibili

1.Git初始化

首先设置名称和邮箱。然后初始化一下,然后就创建了一个空的Git仓库。 

PS D:\golang\otherProjects\ginchat> git version
git version 2.42.0.windows.1
PS D:\golang\otherProjects\ginchat> git config --global user.name "Orange"
PS D:\golang\otherProjects\ginchat> git config --global user.email "xxxxx@qq.com"
PS D:\golang\otherProjects\ginchat> git config
PS D:\golang\otherProjects\ginchat> git init
Initialized empty Git repository in D:/golang/otherProjects/ginchat/.git/

可以在当前项目目录里发现一个隐藏文件夹.git,这个文件里保存项目的每个版本和变化

2.Git暂存、提交、日志

1)第一版本

git提交到暂存区

git add + 想存储的文件
git add . //存储当前目录所有文件

2) 

 git提交,之后会出现vim编辑器编写文件说明,此处是linux命令常规操作

git commit

如果在命令行编辑,遵守vim规范。如果在vscode编辑,编辑完关闭即可。随后就自动开始提交过程。

3) 

 git log查看提交日志信息,此时完成了一个版本的提交

PS D:\golang\otherProjects\ginchat> git log
commit 078d952815dcec6a0c25e668ad1f5ad72ddb6874 (HEAD -> master)
Author: Orange <xxxx@qq.com>
Date:   Tue Sep 5 03:03:19 2023 +0800版本v0.1,第一次提交
PS D:\golang\otherProjects\ginchat> 

4)第二版本

vscode版本新增文件显示绿色

修改一个文件会显示橙色M

5)第二次提交

第二次暂存和提交。用-m + 说明的形式可以直接代替上面的vim文档说明编写。

PS D:\golang\otherProjects\ginchat> git add .
PS D:\golang\otherProjects\ginchat> git commit -m "v0.2第二次提交"
[master a1a2abf] v0.2第二次提交1 file changed, 1 insertion(+), 1 deletion(-)

git log查看 

PS D:\golang\otherProjects\ginchat> git log
commit a1a2abf9894af11d40fcc5dc76775e0c793c8f30 (HEAD -> master)
Author: Orange <xxx@qq.com>
Date:   Tue Sep 5 03:13:00 2023 +0800v0.2第二次提交commit 078d952815dcec6a0c25e668ad1f5ad72ddb6874
Author: Orange <xxx@qq.com>
Date:   Tue Sep 5 03:03:19 2023 +0800
:

6)第三次提交

一般编写说明按照如下的规范来写

写明修正了什么文件,修改了什么内容

 git commit -m "fix(version):change content"

PS D:\golang\otherProjects\ginchat> git add .
warning: in the working copy of 'gitLog', LF will be replaced by CRLF the next time Git touches it
PS D:\golang\otherProjects\ginchat> git commit -m "fix(version):change content"
[master 305c688] fix(version):change content1 file changed, 11 insertions(+)create mode 100644 gitLog

7)

vscode自带版本控制,左侧工具栏可以看到当前版本和上一版本对比。

点击勾号可以直接暂存和提交

3.回退版本并清空之后版本

回退版本,版本id可以在日志里看

git reset --hard + 版本id

回退之后项目变成当时版本,并且之后的日志都清空了,相当于回到那个时间点。

PS D:\golang\otherProjects\ginchat> git reset --hard 305c688213cd0321c23112e48fba0ffb8da566c3
HEAD is now at 305c688 fix(version):change content

4.切换版本和分支,不会清除其他版本

创建分支,有点像数据结构的树,加一个分支

git branch + 版本号

PS D:\golang\otherProjects\ginchat> git branch 0.3
PS D:\golang\otherProjects\ginchat> git branch 0.4
查看分支和切换分支,master是主支,其他是分支
PS D:\golang\otherProjects\ginchat> git branch -a 0.30.4
* master
PS D:\golang\otherProjects\ginchat> git checkout 0.3
Switched to branch '0.3'
M       version.txt
PS D:\golang\otherProjects\ginchat> git checkout master
Switched to branch 'master'
M       version.txt

5.合并分支

把分支版本合并到主版本,如图,每个人用一个分支版本开发自己的功能,最后老板把五个版本一合并就获得所有功能。

 git merge +版本号

PS D:\golang\otherProjects\ginchat> git merge 0.3
Already up to date.

所以为了方便团队开发和版本合并,就会建立服务器作为git仓库

6.上传到Github

git push 命令 | 菜鸟教程 (runoob.com)

echo "# Ginchat" >> README.md
git init
git add README.md
git commit -m "first commit" 
git branch -M main   //创建main分支,并设为主枝
git remote add origin https://github.com/BigBigOrangeSama/Ginchat.git  //添加远程仓库地址设代号为origin
git push -u origin main  //把项目上传到github的仓库里
//然后会让你输入账号密码

上传结果:上传成功,到github上查看

PS D:\golang\otherProjects\ginchat> git push -u origin master
info: please complete authentication in your browser...
Enumerating objects: 1260, done.
Counting objects: 100% (1260/1260), done.
Delta compression using up to 16 threads
Compressing objects: 100% (1228/1228), done.
Writing objects: 100% (1260/1260), 79.44 MiB | 2.88 MiB/s, done.
Total 1260 (delta 153), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (153/153), done.
To https://github.com/BigBigOrangeSama/Ginchat.git* [new branch]      master -> master
branch 'master' set up to track 'origin/master'.

7.项目克隆到本地

1)自己仓库下载到本地

如果你要参与某人的开源项目,把他的项目fork到自己的仓库,然后复制项目http链接。

用vscode打开一个空文件夹,在这个文件夹下的终端使用git clone命令

git clone + 项目http链接 + .    点代表当前文件夹

PS D:\golang\otherProjects\Git-demo> git clone https://github.com/BigBigOrangeSama/Git-demo.git .
Cloning into '.'...
remote: Enumerating objects: 1632, done.
remote: Counting objects: 100% (466/466), done.
remote: Compressing objects: 100% (276/276), done.
remote: Total 1632 (delta 207), reused 288 (delta 175), pack-reused 1166
Receiving objects: 100% (1632/1632), 284.21 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (439/439), done.

2)加入别人的仓库链接

做别人的项目的时候加入上游代码库http链接

PS D:\golang\otherProjects\Git-demo> git remote add upstream https://github.com/midorg-com/re01.git
PS D:\golang\otherProjects\Git-demo> git remote -v                                                
origin  https://github.com/BigBigOrangeSama/Git-demo.git (fetch)
origin  https://github.com/BigBigOrangeSama/Git-demo.git (push)
upstream        https://github.com/midorg-com/re01.git (fetch)
upstream        https://github.com/midorg-com/re01.git (push)

创建一个分支,然后随便写一点东西,然后add和commit

然后提交到自己fork的那个仓库里去

PS D:\golang\otherProjects\Git-demo> git checkout -b tx
Switched to a new branch 'tx'
PS D:\golang\otherProjects\Git-demo> git add .
PS D:\golang\otherProjects\Git-demo> git commit -m "add(test)"
On branch tx
nothing to commit, working tree clean
PS D:\golang\otherProjects\Git-demo> git add .
PS D:\golang\otherProjects\Git-demo> git commit -m "add(1111):xxxx"
[tx 617a1e7] add(1111):xxxx1 file changed, 3 insertions(+)create mode 100644 members/1111.jsonPS D:\golang\otherProjects\Git-demo> git remote -v
origin  https://github.com/BigBigOrangeSama/Git-demo.git (fetch)
origin  https://github.com/BigBigOrangeSama/Git-demo.git (push)
upstream        https://github.com/midorg-com/re01.git (fetch)
upstream        https://github.com/midorg-com/re01.git (push)

上传到仓库

PS D:\golang\otherProjects\Git-demo> git push origin tx            
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 365 bytes | 365.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote:
remote: Create a pull request for 'tx' on GitHub by visiting:
remote:      https://github.com/BigBigOrangeSama/Git-demo/pull/new/tx
remote:
To https://github.com/BigBigOrangeSama/Git-demo.git* [new branch]      tx -> tx

3)合并

点击PR拉取请求

 创建拉取请求,让项目主人把你修改的分支合并到主枝里去。显示able to merge就是可以提交

然后写上修改信息提交即可,等待项目主人合并

4)如果显示不能pr()

没有这个able to merge

可能是这段时间开源项目已经commit过了,导致版本不一致,需要你更新合并最新upstream链接,然后再提交。

 git fetch upstream

git merge 最新分支

git push

PS D:\golang\otherProjects\Git-demo> git fetch upstream
From https://github.com/midorg-com/re01* [new branch]      main       -> upstream/main
PS D:\golang\otherProjects\Git-demo> git merge upstream/main 
Already up to date.
PS D:\golang\otherProjects\Git-demo> git push xxxxxxx   xxxx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/122060.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】地址空间概念

目录 前言&#xff1a; 地址空间回顾 验证&#xff1a;一个变量是否会有两个值&#xff1f; 一. 什么是地址空间 虚拟地址与物理地址之间的关系 二. 地址空间是如何设计的 1. 回答一个变量两个值 2.扩展 继续深入理解 三. 为什么要有地址空间 原因&#xff1a; 1. 使…

【探索Linux】—— 强大的命令行工具 P.7(进程 · 进程的概念)

阅读导航 前言一、冯诺依曼体系结构二、操作系统&#xff08;OS&#xff09;1. 概念 三、进程1. 进程的概念2. PCB&#xff08;Process Control Block&#xff09;3. 查看进程 四、fork函数1. 函数简介2. 调用方式3. 返回值4. 使用示例 五、进程的几种状态1. 状态简介2. 进程状…

react中使用cytoscape

1. 安装 cytoscape npm install cytoscape 2. 使用 import React, { useEffect, useRef, useState } from "react"; import cytoscape from "cytoscape";const peopleList [{"data": {"id": "1","label": &qu…

三步搭建个人网站并发布上线【内网穿透】

三步搭建个人网站并发布上线【内网穿透】 文章目录 三步搭建个人网站并发布上线【内网穿透】前言一、在本地电脑上制作一个网站二、使用WordPress建立网站三、通过cpolar建立的数据隧道发布到公网上 前言 在这个个性飞扬的时代&#xff0c;每个人都希望拥有表现自我的平台&…

git快速使用

1、下载git 设置签名 2、基本概念 工作区&#xff1a;写代码的地方。 暂存区&#xff1a;.git的.index 工作区&#xff1a;.git 3、常用操作 本地codinggit init&#xff0c; 初始化一个本地仓库&#xff0c;项目根目录下会出现个.gitgit remote add origin gitgithub.com…

Git的基本使用笔记——狂神说

版本控制 版本迭代&#xff0c; 版本控制( Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史&#xff0c;方便查看更改历史记录&#xff0c;备份以便恢复以前的版本的软件工程技术。 实现跨区域多人协同开发 追踪和记载一个或者多个文件的…

网络类型+二层封装技术

一、网络类型分类 1、点到点网络 在一个网段中&#xff0c;只能部署两个节点&#xff08;两个IP&#xff09;&#xff0c;如GRE环境就属于虚拟的点到点网络类型&#xff0c;通常是串线连接。 如下图当前只存在两个节点&#xff0c;但并不是点到点&#xff0c;因为它中间网段…

SAP message-06 027 供应商 还未为采购组织 创建

目录 错误信息 一、错误原因 二、修正 错误信息 When creating a RFQ in ME41 for a vendor that is not assigned to the Purchasing Organization, error "Vendor & has not been created for purch. organization" is not raised. Supplier AEQI1 has not be…

css之层叠上下文

之前调元素的显示优先级时&#xff0c;只会默默的调z-index以达到效果&#xff0c;但有时不生效&#xff0c;又不知道根因。刚好详细了解到层叠上下文&#xff0c;可以解释此类问题。 什么是层叠上下文&#xff1f; 在CSS2.1规范中&#xff0c;每个盒模型的位置是三维的&…

SpringMVC_SSM整合

一、回顾SpringMVC访问接口流程 1.容器加载分析 容器分析 手动注册WebApplicationContext public class ServletConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationContext() {//获取SpringMVC容器An…

Spark 6:Spark SQL DataFrame

SparkSQL 是Spark的一个模块, 用于处理海量结构化数据。 SparkSQL是用于处理大规模结构化数据的计算引擎 SparkSQL在企业中广泛使用&#xff0c;并性能极好 SparkSQL&#xff1a;使用简单、API统一、兼容HIVE、支持标准化JDBC和ODBC连接 SparkSQL 2014年正式发布&#xff0c;当…

使用webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

1、前言 在我们使用 Selenium 进行 UI 自动化测试时&#xff0c;常常会因为浏览器驱动与浏览器版本不匹配&#xff0c;而导致自动化测试无法执行&#xff0c;需要手动去下载对应的驱动版本&#xff0c;并替换原有的驱动&#xff0c;可能还会遇到跨操作系统进行测试的时候&…

LeetCode(力扣)17. 电话号码的字母组合Python

LeetCode17. 电话号码的字母组合 题目链接代码 题目链接 https://leetcode.cn/problems/letter-combinations-of-a-phone-number/ 代码 class Solution:def __init__(self):self.letterMap ["", # 0"", # 1"abc", # 2"def&qu…

aop中获取@PathVariable参数

1.controller中的声明 2.aop中获取 RequestAttributes attributes RequestContextHolder.getRequestAttributes(); ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes)attributes; HttpServletRequest request servletRequestAttributes.getReq…

深圳-海岸城购物中心数据分析

做数据分析的时候&#xff0c;如果要对商场进行分析&#xff0c;可以从这些数据纬度进行分析&#xff0c;如下图所示&#xff1a; 截图来源于数位观察&#xff1a;https://www.swguancha.com/

【Linux】进程基础概念【下篇】

目录 1. 基本概念 2. 常见环境变量 常见环境变量指令 &#xff08;1. PATH &#xff08;2. HOME &#xff08;3. SHELL 3.环境变量的组织形式 &#xff08;1&#xff09;通过代码如何获取环境变量 &#xff08;2&#xff09;普通变量与环境变量的区别 &#xff08;3&…

C# winform控件和对象双向数据绑定

实现目的&#xff1a; 控件和对象双向数据绑定 实现结果&#xff1a; 1. 对象值 -> 控件值 2. 控件值 -> 对象值 using System; using System.Windows.Forms;namespace ControlDataBind {public partial class MainForm : Form{People people new People();public Mai…

微信小程序 选择学期控件 自定义datePicker组件 不复杂

我的时间选择组件在common文件夹里 datePicker组件代码 html: <view class"date_bg_view"> </view> <view class"date_content"><view class"date_title"><image src"/image/icon_close_black.png" clas…

亲测有效:虚拟机安装gcc,报错Could not retrieve mirrorlist http://mirrorlist.centos.org

&#xff08;网卡配置资料&#xff09; 原因&#xff1a; 网络问题 报错详情&#xff1a; One of the configured repositories failed (未知),and yum doesnt have enough cached data to continue. At this point the onlysafe thing yum can do is fail. There are a few …

Linux之NFS服务器

目录 Linux之NFS服务器 简介 NFS背景介绍 生产应用场景 NFS工作原理 NFS工作流程图 流程 NFS的安装 安装nfs服务 安装rpc服务 启动rpcbind服务同时设置开机自启动 启动nfs服务同时设置开机自启动 NFS的配置文件 主配置文件分析 示例 案例 --- 建立NFS服务器&#…