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

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

相关文章:

  • Java:表单生成excel文档 poi 通用
  • 001、安装 Rust
  • 【软件测试】为bug而生
  • HarmonyOS page生命周期函数讲解
  • 水准网、平面导线平差
  • 双击编辑el-table的单元格数据
  • 【ADB】电脑通过ADB向手机传输文件
  • Python 实现 PDF 到 Word 文档的高效转换(DOC、DOCX)
  • GET和POST请求
  • Linux驱动开发学习笔记6《蜂鸣器实验》
  • 智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 边缘计算网关:重新定义物联网数据处理
  • WPS中如何根据身份证号生成出生日期并排序
  • android studio官方网站关于android SDK环境变量的设置说明晦涩难懂
  • SQL server 数据库练习题及答案(练习3)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Docker下部署自己的LNMP工作环境
  • gops —— Go 程序诊断分析工具
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • in typeof instanceof ===这些运算符有什么作用
  • Invalidate和postInvalidate的区别
  • JavaScript HTML DOM
  • js作用域和this的理解
  • maven工程打包jar以及java jar命令的classpath使用
  • Mithril.js 入门介绍
  • Mocha测试初探
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • V4L2视频输入框架概述
  • VUE es6技巧写法(持续更新中~~~)
  • vue-cli在webpack的配置文件探究
  • 来,膜拜下android roadmap,强大的执行力
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 什么软件可以剪辑音乐?
  • 使用docker-compose进行多节点部署
  • 一道闭包题引发的思考
  • 原生Ajax
  • ###C语言程序设计-----C语言学习(3)#
  • $.ajax()参数及用法
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (libusb) usb口自动刷新
  • (办公)springboot配置aop处理请求.
  • (分布式缓存)Redis持久化
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (一)80c52学习之旅-起始篇
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .Net core 6.0 升8.0
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET开源快速、强大、免费的电子表格组件
  • .NET文档生成工具ADB使用图文教程
  • .NET运行机制