git bug或滥用分支?

Mar*_*rio 1 git branch

我有一个大型项目,我正在升级到边缘Rails.我制作了整个项目目录的副本,并在那里重构作为信任git的预防措施(或者至少我可能如何使用/滥用它).在完成大部分工作后,我返回到原始项目目录和控制台(这是来自内存,因此基于实际发生的情况而松散):

git branch edge
git checkout edge
git rm vendor/plugins
git commit -m "wiped out old plugins"
Run Code Online (Sandbox Code Playgroud)

然后我手动复制了我在复制的项目中更新的插件的最新版本.

git add vendor/plugins
git commit -m "re-added in plugins, some unchanged, some later versions"
Run Code Online (Sandbox Code Playgroud)

我的理解是上面的添加是递归的.为了获得对git的一些信任,我在工作期间的不同时间在主分支和边缘分支之间来回交换,只是为了确保它处理交换没问题.

git checkout master
git checkout edge
Run Code Online (Sandbox Code Playgroud)

我注意到的是(在一些交换之后)边缘分支中的一些插件恢复到主版本.无数次我尝试提交有问题的插件的最新版本,但它最终在交换后恢复.

我怀疑在手动移动文件后添加文件的方式可能存在问题.(git add vendor/plugins/*是否必要?)当两个分支包含一些相同的子目录时,是否有人在分支之间交换有任何问题?您如何处理将在一个目录中找到的应用程序副本中找到的更改合并回原始文件?原始存储库是干净的,而副本相当混乱,因为试图让某些插件在边缘分支中保持更改.

Jer*_*all 5

这似乎是一种非常奇怪的方式来做你想要的.

做你所建议的更"git"的方式是:

$ git checkout -b edge
... #make your modifications for the port.
$ git commit -m'ported plugins to rails edge' -a
$ git checkout master # original code is there untouched
$ git checkout edge # ported code is there just as you commited it.
Run Code Online (Sandbox Code Playgroud)

从那里取决于你的目标是什么,你可以:

$ git checkout master # make sure you are on the master branch
$ git merge edge # merge the edge branch into master
... # fix any errors
$ git branch -d edge # remove the edge branch since you don't need it anymore.
Run Code Online (Sandbox Code Playgroud)

或者保持两个分支.一个移到边缘,另一个移到边缘.这可能不是你想要的.git中的分支便宜且容易,完成后将它们扔掉是完全可以接受的.