Linux(ubuntu)下git / github/gitee使用

先附上git命令

linux@chenxiao:~$ cd Templates/

先进入一个目录,也可mkdir新建一个目录:用于接下来初始化为git可以管理的仓库

这个目录就是所说的工作目录,指当前正在进行开发的项目的本地目录。


linux@chenxiao:~/Templates$ git init
已初始化空的 Git 仓库于 /home/linux/Templates/.git/

1. 在终端输入  git init     初始化git仓库 


linux@chenxiao:~/Templates$ ll -a
总用量 16
drwxr-xr-x  3 linux linux 4096 12月 29 10:13 ./
drwxr-xr-x 38 linux linux 4096 12月 29 10:12 ../
drwxrwxr-x  7 linux linux 4096 12月 29 10:13 .git/

终端输入 ll- a查看一下隐藏文件,发现新产生一个 .git/文件。.git就是我们所说的本地仓库(版本库)

仓库(Repository)是 Git 用来存储项目历史记录和版本信息的地方。它是存储在工作目录之外的一个隐藏目录(.git文件夹)。仓库包含了项目的历史提交记录、分支、标签等重要信息


linux@chenxiao:~/Templates$ vim test12-29.cpp

创建一个新文件   test12-29.cpp   随意写点数据进去


linux@chenxiao:~/Templates$ git add test12-29.cpp

2. 终端输入 git add test12-29.cpp  将文件更改添加到 Git 的暂存区


linux@chenxiao:~/Templates$ git commit -m "first commit"
[master (根提交) 5bb74d1] first commit1 file changed, 6 insertions(+)create mode 100644 test12-29.cpp

3. 输入 git commit -m " " 它用于将更改提交到本地仓库(注释内容随便写,一般写我们本次提交的目的,修改了哪里) 根提交就是第一次初始提交


linux@chenxiao:~/Templates$ git status 
位于分支 master
无文件要提交,干净的工作区

4. 输入 git status  查看当前分支的状态,这将显示您当前工作目录与仓库的差异,例如哪些文件已被修改、哪些文件已被添加到暂存区、哪些文件已被删除等等。

上述的输出代表 :目前没有进行任何修改或添加操作,或者所有的修改和添加操作都已经成功提交到本地仓库中了。


linux@chenxiao:~/Templates$ vim test12-29.cpp

接下来修改下 test12-29.cpp文件。vim打开文件后,随便改动下内容。

linux@chenxiao:~/Templates$ git status 
位于分支 master
尚未暂存以备提交的变更:(使用 "git add <文件>..." 更新要提交的内容)(使用 "git restore <文件>..." 丢弃工作区的改动)修改:     test12-29.cpp修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

修改之后再查看状态。输出信息表示:文件已经被修改过,但是还没有被添加到暂存区中用于下一次提交。想要再次提交,就要先 git add 先把改动的文件添加到暂存区。然后再使用 git commit 命令将更改提交到本地仓库中


linux@chenxiao:~/Templates$ git add test12-29.cpp 
linux@chenxiao:~/Templates$ git status 
位于分支 master
要提交的变更:(使用 "git restore --staged <文件>..." 以取消暂存)修改:     test12-29.cpp

添加暂存区后再git status查看下状态,输出信息显示当前分支是 master,并且工作区的 test12-29.cpp 文件已经被修改且已添加到暂存区中,可以进行下一次提交


linux@chenxiao:~/Templates$ git commit -m "second commit"
[master 0d125d6] second commit1 file changed, 2 insertions(+), 1 deletion(-)

接下来就可以用 git commit -m 进行提交:提交信息显示了提交的哈希值(0d125d6)、修改了的文件数目以及插入和删除的行数。

linux@chenxiao:~/Templates$ git status 
位于分支 master
无文件要提交,干净的工作区

再次查看状态,显示干净的工作区。


linux@chenxiao:~/Templates$ git log
commit 0d125d65e3b506f0cd0eb787c3dfbbf841947899 (HEAD -> master)
Author: chenxiao <925678073@qq.com>
Date:   Fri Dec 29 11:02:49 2023 +0800second commitcommit 5bb74d1951d5bd7dc7ecf6afe4ffee18d882fb90
Author: chenxiao <925678073@qq.com>
Date:   Fri Dec 29 10:41:00 2023 +0800first commit

5. 版本穿越 先使用 git log 命令可以查看项目的提交历史。每个提交记录包含一些关键信息,包括提交的哈希值、作者、日期和提交消息,还可以加上--pretty=oneline参数得到如下输出

linux@chenxiao:~/Templates$ git log --pretty=oneline
0d125d65e3b506f0cd0eb787c3dfbbf841947899 (HEAD -> master) second commit
5bb74d1951d5bd7dc7ecf6afe4ffee18d882fb90 first commit

还可以用git reflog查看 ,这里不演示了,自己敲一下就知道了

使用git reset命令,将版本回退:在使用 git reset 命令时,您需要提供一个有效的提交(commit)标识符或引用,如提交的哈希值、分支名或标签名。例如下面的 --hard HEAD^表示返回啥哪个一次提交的位置。--hard 选项时,请注意,您将不可恢复地丢失之前对代码所做的更改

linux@chenxiao:~/Templates$ git reset --hard HEAD^
HEAD 现在位于 5bb74d1 first commit

一般使用 git reset --hard 版本号   穿越到指定版本

再次 git reflog 查看一下,发现moving to 49aa20a 说明移动了. 此时文件内容为这次提交的内容。 

注:HEAD 是一个指向当前所在分支的指针,git版本控制的本质就是指针




git 分支

1.查看分支 git branch -v 

linux@chenxiao:~/Templates$ git branch -v
* master 49278f6 第二次提交

2.创建分支   git branch chenxiaobranch    其中chenxiaobranch是自己起的分支名

linux@chenxiao:~/Templates$ git branch chenxiaobranch

3.切换分支 git checkout chenxiaobranch

linux@chenxiao:~/Templates$ git branch -vchenxiaobranch 49278f6 第二次提交
* master         49278f6 第二次提交
linux@chenxiao:~/Templates$ git checkout chenxiaobranch 
切换到分支 'chenxiaobranch'
linux@chenxiao:~/Templates$ git branch -v
* chenxiaobranch 49278f6 第二次提交master         49278f6 第二次提交

切换分支后,注意 * 的位置,代表位于当前分支

4.合并分支

合并前先在chenxiaobranch分支下对文件进行修改。修改之后与master合并

linux@chenxiao:~/Templates$ git checkout master 
切换到分支 'master'
linux@chenxiao:~/Templates$ git merge chenxiaobranch 
更新 49278f6..3d5a58e
Fast-forwardgit.cpp | 1 +1 file changed, 1 insertion(+)

合并冲突:如果两个分支都对某个文件同位置进行了修改,并且都把修改commit提交到了本地

合并后会出现冲突。需要人为决定使用哪个为新代码内容

nux@chenxiao:~/Templates$ git merge chenxiaobranch 
自动合并 git.cpp
冲突(内容):合并冲突于 git.cpp
自动合并失败,修正冲突然后提交修正的结果。


如何推送到github 远程仓库呢???前提是前面add commit 等命令都执行完。

使用 SSH 协议进行推送 ,在终端依次输入如下命令

1.git remote set-url origin git@github.com:xovt/MyRepository  本地仓库与远程仓库关联 

origin 是远程仓库的名称      xovt/MyRepository 代表   git账户名/存储库名

在github中这里新建存储库

进入自己的存储库,点击绿色的code 就能看到SSH的连接地址。也可像我那样手动添加。

 我是写的这个,两个都一样。区别就是后者多了.git
2.git push origin master    将本地分支的提交推送到远程仓库。origin 是远程仓库的名称,master 是要推送的本地分支 。  执行这个命令后本地提交就推送到GitHub的仓库了,这里我自己的GitHub仓库设置的就是  xovt/MyRepository      

3.克隆(下载)git clone 存储库的路径(本次我用的是点击绿色Code的路径)

linux@chenxiao:~/Templates$ git clone git@github.com:xovt/MyRepository.git
正克隆到 'MyRepository'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 8 (delta 1), pack-reused 0
接收对象中: 100% (8/8), 24.65 MiB | 3.41 MiB/s, 完成.
处理 delta 中: 100% (1/1), 完成.
linux@chenxiao:~/Templates$ ls
git.cpp  MyRepository

克隆成功,查看在输入克隆命令的目录下下载,并自动创建与存储库同名的目录,包含所有文件


gitee

gitee 也是一个道理 

git remote add _origin git@gitee.com:chenxiaoubuntu/onboard.git

git push _origin cxbranch

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

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

相关文章

面试算法78:合并排序链表

题目 输入k个排序的链表&#xff0c;请将它们合并成一个排序的链表。 分析&#xff1a;利用最小堆选取值最小的节点 用k个指针分别指向这k个链表的头节点&#xff0c;每次从这k个节点中选取值最小的节点。然后将指向值最小的节点的指针向后移动一步&#xff0c;再比较k个指…

设计模式-Java版本

文章目录 前言设计原则单一职责原则开闭原则里氏替换原则迪米特法则接口隔离原则依赖倒置原则 设计模式构建类型工厂模式抽象工厂建造者模式原型模式单例模式 结构型适配器模式桥接模式组合模式装饰器模式代理模式外观模式享元模式 行为模式责任链模式命令模式迭代器模式中介模…

【Linux】缓冲区理解

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 1. 一个奇怪的现象2. 为什么要有缓冲区3. 缓冲区的刷新策略4. 缓冲区在哪里5. 实现一…

企业私有云容器化架构

什么是虚拟化: 虚拟化&#xff08;Virtualization&#xff09;技术最早出现在 20 世纪 60 年代的 IBM 大型机系统&#xff0c;在70年代的 System 370 系列中逐渐流行起来&#xff0c;这些机器通过一种叫虚拟机监控器&#xff08;Virtual Machine Monitor&#xff0c;VMM&#x…

Mybatis插件入门

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

前端三件套html/css/js的基本认识以及示例程序

简介 本文简要讲解了html,css,js.主要是让大家简要了解网络知识 因为实际开发中很少直接写html&css,所以不必过多纠结,了解一下架构就好 希望深度学习可以参考MDN和w3school HTML 基础 HTML (Hyper Text Markup Language) 不是一门编程语言,而是一种用来告知浏览器如…

Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error

大致报错日志如下&#xff1a; The last packet successfully received from the server was 11 milliseconds ago. The last packet sent successfully to the server was 10 milliseconds ago.at sun.reflect.GeneratedConstructorAccessor275.newInstance(Unknown Source)…

数据结构之树 --- 二叉树

目录 定义二叉树的结构体 二叉树的遍历 递归遍历 非递归遍历 链式二叉树的实现 二叉树的功能接口 先序遍历创建二叉树 后序遍历销毁二叉树 先序遍历查找树中值为x的节点 层序遍历 上篇我们对二叉树的顺序存储堆进行了讲述&#xff0c;本文我们来看链式二叉树。 定…

OpenHarmony 应用通用签名

一.背景 由于hap包需要经过签名才能安装到设备上&#xff0c;在DevEco Studio可以进行自动签名&#xff0c;但是自动签名只能安装在当前的设备上&#xff0c;在其他设备上不能安装&#xff0c;所以我们需要进行通用的手动签名&#xff0c;手动签名HarmonyOS和OpenHarmony流程是…

golang 图片加水印,字体文件从哪里找

鼠标左键双击此电脑图标在此电脑文本框输入电脑默认字体地址&#xff1a;C:\Windows\Fonts找到需要用到的字体文件&#xff0c;复制到指定文件夹

Halcon阈值处理的几种分割方法threshold/auto_threshold/binary_threshold/dyn_threshold

Halcon阈值处理的几种分割方法 文章目录 Halcon阈值处理的几种分割方法1. 全局阈值2. 基于直方图的自动阈值分割方法3. 自动全局阈值分割方法4. 局部阈值分割方法5. var_threshold算子6 . char_threshold 算子7. dual_threshold算子 在场景中选择物体或特征是图像测量或识别的重…

uniapp中uview组件库的Search 搜索 的用法

目录 基本使用 #设置输入框形状 #是否开启清除控件 #是否开启右边控件 #自定义样式 API #Props #Events 基本使用 通过placeholder参数设置占位内容通过v-model双向绑定一个变量值&#xff0c;设置初始化时搜索框的值&#xff0c;如果初始内容为空&#xff0c;那么请绑…