git教程

git的开发教程

什么是git

git是一个 分布式版本控制系统 ,其实我也不懂,反正只需明白 通过git的一系列指令使我们的项目开发更加方便,项目合作开发更加便利。github听过把,大名鼎鼎的 源代码托管平台,就是用git来管理他们的网站的。

如果你以后从事编程开发,百分百绕不开git。如果你想去github上找点有意思的项目,也得了解了解git趴。

当然,git是课外需要学的,如果你不是计科专业这种科班专业,放心好了,课内是用不到git的😘


学习git

这边推荐一个csdn教程把,看这一篇就够了。

关于Git这一篇就够了

当然,官网也肯定可以学:git


思路问题整理

虽然真正操作过程中要使用的语句只是那么几个,但我是真的没搞懂,以至于每次上传到github都卡壳(),卡好久。。

是时候该真正搞懂了!!!

img

1. 一些语句到底是什么意思

1
git add .

git add <文件>操作是把选中的文件,存放到git的缓存区。

注意,后面commit的时候,提交的就是缓存区的内容。

如果git add test.c ,再修改test.c,再commit,提交的内容还是原来的内容,修改是无效的。

而git add . 是将所有改动的文件提交到暂存区。 未改动的不存也不需要存,因为本地仓库一模一样有。

改动怎么理解?就是判断现在的文件内容和本地仓库文件内容是否一致。

增加文件✔ 修改文件 ✔ 删除文件呢?

tips:这里的修改,如果是把文件内的a改成b,是不需要手动解决冲突的,commit的结果全全按照我们修改后的,可以理解为将原文件覆盖掉。

删除文件:

原来有,现在没,那也是改动!!! 所以✔

当我们在本地删除一个文件后,文件在物理意义上消失了,而后通过git add .命令,把删除这个操作储存在缓存区,我们在commit后,该文件就在本地仓库消失辣!!

但是文件的历史记录仍然可以在之前的提交中找到,除非进行了强制重置或删除了那些提交。

所以,**git add .就是个万能公式,什么情况下都可以用!**


1
git status

对比当前文件状态与本地仓库中的数据是否一样,是否发生改动。


综上,经过万能的三步,本地仓库是可以与我们的项目统一的。

1
2
3
git status
git add .
git commit -m""

然后就是 本地仓库与github远程仓库的连接

1
git remote add origin <远程仓库链接>

origin代表远程仓库,就这么用就行


然后用git push 推送到远程

1
git push -u origin master

push表示将本地仓库与远程仓库进行合并

-u:将本地仓库分支与远程仓库分支一起合并,就是说将master的分支也提交上去,这样你就可以在远程仓库上看到你在本地仓库的master中创建了多少分支,不加这个参数只将当前的master与远程的合并,没有分支的历史记录,也不能切换分支。就第一次push的时候用一次就行,后面可以去掉

以后用这个就行:

1
git push origin master

master表示提交本地master分支仓库。远程仓库也会因此创建一个master分支,因为创建远程仓库默认是main分支。

推送后,即可在远程仓库看到我们的项目~


合并是什么意思!!!

  1. 如果本地仓库多一个文件,就在远程新加一个。

  2. 如果本地仓库修改呢?

    • 在原来基础上添加内容,那么git会自动帮助我们合并结果。

    • 在原来基础上把a改成b,需要 手动解决冲突!!!

    • 在原来基础上删减掉一些东西呢?如果取交集的话,那不是还在吗? 答案是 不会!! 远程仓库会和本地仓库同步。

  3. 如果本地仓库删除一个文件,同理可得,远程仓库会和本地仓库同步。即 远程仓库也会删除

总结一下,多了就用我们本地的,少了就遵循我们本地的删掉,修改了,那就需要手动解决冲突。

所以,只要注意 不是替换的情况下,可以直接推到远程仓库!!!

但更多的时候,我会是替换,所以需要 手动解决冲突


1
git branch

查看当前所有分支

1
git branch <分支名>

创建分支

1
git checkout <分支名>

切换分支


1
git merge

切换到master,并合并其他分支。都是用master分支进行提交的。可以减少分支,瘦身嘛

因为一个项目可能有多个人进行开发,分别负责各自部分,开发完毕后,会合并到总分支,并通过总分支进行提交,提交到远程仓库。

这里会有个新问题,当你在push到远程仓库时,其他伙伴可能先你一步,所有远程仓库和你现有的不同步,所以你需要git pull,这里就是后话了。后面会讲到。

思考思考,我们从远程拉取master分支,我们又新建一个分支,并在这个分支开发,开发完毕后,进行合并,和上面讲的合并类似,可能需要手动解决冲突,解决后,再上传到本地仓库。再通过master分支push到远端。(因为本地已经合并过了,所以不需要把其他分支进行上传,所以也就不需要—u了,有没有绕清楚?嘻嘻)


1
git pull

上面有讲到,如果远程仓库有修改,push是会失效的,我们得先pull,拉取,然后再进行上传。具体在3中会考虑到。


2.如何手动解决冲突

  1. 检出冲突文件:首先,Git会在合并过程中识别出冲突的文件,并在终端中告诉你哪些文件存在冲突。

  2. 打开冲突文件:打开显示冲突的文件,Git会在冲突区域插入特殊的标记,让你知道哪里存在问题。

  3. 查看冲突标记

    1
    2
    3
    4
    5
    6
    plaintext
    <<<<<<< HEAD
    // 你的本地更改
    =======
    // 远程仓库的更改
    >>>>>>> <remote-branch>
  4. 编辑文件:决定你想要保留哪些更改。你可能需要保留一方的更改、结合双方的更改,或者完全重写冲突的部分。

  5. 删除冲突标记:在编辑过程中,删除上述的Git冲突标记,确保文件中不再包含这些标记。

  6. 保存文件:在解决了所有冲突并满意你的更改后,保存文件。

    注意解决冲突时,如果全部选择当前的代码,保存后,再次提交,就不会产生冲突,因为git已经记住了你的“决定”。

    如果你推送解决冲突后的更改到远程仓库,而其他开发者拉取这些更改并再次合并,他们不会遇到同样的冲突,因为你已经解决了它。

  7. 添加到暂存区:使用git add命令将解决了冲突的文件添加到暂存区:

    1
    2

    git add <解决冲突后的文件名>
  8. 完成合并:一旦解决了所有冲突并且将更改的文件添加到暂存区,你可以继续完成合并过程,通过提交更改来结束合并操作:

    1
    2

    git commit -m "解决合并冲突"
  9. 推送更改:解决完冲突并提交后,你可以将解决冲突后的更改推送到远程仓库:

    1
    2

    git push origin master
  10. 使用工具辅助:有些集成开发环境(IDE)或文本编辑器提供了图形界面来辅助解决合并冲突,这些工具可以更容易地比较和编辑冲突的文本。


3.远程仓库修改了怎么办?

要先拉取pull。

git pull的原理就是把远程仓库的最新更改和你当前的本地仓库进行合并

如果你添加了一个md文件,pull一下,你的本地也会增加一个md文件,其他文件都保持不变

当然,也避免不了手动解决冲突问题

如果你在本地做了一些更改,并且这些更改不会与远程分支的更改冲突,git pull通常可以保留你的本地更改。


4. 建立分支是怎么个事

  1. 自己分支干的事,不会影响到其他分支。 其他分支不相信你doge,觉得你不靠谱😏
  2. 在分支上开发,可以让自己大胆尝试自己的想法,而不用担心影响整体代码哦。
  3. 在master开发和在分支开发并进行合并,结果是一样的呀。虽然更烦了,但是更推荐。

5. 如果把.git删了怎么办

你的Git仓库的版本控制信息将会丢失,因为.git文件夹是存储版本控制信息的核心。

被删了,说明本地仓库没了,和远程仓库的连接也没了。

那就init一个新的.git,再建一个本地仓库,再把数据上传到本地仓库,再和远程仓库连接一下,不就恢复正常了嘛~


总结

发现什么问题我会继续更新~

善用gpt,你能得到你想要的答案的。嘻嘻


git教程
http://example.com/2024/08/20/git教程/
作者
GarlicBa
发布于
2024年8月20日
许可协议