Git奇幻之旅一

这篇具有很好参考价值的文章主要介绍了Git奇幻之旅一。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一天: 本地仓库

故事的主角是小明,一个刚入门编程的小白。他正在为一个项目写代码,但是他发现每次修改代码都很麻烦,因为他要不断地备份文件,而且很容易弄混版本。有一天,他听说了一个叫Git的神奇工具,可以帮助他管理代码的变化。他决定尝试一下,于是他打开了终端,输入了下面的命令:

git init # 初始化一个本地仓库
git add . # 添加所有文件到暂存区
git commit -m "first commit" # 提交第一次修改到本地仓库

这样,他就成功地创建了一个Git仓库,并且保存了他的第一个版本。他觉得很开心,因为这样他就不用担心代码丢失或者混乱了。😁

第二天: 远程仓库

小明觉得自己的代码写得很不错,想要分享给其他人看看。但是他发现把文件发给别人很麻烦,而且如果别人也修改了代码,就很难合并。有一天,他听说了一个叫GitHub的网站,可以免费托管Git仓库,并且方便和其他人协作。他决定尝试一下,于是他注册了一个GitHub账号,并且在网站上创建了一个空的仓库。

然后,他在终端输入了下面的命令:

git remote add origin https://github.com/xiaoming/myproject.git # 添加远程仓库地址
git push -u origin master # 推送本地master分支到远程仓库

这样,他就成功地把自己的代码上传到了GitHub上,并且和远程仓库建立了联系。他觉得很兴奋,因为这样他就可以和全世界的程序员交流了。😍

第三天: 分支管理

小明在GitHub上发现了一个很有趣的开源项目,想要参与其中。但是他不想直接修改别人的代码,而是想先在自己的电脑上做一些改进,然后再提交给项目的作者。有一天,他听说了一个叫分支的概念,可以让他在不影响主线的情况下,创建自己的代码版本。他决定尝试一下,于是他在终端输入了下面的命令:

git clone https://github.com/someone/awesome-project.git # 从远程仓库克隆项目到本地
cd awesome-project # 进入项目目录
git checkout -b dev # 创建并切换到dev分支

这样,他就成功地在本地创建了一个dev分支,并且和远程仓库的master分支分开了。他觉得很自由,因为这样他就可以随心所欲地修改代码了。😎

第四天: 合并与冲突

小明在dev分支上修改了一些代码,觉得很满意,想要把自己的改进合并到master分支上,然后推送到远程仓库,让项目的作者看看。有一天,他听说了一个叫合并的操作,可以把两个分支的代码合并成一个。他决定尝试一下,于是他在终端输入了下面的命令:

git checkout master # 切换到master分支
git merge dev # 合并dev分支到master分支
git push origin master # 推送master分支到远程仓库

这样,他就成功地把自己的代码合并到了master分支,并且推送到了远程仓库。他觉得很骄傲,因为这样他就可以为开源项目做出贡献了。😊

但是,有时候合并分支并不是一帆风顺的。有一次,小明在dev分支上修改了一个文件,而项目的作者也在master分支上修改了同一个文件,并且先于小明推送到了远程仓库。当小明想要合并分支时,就发生了冲突。有一天,他听说了一个叫解决冲突的方法,可以手动选择保留哪些代码。他决定尝试一下,于是他在终端输入了下面的命令:

git pull origin master # 拉取远程仓库的master分支
git merge master # 合并master分支到dev分支
# 打开冲突文件,编辑保存
git add . # 添加所有文件到暂存区
git commit -m "fix conflict" # 提交修改到本地仓库
git push origin dev # 推送dev分支到远程仓库

这样,他就成功地解决了冲突,并且把自己的代码推送到了远程仓库。他觉得很成就感,因为这样他就可以和其他人协作了。😄

第五天: 标签管理与忽略文件

小明在dev分支上开发了一个新功能,觉得很完美,想要给这个版本打一个标签,方便以后查找。有一天,他听说了一个叫标签的概念,可以给某个版本起一个有意义的名字。他决定尝试一下,于是他在终端输入了下面的命令:

git tag v1.0 # 给当前版本打一个v1.0的标签
git push origin v1.0 # 推送标签到远程仓库

这样,他就成功地给自己的代码打了一个标签,并且推送到了远程仓库。他觉得很方便,因为这样他就可以快速定位到某个版本了。😎

但是,有时候有些文件是不需要被Git管理的,比如编译生成的临时文件,或者敏感信息的配置文件。有一天,他听说了一个叫忽略特殊文件的方法,可以让Git自动忽略掉这些文件。他决定尝试一下,于是他在项目根目录下创建了一个.gitignore文件,并且写入了下面的内容:

*.tmp # 忽略所有.tmp后缀的文件
config.ini # 忽略config.ini文件

这样,他就成功地让Git忽略掉了这些特殊文件,并且不会被提交到仓库中。他觉得很安全,因为这样他就可以避免泄露隐私或者浪费空间了。😊

第六天: 大小写敏感

小明和小红是一个团队的成员,他们都在GitHub上为同一个开源项目贡献代码。有一天,小明在本地修改了一个文件的名字,把它从README.md改成了Readme.md,然后提交并推送到了远程仓库。小红在自己的电脑上拉取了最新的代码,但是她发现自己的文件名还是README.md,而且Git提示她有一个未合并的文件。她很困惑,不知道为什么会出现这样的情况。

原来,这是因为Git在不同的操作系统上对文件名大小写的敏感度不同。在Linux和Mac OS X上,Git是区分大小写的,所以README.md和Readme.md是两个不同的文件。但是在Windows上,Git是不区分大小写的,所以README.md和Readme.md是同一个文件。当小明把文件名改成了Readme.md时,Git认为他删除了README.md,并且创建了一个新的文件Readme.md。当小红拉取代码时,Git认为她需要合并这两个文件,所以出现了冲突。

有一天,他们听说了一个叫解决大小写不一致导致的合并冲突的方法,可以让Git在Windows上也区分大小写。他们决定尝试一下,于是他们在终端输入了下面的命令:

git config core.ignorecase false # 设置Git在Windows上也区分大小写
git mv README.md Readme.md # 重命名文件
git commit -m "rename file" # 提交修改
git push origin master # 推送到远程仓库

这样,他们就成功地解决了大小写不一致导致的合并冲突,并且保持了文件名的一致性。他们觉得很开心,因为这样他们就可以避免以后出现同样的问题了。😁

第七天: 撤销错误提交与恢复误删文件

小明和小红在开发一个新功能时,不小心提交了一些错误的代码,导致项目无法运行。他们想要撤销这些提交,但是又不想丢失他们的修改。有一天,他们听说了一个叫reset的命令,可以让他们回退到某个版本,但是保留他们的修改。他们决定尝试一下,于是他们在终端输入了下面的命令:

git reset HEAD~2 # 回退到两个版本之前,保留修改
git status # 查看修改的状态
git add . # 重新添加修改到暂存区
git commit -m "fix bug" # 重新提交修改
git push -f origin master # 强制推送到远程仓库

这样,他们就成功地撤销了错误的提交,并且重新提交了正确的代码。他们觉得很轻松,因为这样他们就可以修复bug了。😊

但是,有时候reset命令也会带来麻烦。有一次,小明在回退版本时,不小心加了一个–hard选项,导致他的修改全部丢失了。他很慌张,不知道如何找回他的修改。有一天,他听说了一个叫reflog的命令,可以让他查看所有的提交历史,包括已经被删除或者回退的提交。他决定尝试一下,于是他在终端输入了下面的命令:

git reflog # 查看所有的提交历史
git reset --hard c761f5c # 回退到指定的版本
git status # 查看修改的状态

这样,他就成功地找回了他丢失的修改,并且恢复到了正确的版本。他觉得很幸运,因为这样他就可以继续开发了。😄

第八天: 多人协作与冲突处理

小明和小红在同一个分支上开发一个新功能,他们经常需要拉取对方的代码,然后合并到自己的代码中。有一天,他们听说了一个叫pull的命令,可以让他们一步完成拉取和合并的操作。他们决定尝试一下,于是他们在终端输入了下面的命令:

git pull origin master # 拉取并合并远程仓库的master分支

这样,他们就成功地把对方的代码合并到了自己的代码中,并且保持了同步。他们觉得很方便,因为这样他们就可以避免手动合并的麻烦了。😎

但是,有时候pull命令也会带来问题。有一次,小明和小红在同一个文件上修改了同一行代码,导致出现了冲突。他们很困惑,不知道如何解决这个冲突。有一天,他们听说了一个叫解决冲突的方法,可以让他们手动选择保留哪些代码。他们决定尝试一下,于是他们在终端输入了下面的命令:

git pull origin master # 拉取并合并远程仓库的master分支
# 打开冲突文件,编辑保存
git add . # 添加所有文件到暂存区
git commit -m "merge conflict" # 提交修改到本地仓库
git push origin master # 推送到远程仓库

这样,他们就成功地解决了冲突,并且把自己的代码推送到了远程仓库。他们觉得很成就感,因为这样他们就可以和对方协作了。😄

第九天: rebase和merge的区别

小明和小红在同一个项目上开发不同的功能,他们分别在自己的分支上提交了一些代码。有一天,他们想要把自己的代码合并到主分支上,但是他们不知道应该用rebase还是merge。有一天,他们听说了一个叫rebase和merge的区别的概念,可以让他们选择合适的方式来合并代码。他们决定尝试一下,于是他们在终端输入了下面的命令:

# 小明在dev1分支上
git checkout dev1 # 切换到dev1分支
git rebase master # 把dev1分支变基到master分支
git push -f origin dev1 # 强制推送dev1分支到远程仓库
git checkout master # 切换到master分支
git merge dev1 # 合并dev1分支到master分支
git push origin master # 推送master分支到远程仓库

# 小红在dev2分支上
git checkout dev2 # 切换到dev2分支
git merge master # 合并master分支到dev2分支
git push origin dev2 # 推送dev2分支到远程仓库
git checkout master # 切换到master分支
git merge dev2 # 合并dev2分支到master分支
git push origin master # 推送master分支到远程仓库

这样,他们就成功地把自己的代码合并到了主分支上,但是他们发现了一个不同的地方。小明用了rebase命令,他的提交历史是一条直线,没有任何分叉;小红用了merge命令,她的提交历史是有多个分叉和汇合的结构。他们觉得很好奇,不知道这两种方式有什么优缺点。

原来,rebase和merge的区别是:

  • rebase是把自己的分支变基到目标分支上,也就是把自己的提交历史放在目标分支的最后,这样可以保持提交历史的整洁和线性。
  • merge是把目标分支合并到自己的分支上,也就是把目标分支的提交历史和自己的提交历史合并成一个新的提交,这样可以保持提交历史的完整和真实。

rebase和merge各有优缺点:

  • rebase的优点是可以让提交历史看起来很简洁,方便查看和管理;缺点是会改变提交历史,可能导致冲突或者丢失信息。
  • merge的优点是可以保留提交历史的原貌,方便追溯和恢复;缺点是会让提交历史看起来很复杂,不容易理解和维护。

所以,在选择rebase还是merge时,要根据具体的情况和需求来决定。一般来说:

  • 如果你想要保持一个干净和线性的提交历史,你可以用rebase;
  • 如果你想要保留一个完整和真实的提交历史,你可以用merge;
  • 如果你想要在公共的分支上合作,你应该用merge,避免用rebase,因为rebase会改变提交历史,可能导致其他人的困扰;
  • 如果你想要在私有的分支上开发,你可以用rebase,因为rebase可以让你的提交历史更清晰,方便你自己管理。

第十天: 撤销错误合并和恢复误删的分支

小明和小红在合并分支时,不小心合并了错误的分支,导致项目出现了很多bug。他们想要撤销这次合并,但是又不想丢失他们的修改。有一天,他们听说了一个叫revert的命令,可以让他们用一次新的提交来回滚之前的提交。他们决定尝试一下,于是他们在终端输入了下面的命令:

git log # 查看提交历史
git revert <commit ID> # 回滚指定的提交
git push origin master # 推送到远程仓库

这样,他们就成功地撤销了错误的合并,并且用一次新的提交来记录这次回滚。他们觉得很安全,因为这样他们就不会丢失任何修改了。😊

但是,有时候revert命令也会带来麻烦。有一次,小明在回滚一个合并时,不小心加了一个–no-commit选项,导致他的修改没有被提交,而是被放在了暂存区。他很慌张,不知道如何恢复这次回滚。有一天,他听说了一个叫reset的命令,可以让他回退到某个版本,并且保留或者丢弃他的修改。他决定尝试一下,于是他在终端输入了下面的命令:

git reset --soft HEAD^ # 回退到上一个版本,并且保留修改
git status # 查看修改的状态
git add . # 重新添加修改到暂存区
git commit -m "fix bug" # 重新提交修改
git push -f origin master # 强制推送到远程仓库

这样,他就成功地恢复了这次回滚,并且重新提交了正确的代码。他觉得很轻松,因为这样他就可以修复bug了。😊

第十一天: 删除和恢复分支

小明和小红在完成一个功能后,想要删除自己的分支,因为他们觉得这个分支已经没有用了。有一天,他们听说了一个叫delete的命令,可以让他们删除本地或者远程的分支。他们决定尝试一下,于是他们在终端输入了下面的命令:

git branch -d dev1 # 删除本地的dev1分支
git push origin --delete dev1 # 删除远程的dev1分支

这样,他们就成功地删除了自己的分支,并且释放了一些空间。他们觉得很爽快,因为这样他们就可以开始新的功能了。😎

但是,有时候delete命令也会带来后悔。有一次,小明在删除一个分支后,发现自己还需要这个分支上的一些代码。他很懊恼,不知道如何找回这个分支。有一天,他听说了一个叫reflog的命令,可以让他查看所有的提交历史,包括已经被删除或者回退的提交。他决定尝试一下,于是他在终端输入了下面的命令:

git reflog # 查看所有的提交历史
git checkout -b dev1 <commit ID> # 用指定的提交创建一个新的dev1分支
git push origin dev1 # 推送dev1分支到远程仓库

这样,他就成功地找回了自己的分支,并且恢复到了正确的版本。他觉得很幸运,因为这样他就可以继续使用这个分支了。😄

最后

到此为止,我已经给你讲完了小明和小红的故事,你觉得怎么样?👏文章来源地址https://www.toymoban.com/news/detail-515973.html

到了这里,关于Git奇幻之旅一的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IntelliJ IDEA 忽略Git提交

    在项目下新建 .gitignore 文件 在 .gitignore 文件写入以下内容,从上图可以看到,忽略提交的这些目录/文件变成了黄色

    2024年02月17日
    浏览(68)
  • IntelliJ:idea Git拉取代码

    1、任意打开一个项目后,点击File-点击New-Project from Version Control-点击Git   2、弹出下面框,URL:git地址,Directory:拉取代码到本地目录   3、将获取到的git地址复制到URL里面,再点击Test    4、点击Test将会弹出以下模态框,输入申请的git账号、密码,点击Log In    5、再点击C

    2024年02月11日
    浏览(71)
  • IntelliJ IDEA 配置git详细步骤

    IDEA项目代码太多了,上传到github/gitlab/gitee上面进行管理吧,方便及时版本回退或者更新。也比较方便团队合作。(笔者换电脑了,重新记录下配置git过程) 下载网址:https://git-scm.com/download win系统下载网址:https://git-scm.com/download/win 我是是win10,mac or linux也是同样的步骤,先

    2024年02月03日
    浏览(53)
  • 在IntelliJ IDEA中配置Git

    给大家说说在inteliJ IDEA中如何配置git: 目录 下载安装Git工具 在IntelliJ IDEA中配置Git 在IntelliJ IDEA中利用Git拉取项目 1. 访问gitee或github,找到项目对应的仓库,并复制仓库地址。 2 打开IDEA,依次选择菜单:File-New-Project from Version Control .  3 在弹出框中输入仓库路径(从第一步中git

    2024年02月16日
    浏览(58)
  • 在IntelliJ IDEA中使用Git

    想要在IntelliJ IDEA中使用Git,首先需要下载Git,Git的安装可以参考我的另一篇文章https://blog.csdn.net/manfanying/article/details/128679367 然后打开idea,点击左上角的file,再点击settings 找到Version Control并将其展开,点击Git ,找到Git的安装路径,打开bin目录,选择Git.exe并点击Test测试 如果

    2024年02月08日
    浏览(51)
  • IntelliJ IDEA配置git工作效率翻倍

            IntelliJ IDEA 是一个强大的集成开发环境,用于编程语言如 Java、Kotlin、Scala 和其他多种语言。Git 是一个开源的分布式版本控制系统,用于追踪项目过程中的代码变更。 目录 一、关于IDEA和GIT 1.1 版本控制集成 1.2 界面友好的操作 1.3 代码检查和合并工具 1.4 提交历史

    2024年01月17日
    浏览(50)
  • 在Mac IntelliJ IDEA中配置Git

    访问:git官网:https://git-scm.com/下载符合当前系统的安装包,下载后进行安装。 菜单栏顺序选择: IntelliJ IDEA-Preferences,在弹出框中选择下图中的Git  然后点击右侧上方输入框 Path to Git executable:中右面的浏览图标(小文件夹),并定位git的可执行程序(git.exe文件在git安装目录下的cmd文

    2024年02月11日
    浏览(49)
  • IntelliJ Idea 撤回git已经push的操作

    最初的样子 现在的样子 第一步,commit到本地撤回: 打开提交历史记录,选中回退的版本右键,点击“Reset Current Branch to Here…”,然后选中“Mixed”,点击Reset后,之前commit的代码会在本地显示未提交的。修改之后继续正常提交即可。 第二步,push到远程仓库的撤回 需要idea和

    2024年02月05日
    浏览(50)
  • 使用IntelliJ IDEA配置版本管理(SVN和Git)

    步骤一:安装SVN插件 打开IntelliJ IDEA,点击顶部菜单栏的 \\\"File\\\" - \\\"Settings\\\"。 在弹出的窗口中,选择 \\\"Plugins\\\"。 在搜索框中输入 \\\"SVN\\\",找到 \\\"Subversion Integration\\\" 插件并点击 \\\"Install\\\" 安装。 步骤二:配置SVN 安装完成后,重启IntelliJ IDEA。 打开你的项目,点击顶部菜单栏的 \\\"VCS\\\" - \\\"En

    2024年04月24日
    浏览(44)
  • IntelliJ IDEA如何重新弹出git身份验证窗口

    1、点击File菜单—点击Settings—点击Appearance Behavior—点击System Settings—点击Passwords—选中Do not save, forget passwords after restart—点击Apply—点击OK,如下所示: 2、重启IntelliJ IDEA—通过git工具push代码时就会重新弹出git身份验证窗口。

    2024年02月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包