提问人:Aaditya 提问时间:11/7/2023 最后编辑:Aaditya 更新时间:11/7/2023 访问量:36
如何将内容从远程功能分支获取到另一个本地功能分支
How to get content from a remote feature branch to another local feature branch
问:
我是git的新手,我是如何陷入困境的,这里是一步一步的:
- 我已经使用命令从远程存储库(假设 = )克隆了分支的所有内容:
main
https:github.com/myrepo
git clone https:github.com/myrepo
- 然后,我创建了一个功能分支并签出它——
myFeature1
git checkout -b myFeature1
- 然后,我在“myFeature1”分支中添加了一些代码,暂存了文件,提交了代码并使用命令推送了更改 -
git add file1.txt
git commit -m "My first function"
git push origin myFeature1
- 现在,我想将最新的拉取从远程拉到我的本地“主”分支中,所以我执行 -
main
git checkout main
git pull
- 现在,我想创建一个新的功能分支,它应该包含我之前推送的我已经开发的分支内容的最新内容。
myFeature1Enhanced
main
myFeature1
那么我应该执行什么命令才能达到第 5 点呢?
试一试——
git checkout -b myFeature1Enhanced
git pull origin main
git pull origin myFeature1
上述命令是否正确以达到第 5 点?谁能帮我/建议这个?我不想丢失我开发的任何代码。
答:
上述命令是否正确以达到第 5 点?
是的。您建议的解决方案应该可以正常工作。以下是有关此内容的一些附加说明:
- 步骤 5 中的命令可能是多余的,因为您刚刚在步骤 4 中提取了最新的命令。(除非已经过了足够的时间,让更多提交登陆到您尚未获取的远程分支上。
git pull origin main
main
main
- 创建新分支时,可以添加另一个可选参数来指定起始提交,而不是默认为当前正在进行的提交。因此,例如,您可以更改以下 3 个命令:
git checkout main
git pull
git checkout -b myFeature1Enhanced
只需 2 个命令:
git fetch
git checkout -b myFeature1Enhanced origin/main
# or if you want to use the newer equivalent switch command:
git fetch
git switch -c myFeature1Enhanced origin/main
作为从所需的起始提交创建分支的奖励,也许您不再需要维护 的本地副本,因此您可以将其删除。通常,无论如何它很快就会过时,您可以在需要时随时获取和使用。
main
origin/main
请注意,这与发出后跟 ,基本相同,并且由于您最近刚刚获取,因此在步骤 5 中,该命令基本上将执行与 相同的操作,但显式合并会稍微快一些,因为它不会获取并等待先接收任何更改。
pull
git fetch
git merge
git pull origin myFeature1
git merge origin/myFeature1
在第 3 步中,您推送了更改。在允许功能分支变基的存储库中,可以变基到最新版本,然后从那里创建新功能分支:
myFeature1
main
git fetch
git rebase origin/main myFeature1 # update myFeature1 with latest main
git switch -c myFeature1Enhanced # create the new branch
使用此方法将处于与您的方法相同的状态,但没有额外的合并提交,并且还将使用最新版本进行更新,以防有用。请注意,此方法需要在下次推送时强制推送,这同样取决于存储库是否允许强制推送个人功能分支。(我猜大多数存储库都允许这样做,并且只在共享分支上阻止它,例如或类似。myFeature1Enhanced
myFeature1
main
myFeature1
main
评论
下一个:如何在管道中添加分支列表选择参数
评论