git与github(结合clion操作)
对自己学习git的一个记录,由于刚开始接触git,所以没有对于git做深入解释和说明,仅供参考,如有理解不对的地方或者需要改进的地方敬请指出。
用到的git命令:
- git init //初始化
- git add . //添加所有文件
- git add 文件名 //添加指定文件
- git commit -m " " //提交,引号里写提交说明
- 本地和github仓库关联
git branch -M main
git remote add origin https://github.com/flyfirehong/git_Example.git //后面的https输你自己仓库的
git push -u origin main
- git log //查看当前分支下的提交记录
- git checkout 分支名 //切换分支
- git reset 提交的id号 //回退提交
- git stash save “” //引号里放对于此次暂存的说明,通常git reset后对于未
被git管理的进行处理 - git stash list //查看暂存的记录
1 本地的修改与提交
1.mkdir在当前文件夹下新建一个目录,ls查看
2.cd进入到目录下,用git init使得目录下的内容全部交由git托管
3.个人目前常用编辑器为clion,因此这里用clion打开git_Example项目,新建一个hello.cpp的文件,可以看到文件的显示目前是红色的,就是没有被管理的文件
4.要让它被管理可以用add操作
5.此时文件的颜色就变成了绿色,表示该文件已经交由git管理
6.原本新建的文件是空的,现在我们要对文件进行修改,比如输出一个hello world,修改完成之后,点右上角的绿色对勾进行提交(相当于存档),这个时后左下角会出现一个修正的区域,这个地方可以写对于本次提交的说明
可以查看我们的提交记录,并且提交后的文件名会看到变成了白色的
之后我们再新建立的文件也是同样的操作,用编辑器的操作比较简单,在命令行中也可以完成相同的操作,命令如下:
//比如当前新建了一个main.cpp,但是未添加也未提交
git add main.cpp
//git add . 这个添加所有文件
git commit -m "引号里填你的提交说明" //提交
2 github的操作
1.github上新建一个空仓库,使用三条命令进行关联和推送
git branch -M main
git remote add origin https://github.com/flyfirehong/git_Example.git //后面的https输你自己仓库的
git push -u origin main
刷新自己的仓库就可以看到这样
3分支操作
1.创建分支
可以通过IDE来直接新建一个分支,或者用git checkout -b 分支名
这样的命令行操作来切换到一个新的分支上,这里新建一个dreamer分支并切过去
2.分支合并的冲突和解决(merge)
现在已经在我们的dreamer分支上了,对之前的helo.cpp进行修改,添加一行输出并提交,这个时候如果切换回main分支上依旧只能看到第一次提交的记录
但是我们考虑到多人协作的时候,可能还有别的人在主分支上也对hello.cpp进行了修改,我们右键切换回main分支,并在分支中对hello.cpp进行修改和提交,这里也可以在命令行用git checkout main切换
这个时候就出现了两个分支修改了相同文件的相同位置,合并就会,产生冲突,接下来用命令行进行演示,git log可以查看当前分支下的提交记录,每一次的提交记录还可以显示这次提交的id,这个id在合并的时候要用。用git checkout dreamer切换到dreamer分支上,git log查看提交记录并把最后一次提交的id号复制下来,再git checkout main到main分支,在这里git merge id号进行合并。这个时候可以看到它提示了合并冲突conflict,需要我们解决冲突
与此同时还可以看到IDE中出现了这样的显示,head处提示了主分支中的内容,=====下面提示了要合并分支的内容,这个时候就需要我们决定两个修改里面到底要保留谁,当然也可以都保留,手动合并就是选择我们要保留的代码,然后再把>>>>>, ======, <<<<<<这些提示行给去掉。最后重新git add 和 git commit就行了
在解决冲突之后就是这个样子了,并且不会再显示分支合并中了
3. 合并回退
有的时候在处理冲突完成后发现我们的处理方式不太合理,这个时候需要回退到之前合并前的节点,就是main分支上进行第二次提交那里。首先git log找到我们要回退的那个节点的id号(这里提示一下要按q进行退出查看),然后git reset 节点id,对于git reset的参数:
- Mixed 默认参数,将一些文件的变更放入到暂存区
- Soft 将文件变更放到工作区
- hard 什么都不会存
如果想要git reset但是工作区有一些东西还没有提交,那么就可以用git stash save来做暂存,就是不管里面有什么修改,但是暂时不需要用到,之后可以用git stash list来查看我们暂存的东西。
这个时候已经回退成功了,同时在IDE里可以看到提交记录也发生了变化,退回到了之前的状态
然后再切到dreamer分支上,如果提示有东西没有保存就再用git stash save来存一下,切到dreamer分支后,这回用IDE也可以进行回退,在我们想要回退过去的节点那里右键进行回退
4.rebase合并
我其实还没咋用过这个,这个合并操作方式和merge的操作感觉没啥区别,两种合并的区别就是merge回产生一个合并节点,rebase就没有而且也不像merge那样可以清楚的看到分支的流动过程,所以用的还是merge合并多,其他的区别暂时还不太清楚,这里也就不再演示了。
5.一些无关紧要的东西
在IDE中用git的方式简单的多,比如上边栏的git中也有合并的选项,就不需要在命令行中敲,那么为什么还要演示命令行操作呢,emmm,我想可能是因为黑格尔说过存在即为合理,学都学了,就还是一并记录吧
6.git reflag
查看到所有历史版本信息。根据对应的id号实现我们想要的reset回退
7.多次提交合并到一次提交
这个本质上就是git reset然后再对未管理的文件进行重新提交,比如我们想把2-6次的提交压缩成一次,那么我们就回退到第一次提交,这个时候可以看到2-6次提交的文件都变成了红色,就是未被git管理的文件,这个时候就添加再提交,就变成了一次提交,完成了一个压缩提交的过程
git与github(结合clion操作)的更多相关文章
- Git版本控制 Git、github,gitlab相关操作
目录 关于版本控制 版本管理工具 集中式管理 分布式管理 git版本管理 git介绍 软件安装 Git工作状态 原理流程步骤 git基本操作 对文件进行修改 分支 共享仓库 创建共享仓库: 共享仓库上 ...
- 使用git和github管理自己的项目---基础操作学习[转]
原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...
- Git和Github的介绍、简单操作、冲突(上)
目的: 1.git与github简介 2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe 5.Git常用命令 5.1Git命令使用场景 5. ...
- Git TortoiseGit github 操作
由于公司采用了分布式架构,选择的是gitlab git 来管理代码等工作,鉴于github和gitlab的相似性,网上查看好多都是用git的命令上传,或者是一部分,为此,借鉴多方网络,并进行实际操作, ...
- 简单使用Git和Github来管理自己的代码和读书笔记
原文链接:http://my.oschina.net/bxxfighting/blog/378196 先注册github.com的账号官方网站: https://github.com/ 注册界面, ...
- git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议
1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...
- git与github安装、配置、pull、push
操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...
- 转:sublime上使用git连接github
"工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...
- git与github使用
Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六. ...
- linux下git以及github的连接与使用
简单理解 Git 的思想和基本的工作原理,能够更好的进一步和使用Git.在开始学习Git 的时候,最好不要把Git的各种概念和其他的版本控制系统诸如 Subversion 等相比,否则容易混淆每个操作 ...
随机推荐
- 【VUE】关于pinia代替vuex
官方文档:https://pinia.web3doc.top/ 知乎讲解:https://zhuanlan.zhihu.com/p/533233367
- CH573 CH582 CH579蓝牙主机(Central)例程讲解一(主机工作流程)
蓝牙主机,顾名思义,就是一个蓝牙主设备,与从机建立连接进行通信,可以接收从机通知,也可以给从机发送信息,可将Central例程和Peripheral例程结合使用. 蓝牙主机例程的工作流程大致如下: 一 ...
- 编译GO报错:cgo: C compiler
cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH ...
- [UnityAI]行为树的中断机制
参考链接: https://www.cnblogs.com/01zxs/p/9863715.html https://blog.csdn.net/AcmHonor/article/details/12 ...
- GRAPH ATTENTION NETWORKS(GAT)图注意力网络
摘要: 我们提出一个图注意力网络,一个新的用来操作图结构数据的神经网络结构,它利用"蒙面"的自我注意力层来解决基于图卷积以及和它类似结构的短板.通过堆叠一些层,这些层的节点能够参与 ...
- 全网最详细中英文ChatGPT接口文档(一)开始使用ChatGPT——导言
目录 Introduction 导言 Overview 概述 Key concepts 关键概念 Prompts and completions 提示和完成 Tokens 标记/符号 Models 模 ...
- University of Toronto Scarborough Campus December 7, 2017 CSC C73 Final Examination Instructor: Vassos Hadzilacos
https://app.yinxiang.com/shard/s59/res/8a11b895-19b5-4ca1-aefe-10b5985b8af9/CSCC73 Final 17.pdf 自己尝试 ...
- java网络编程--4 UDP
java网络编程--4 UDP 1.7.UDP 发短信:不用连接,但是需要知道对方的地址 主要包含两个类:DatagramPacket 和 DatagramSocket 发送消息 发送端: packa ...
- react状态管理器(分模块)之redux和redux + react-redux + reducer和redux + react-redux + reducer分模块 + 异步操作redux-thunk
1.回顾 cnpm i redux react-redux redux-thunk -S store/index.js src/index.js src/views/home/index.jsx + ...
- Centos7安装配置MySQL 5.6
Centos7安装配置MySql 5.6 首先下载MySql5.6的安装包,具体安装方式分为yum安装与离线安装.在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL. ...