如何将内容从远程功能分支获取到另一个本地功能分支

How to get content from a remote feature branch to another local feature branch

提问人:Aaditya 提问时间:11/7/2023 最后编辑:Aaditya 更新时间:11/7/2023 访问量:36

问:

我是git的新手,我是如何陷入困境的,这里是一步一步的:

  1. 我已经使用命令从远程存储库(假设 = )克隆了分支的所有内容:mainhttps:github.com/myrepo
git clone https:github.com/myrepo
  1. 然后,我创建了一个功能分支并签出它——myFeature1
git checkout -b myFeature1
  1. 然后,我在“myFeature1”分支中添加了一些代码,暂存了文件,提交了代码并使用命令推送了更改 -
git add file1.txt
git commit -m "My first function"
git push origin myFeature1
  1. 现在,我想将最新的拉取从远程拉到我的本地“主”分支中,所以我执行 -main
git checkout main
git pull
  1. 现在,我想创建一个新的功能分支,它应该包含我之前推送的我已经开发的分支内容的最新内容。myFeature1EnhancedmainmyFeature1

那么我应该执行什么命令才能达到第 5 点呢?

试一试——

git checkout -b myFeature1Enhanced 
git pull origin main
git pull origin myFeature1

上述命令是否正确以达到第 5 点?谁能帮我/建议这个?我不想丢失我开发的任何代码。

git 分支 git-merge

评论


答:

0赞 TTT 11/7/2023 #1

上述命令是否正确以达到第 5 点?

是的。您建议的解决方案应该可以正常工作。以下是有关此内容的一些附加说明:

  1. 步骤 5 中的命令可能是多余的,因为您刚刚在步骤 4 中提取了最新的命令。(除非已经过了足够的时间,让更多提交登陆到您尚未获取的远程分支上。git pull origin mainmainmain
  2. 创建新分支时,可以添加另一个可选参数来指定起始提交,而不是默认为当前正在进行的提交。因此,例如,您可以更改以下 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
  1. 作为从所需的起始提交创建分支的奖励,也许您不再需要维护 的本地副本,因此您可以将其删除。通常,无论如何它很快就会过时,您可以在需要时随时获取和使用。mainorigin/main

  2. 请注意,这与发出后跟 ,基本相同,并且由于您最近刚刚获取,因此在步骤 5 中,该命令基本上将执行与 相同的操作,但显式合并会稍微快一些,因为它不会获取并等待先接收任何更改。pullgit fetchgit mergegit pull origin myFeature1git merge origin/myFeature1

  3. 在第 3 步中,您推送了更改。在允许功能分支变基的存储库中,可以变基到最新版本,然后从那里创建新功能分支:myFeature1main

git fetch
git rebase origin/main myFeature1 # update myFeature1 with latest main
git switch -c myFeature1Enhanced # create the new branch

使用此方法将处于与您的方法相同的状态,但没有额外的合并提交,并且还将使用最新版本进行更新,以防有用。请注意,此方法需要在下次推送时强制推送,这同样取决于存储库是否允许强制推送个人功能分支。(我猜大多数存储库都允许这样做,并且只在共享分支上阻止它,例如或类似。myFeature1EnhancedmyFeature1mainmyFeature1main

评论

0赞 Aaditya 11/8/2023
在执行步骤 5 的解决方案命令后,我收到致命错误 - 致命:需要指定如何协调不同的分支。有什么建议吗?