git教程
git的开发教程
什么是git
git是一个 分布式版本控制系统 ,其实我也不懂,反正只需明白 通过git的一系列指令使我们的项目开发更加方便,项目合作开发更加便利。github听过把,大名鼎鼎的 源代码托管平台,就是用git来管理他们的网站的。
如果你以后从事编程开发,百分百绕不开git。如果你想去github上找点有意思的项目,也得了解了解git趴。
当然,git是课外需要学的,如果你不是计科专业这种科班专业,放心好了,课内是用不到git的😘
学习git
这边推荐一个csdn教程把,看这一篇就够了。
当然,官网也肯定可以学:git
思路问题整理
虽然真正操作过程中要使用的语句只是那么几个,但我是真的没搞懂,以至于每次上传到github都卡壳(),卡好久。。
是时候该真正搞懂了!!!
1. 一些语句到底是什么意思
1 |
|
git add <文件>操作是把选中的文件,存放到git的缓存区。
注意,后面commit的时候,提交的就是缓存区的内容。
如果git add test.c ,再修改test.c,再commit,提交的内容还是原来的内容,修改是无效的。
而git add . 是将所有改动的文件提交到暂存区。 未改动的不存也不需要存,因为本地仓库一模一样有。
改动怎么理解?就是判断现在的文件内容和本地仓库文件内容是否一致。
增加文件✔ 修改文件 ✔ 删除文件呢?
tips:这里的修改,如果是把文件内的a改成b,是不需要手动解决冲突的,commit的结果全全按照我们修改后的,可以理解为将原文件覆盖掉。
删除文件:
原来有,现在没,那也是改动!!! 所以✔
当我们在本地删除一个文件后,文件在物理意义上消失了,而后通过git add .命令,把删除这个操作储存在缓存区,我们在commit后,该文件就在本地仓库消失辣!!
但是文件的历史记录仍然可以在之前的提交中找到,除非进行了强制重置或删除了那些提交。
所以,**git add .
就是个万能公式,什么情况下都可以用!**
1 |
|
对比当前文件状态与本地仓库中的数据是否一样,是否发生改动。
综上,经过万能的三步,本地仓库是可以与我们的项目统一的。
1 |
|
然后就是 本地仓库与github远程仓库的连接了
1 |
|
origin代表远程仓库,就这么用就行
然后用git push 推送到远程
1 |
|
push表示将本地仓库与远程仓库进行合并
-u:将本地仓库分支与远程仓库分支一起合并,就是说将master的分支也提交上去,这样你就可以在远程仓库上看到你在本地仓库的master中创建了多少分支,不加这个参数只将当前的master与远程的合并,没有分支的历史记录,也不能切换分支。就第一次push的时候用一次就行,后面可以去掉
以后用这个就行:
1 |
|
master表示提交本地master分支仓库。远程仓库也会因此创建一个master分支,因为创建远程仓库默认是main分支。
推送后,即可在远程仓库看到我们的项目~
合并是什么意思!!!
如果本地仓库多一个文件,就在远程新加一个。
如果本地仓库修改呢?
在原来基础上添加内容,那么git会自动帮助我们合并结果。
在原来基础上把a改成b,需要 手动解决冲突!!!
在原来基础上删减掉一些东西呢?如果取交集的话,那不是还在吗? 答案是 不会!! 远程仓库会和本地仓库同步。
如果本地仓库删除一个文件,同理可得,远程仓库会和本地仓库同步。即 远程仓库也会删除
总结一下,多了就用我们本地的,少了就遵循我们本地的删掉,修改了,那就需要手动解决冲突。
所以,只要注意 不是替换的情况下,可以直接推到远程仓库!!!
但更多的时候,我会是替换,所以需要 手动解决冲突。
1 |
|
查看当前所有分支
1 |
|
创建分支
1 |
|
切换分支
1 |
|
切换到master,并合并其他分支。都是用master分支进行提交的。可以减少分支,瘦身嘛
因为一个项目可能有多个人进行开发,分别负责各自部分,开发完毕后,会合并到总分支,并通过总分支进行提交,提交到远程仓库。
这里会有个新问题,当你在push到远程仓库时,其他伙伴可能先你一步,所有远程仓库和你现有的不同步,所以你需要git pull,这里就是后话了。后面会讲到。
思考思考,我们从远程拉取master分支,我们又新建一个分支,并在这个分支开发,开发完毕后,进行合并,和上面讲的合并类似,可能需要手动解决冲突,解决后,再上传到本地仓库。再通过master分支push到远端。(因为本地已经合并过了,所以不需要把其他分支进行上传,所以也就不需要—u了,有没有绕清楚?嘻嘻)
1 |
|
上面有讲到,如果远程仓库有修改,push是会失效的,我们得先pull,拉取,然后再进行上传。具体在3
中会考虑到。
2.如何手动解决冲突
检出冲突文件:首先,Git会在合并过程中识别出冲突的文件,并在终端中告诉你哪些文件存在冲突。
打开冲突文件:打开显示冲突的文件,Git会在冲突区域插入特殊的标记,让你知道哪里存在问题。
查看冲突标记:
1
2
3
4
5
6plaintext
<<<<<<< HEAD
// 你的本地更改
=======
// 远程仓库的更改
>>>>>>> <remote-branch>编辑文件:决定你想要保留哪些更改。你可能需要保留一方的更改、结合双方的更改,或者完全重写冲突的部分。
删除冲突标记:在编辑过程中,删除上述的Git冲突标记,确保文件中不再包含这些标记。
保存文件:在解决了所有冲突并满意你的更改后,保存文件。
注意解决冲突时,如果全部选择当前的代码,保存后,再次提交,就不会产生冲突,因为git已经记住了你的“决定”。
如果你推送解决冲突后的更改到远程仓库,而其他开发者拉取这些更改并再次合并,他们不会遇到同样的冲突,因为你已经解决了它。
添加到暂存区:使用
git add
命令将解决了冲突的文件添加到暂存区:1
2
git add <解决冲突后的文件名>完成合并:一旦解决了所有冲突并且将更改的文件添加到暂存区,你可以继续完成合并过程,通过提交更改来结束合并操作:
1
2
git commit -m "解决合并冲突"推送更改:解决完冲突并提交后,你可以将解决冲突后的更改推送到远程仓库:
1
2
git push origin master使用工具辅助:有些集成开发环境(IDE)或文本编辑器提供了图形界面来辅助解决合并冲突,这些工具可以更容易地比较和编辑冲突的文本。
3.远程仓库修改了怎么办?
要先拉取pull。
git pull的原理就是把远程仓库的最新更改和你当前的本地仓库进行合并。
如果你添加了一个md文件,pull一下,你的本地也会增加一个md文件,其他文件都保持不变
当然,也避免不了手动解决冲突问题
如果你在本地做了一些更改,并且这些更改不会与远程分支的更改冲突,
git pull
通常可以保留你的本地更改。
4. 建立分支是怎么个事
- 自己分支干的事,不会影响到其他分支。 其他分支不相信你doge,觉得你不靠谱😏
- 在分支上开发,可以让自己大胆尝试自己的想法,而不用担心影响整体代码哦。
- 在master开发和在分支开发并进行合并,结果是一样的呀。虽然更烦了,但是更推荐。
5. 如果把.git
删了怎么办
你的Git仓库的版本控制信息将会丢失,因为.git
文件夹是存储版本控制信息的核心。
被删了,说明本地仓库没了,和远程仓库的连接也没了。
那就init
一个新的.git
,再建一个本地仓库,再把数据上传到本地仓库,再和远程仓库连接一下,不就恢复正常了嘛~
总结
发现什么问题我会继续更新~
善用gpt,你能得到你想要的答案的。嘻嘻