首页 > 其他分享 >git与github(结合clion操作)

git与github(结合clion操作)

时间:2023-04-29 15:55:27浏览次数:34  
标签:文件 git 合并 github 提交 main 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,提交,main,clion,分支
From: https://www.cnblogs.com/dreamer-q/p/17363445.html

相关文章

  • github~通过packages功能实现maven仓库托管
    github在被大微软收购之后,推出了很多非常不错的功能,这一次把很多仓库管理合并到一起了,包括了nuget,npm,maven,docker等等,今天我们把java代码推到github的maven仓库吧!申请一个githubtoken建立一个仓库,起名为maven_repo配置你的.m2/settings.xml文件<settingsxmlns="http://maven.a......
  • 【git基础问题】LFS upload missing objects
    前言 修改文件权限;还是不行;修改文件权限之后,使用gitpush就可以了;gitpush-uorigintda4dev#好像ok了gitlfspush--allorigintda4dev#notok   参考1. 完......
  • gitlab--trigger 触发不同项目之间的 CI、 触发同一项目下的其他 ci
    trigger当我们在运行阶段需要运行下一个项目的流水线时,就可以使用trigger了创建一个项目manage_zz在里面写个.gitlab-ci.yml文件,内容如下stages:#指定运行的步骤,没有指定就顺序执行-build-deploy-test-rebasebuild1:tags:-k8sstage:bu......
  • Hexo + github 打造个人博客
    前两年开始用wordpress搭了一个网站,但服务器是在Linode上,之所以要放在Linode上,要从买的域名说起,因为我买的域名是fengzheng.pub,.pub是不允许备案的,所以不能解析到国内的服务器,例如阿里云上,所以只能部署在国外的服务器。但是由于网络方面的限制,导致网站访问速度一直不是很......
  • 如何更改 git 仓库的远端地址
    首先使用gitremote-v来查看当前仓库关联的远端地址 然后使用gitremoteset-urlorigin<git>,来更新本地仓库关联的远端代码 ......
  • Git
    Gitgit是一个分布式的版本控制软件,版本控制最早期是文件的复制粘贴、下一个阶段是集中管理、现在是分布式管理。集中管理是将文件存储到一个地方,优点是解决了共同开发,缺点也很明显就是如果存储的地方出现问题就无法使用了。分布式管理就很好了在网络中的每个点都存储一遍......
  • idea 上传项目到gitee
    1、创建一个本地仓库2、选择上传项目作为仓库目录3、将项目添加到缓冲区选中上传项目-->鼠标右键-->Git-->Add https://blog.csdn.net/m0_67677436/article/details/124676742 ......
  • 【git基础问题】LFS upload missing objects
    前言 修改文件权限;还是不行;修改文件权限之后,使用gitpush就可以了;gitpush-uorigintda4dev#好像ok了gitlfspush--allorigintda4dev#notok   参考1. 完......
  • 【软件工具使用问题】gitlab中md文件如何显示换行
    前言 解决方法:在需要换行的文本后面,多加两个空格就可以。 参考1. GitHub中README.md如何换行_newnwee的博客-CSDN博客;完......
  • CLion远程调试CMake项目
    cmake项目的远程调试。CLion安装在本地Windows系统,cmake项目部署在远程的Linux系统。配置远程调试可以比较方便地进行Linux端的cmake项目开发。点击setting。主要配置这三个:Toolchains点击+号,添加RemoteHost。然后先点击Credentials的设置按钮,添加远程连接。配置SSHCon......