Git是一个自由和开源的版本控制系统。它是当今最流行的版本控制系统。
Git可以跟踪一个项目随着时间推移所做的修改。这使得多个开发者可以在同一个项目上进行协作和并行工作,无论他们身在何处。
它可以让开发者查看项目的历史,了解谁做了什么修改,以及为什么要做这些修改。另外,有了Git,你可以在需要时恢复到旧版本的代码。
从本质上讲,Git可以确保开发人员都在同一起跑线上,知道项目中发生了什么。
当在一个项目上工作时,你可能面临的挑战之一是试图同步你的工作--具体来说,同步本地和远程分支。
在这篇文章中,你将学习如何重置并准确匹配本地 Git 分支和远程分支。
以下是我们要讲的内容:
什么是 Git 中的分支?Git 分支的简明扼要介绍
分支是版本控制的一个核心方面,也是一个需要学习的重要概念。
由于分支的存在,开发人员能够以更灵活的方式进行协作。分支使日常开发过程更加顺畅和高效。
分支是管理不同版本代码的一种方式,它就像一个指向变化快照的指针。
当你第一次为你的项目创建一个 Git 仓库时,在同一时间,主分支也被创建。
主分支是项目的主要和默认分支。它代表着你的代码的无错误、稳定和可用的版本,可以随时发布并与公众分享,它是主代码库。
但是,当你想给你的项目添加一个新的功能时,会发生什么?
在添加之前,你需要对它进行测试,确保它不会引入新的错误或干扰现有的代码。
需要有一种在不影响代码库的情况下处理新功能的方法。
而这正是分支的用武之地。
分支是实验和测试新代码的隔离空间,不会影响主分支的代码。
你可以创建一个新的分支,做你想做的改动。如果你对这些改动感到满意,你可以通过合并将它们添加到主分支中。如果不满意,可以删除该分支,而不影响项目中的主要代码。
分支还允许开发者在同一时间处理不同的功能,而不干扰对方的工作。
要了解更多关于 Git 分支的信息,请看这段解释它们如何工作的视频,并将这篇提供了如何使用它们的小抄的文章收藏起来。
Git 中的本地分支 VS 远程分支 VS 远程跟踪分支 - 有什么区别?
本地分支是一个只能在本地机器上访问的分支,它孤立地存在于那里。在这里,你可以添加文件并提交你所做的任何修改。这些修改将被保存在本地,并且只对你自己可见,在你的本地物理机上可用。
其他开发者将无法查看你的工作和你所做的修改。
你可以用以下命令创建一个名为my_branch 的本地分支:
git branch my_branch
而要列出你所有的本地分支,你可以使用git branch 命令。
为了与同一项目中的其他开发者合作,并让他们查看你所做的任何修改,你需要从本地分支推送修改到远程仓库。
这就引出了远程分支。
远程分支是指存在于远程仓库的一个分支。
远程仓库,也被称为远程,通常是指托管在互联网上某个地方的仓库,如 GitHub 服务器上。远程仓库的默认名称是origin 。
现在,远程跟踪的分支指的是对远程分支状态的本地引用。默认情况下,分支之间没有任何联系。也就是说,你可以告诉一个本地分支去跟踪一个远程分支。
如何将本地的 Git 分支重置为远程的?
你可能一直在本地分支上工作,对项目进行了各种修改,最后发现不再需要这些修改了。
你想把它们删除,然后把该分支重置到远程分支上。
除此之外,另一个开发者可能已经做了修改并推送到了远程分支,所以你需要从远程仓库获取这些最新的修改,以达到最新的效果。
要做到这一点,你需要采取以下步骤:
- 保存本地分支的当前状态(可选)
- 从远程获取最新版本的代码
- 重置本地分支
- 清理文件(可选)
保存本地分支的当前状态
在开始之前,你可能想在另一个分支中保存当前分支的状态。
当把本地的 Git 分支重置到远程时,你会失去在本地所做的修改。
这一步是可选的,你可以选择这样做,以防出错或将来想再次回到该工作。
要保存工作,请使用以下命令:
git commit -a -m "I am saving my work"
git branch backup_work
你的工作现在被保存到名为backup_work 的分支。
做Agit checkout
通常情况下,会有一个与你想重置的远程分支同名的本地远程跟踪分支,例如main 。
使用下面的命令来检查本地远程主分支:
git checkout main
如果你为这个分支使用了不同的名字,请用你正在使用的名字替换main 。
取回原版
要获取远程仓库,以及远程仓库中代码的最新状态和版本,请输入以下命令:
git fetch origin
origin 是一个由Git创建的别名,指定了远程仓库的远程URL。通常情况下,Git 会自动假定远程仓库的名称为 。origin
如果你有一个不同的远程名称,请用你使用的名称替换origin 。
重置本地仓库
现在,用以下命令重置本地main 分支到远程仓库:
git reset --hard origin/main
清理任何未跟踪的修改
这一步是可选的。
使用上述命令后,你可能会有一些未跟踪的文件。
使用下面的命令来清理任何未跟踪的修改:
git clean -xdf
让我们把-xdf 标志分解开来,解释每一部分的作用:
-x标志会删除被忽略的文件-d标志删除了未被追踪的文件夹-f标志删除未追踪的文件
结论
就这样,你现在已经把本地分支重置为远程分支了。
希望这篇文章对你有帮助。
要了解更多关于 Git 的信息,请查看以下免费资源:
- Git 和 GitHub 初学者教程 - 速成班
- 专业人士的 Git 教程 - 掌握 Git 版本控制的工具和概念
- 高级 Git 教程 - 互动式重置、Cherry-Picking、Reflog、Submodules 等
谢谢你的阅读,祝你编码愉快 :)