git与github(结合clion操作)

2023-07-11,,

对自己学习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与github(结合clion操作).doc》

下载本文的Word格式文档,以方便收藏与打印。