对自己学习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操作)的更多相关文章

  1. Git版本控制 Git、github,gitlab相关操作

    目录 关于版本控制 版本管理工具 集中式管理 分布式管理 git版本管理 git介绍 软件安装 Git工作状态 原理流程步骤 git基本操作 对文件进行修改 分支 共享仓库 创建共享仓库: 共享仓库上 ...

  2. 使用git和github管理自己的项目---基础操作学习[转]

    原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...

  3. Git和Github的介绍、简单操作、冲突(上)

    目的:   1.git与github简介  2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe   5.Git常用命令 5.1Git命令使用场景 5. ...

  4. Git TortoiseGit github 操作

    由于公司采用了分布式架构,选择的是gitlab git 来管理代码等工作,鉴于github和gitlab的相似性,网上查看好多都是用git的命令上传,或者是一部分,为此,借鉴多方网络,并进行实际操作, ...

  5. 简单使用Git和Github来管理自己的代码和读书笔记

    原文链接:http://my.oschina.net/bxxfighting/blog/378196   先注册github.com的账号官方网站: https://github.com/ 注册界面, ...

  6. git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议

    1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...

  7. git与github安装、配置、pull、push

    操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...

  8. 转:sublime上使用git连接github

    "工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...

  9. git与github使用

    Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六. ...

  10. linux下git以及github的连接与使用

    简单理解 Git 的思想和基本的工作原理,能够更好的进一步和使用Git.在开始学习Git 的时候,最好不要把Git的各种概念和其他的版本控制系统诸如 Subversion 等相比,否则容易混淆每个操作 ...

随机推荐

  1. jedis使用分布式锁

    import redis.clients.jedis.Jedis;public class A { public static void main(String[] args) throws Exce ...

  2. 在Windows平台上利用CMD命令行来压缩和解压缩.tar.gz压缩包

    解压命令: tar -xzvf dwt.tar.gz -C tmp/ 上述命令将dwt.tar.gz压缩包解压到tmp/文件夹 压缩命令: tar -czvf dwt.tar.gz dwt/ 上述命令 ...

  3. GO语言http请求方法,可以携带请求头Header与cookie

    1.目录 2.main.go package main import "fmt" import "demo/common/http" func main() { ...

  4. 网站下/.git/index查看

    遇见有些网站目录中存在 http://target.com/.git/index 由于index是二进制文件 下载回来本地查看 初始化 下载到.git目录 git checkout-index -a

  5. 7 Free Energies: 7.4 Umbrella Sampling Example

    7.4 Umbrella Sampling Example计算丙氨酸二肽 Phi/Psi 旋转的 PMF    http://ambermd.org/tutorials/advanced/tutori ...

  6. Django Models字段设置为空,界面上还校验必填问题

    models.CharField(max_length=1000,null=True,blank=True) 其中blank=True是admin管理后台自动校验放开

  7. Vue插件开发,全局插件和按需加入插件

    年前手下事情少,找了一个下午研究了一下Vue插件开发,首先要感谢B站的前端小野森森-2,借鉴了他的视频,自己也写了一下.把过程记录下来. 首先用vite建一个空项目. 然后新建modules文件夹,和 ...

  8. PatriotCTF 2022 RE

    PatriotCTF 2022 RE String Cheese ida 打开 Shift+F12 即可得到flag PCTF{d0nt_string_m3_410ng_b3_my_v413ntin3 ...

  9. 别再傻傻分不清 AVSx H.26x MPEG-x 了

    在音视频发展的历程中,编解码无疑是其最核心的功能,编解码标准的更新换代也极大促进了音视频技术的发展以及行为模式的变更.从电视到网络视频以及现在的网络直播.点播.音视频会议等等,这些变化的背后都离不开音 ...

  10. GUI编程实战--贪吃蛇

    GUI编程实战--贪吃蛇 参考:遇见狂神说 https://space.bilibili.com/95256449 界面绘制 帧:如果时间片足够小,就是动画,一秒30帧.连起来是动画,拆开是静态的图片 ...