Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git从另一个没有历史记录的存储库中提取_Git_Laravel_Github_Repository_Revision History - Fatal编程技术网

Git从另一个没有历史记录的存储库中提取

Git从另一个没有历史记录的存储库中提取,git,laravel,github,repository,revision-history,Git,Laravel,Github,Repository,Revision History,我来这里是因为:我试图将我的存储库连接到另一个存储库以保持“最新”,但我试图不提取另一个存储库的全部历史 为了解释,我使用了Laravel 5(),并创建了我自己的master(它是Laravel/v5.0.1的一个分支)来定制内部的一些东西(如css框架、一些通用布局等)->称之为“azurky repo/master” 现在我想用laravel/master的最新提交更新我的存储库,但每次我从laravel/master中提取时,我的“git日志”中都充满了提交(大约4400个),我不想这样

我来这里是因为:我试图将我的存储库连接到另一个存储库以保持“最新”,但我试图不提取另一个存储库的全部历史

为了解释,我使用了Laravel 5(),并创建了我自己的master(它是Laravel/v5.0.1的一个分支)来定制内部的一些东西(如css框架、一些通用布局等)->称之为“azurky repo/master”

现在我想用laravel/master的最新提交更新我的存储库,但每次我从laravel/master中提取时,我的“git日志”中都充满了提交(大约4400个),我不想这样。(我是一个疯子,想要一个干净的存储库和对一切的大量控制^^)

在理想的情况下,我只想更新文件,然后用类似“更新自Laravel/master”的消息进行一次提交。 没有任何其他我根本不需要的额外历史记录条目或参考

未获成功:

git pull --depth 1 laravel master
我还有一个额外的历史记录。。。(上一条laravel/master提交消息未成功修改…可能遗漏了某些内容)

有人有主意了(或者我是唯一一个尝试这种事情的疯子…)

附言:

为了澄清,我希望得到与以下相同的结果:

  • 克隆my repo的最新版本(azursky repo/master)
  • 从laravel/master下载所有更新的文件
  • 用此文件覆盖我的存储库
  • 手动合并每个修改的文件
  • 然后通过“来自拉拉维尔/马斯格特的更新”推送到azursky repo/master
事实上,我不是受虐狂,我不想绕过git的合并功能^^

所以我想,终于有了这样一段历史:

  • Rev1:“初始提交-Laravel v5.0.1”
  • 修订2:“基金会5/SASS/Gulp的实施”
  • Rev3:“从laravel/master更新”
代替:

  • Rev1:“初始提交-Laravel v5.0.1”
  • 修订2:“基金会5/SASS/Gulp的实施”
  • 来自Laravel/master的4400个提交
  • Rev4403:“更新laravel/master时产生的合并冲突”(类似于此)
你看到我的希望了吗?

这可能是一种“黑客”方式。但是,每次你想从主回购中提取时,你可以从主回购中提取git,然后rm文件夹中的.git文件,然后
git init
,然后
git push-force
到你的回购版本。

终于得到了它

答案很简单:

git reset HEAD
对不起,我对git真的很陌生,所以今天下午在阅读了关于这类主题的问题后,我找到了解决方案。没有完全了解索引,现在更好了=)

因此,从一开始,我就有一个新的回购协议,只有一个初始承诺:

git clone git@mygitserver:myuser/myrepo
git log
commit 1
   Initial commit - Laravel v5.0.1 
然后我从拉威尔/大师那里拉车

git remote add laravel https://github.com/laravel/laravel.git
git pull laravel master
git reset HEAD
git add --all
git commit -m 'Update from laravel/master'
git log
commit 2
    Update from laravel/master
commit 1  
    Initial commit - Laravel v5.0.1
看起来没问题,然后我再做一个修改。平心而论:

git rm -rf resources/assets/less/
git add --all
git commit -m 'Suppression de bootstrap'
git log 
commit 3
    Suppression de bootstrap
commit 2
    Update from laravel/master
commit 1  
    Initial commit - Laravel v5.0.1
注:我写commit 1/2/3当然是为了简化

然后要特别确定的是:

git push origin master
并查看存储库网页

(对不起,我没有权利放置img)

对我来说没关系()


最后,我喜欢git的工作方式=)

这听起来有点像过早的优化。Git的历史非常擅长压缩东西。在拉威尔的例子中,这是160万对1200万。考虑到有超过4000次提交,没有太大的区别。不,这不是优化的问题,我只是根本不想要这个额外的提交历史记录。就好像我下载了更新的文件,并用手动方式覆盖和合并了我的存储库一样。但我很欣赏自动合并,这就是为什么我要用Git来做,我不是受虐狂。下面我要澄清一下(因为我无权编辑=()你应该始终能够编辑你自己的问题。不要在答案中添加澄清,它可能会被删除。为什么不克隆Laravel并从那里开始工作,而不是在“初始提交”中复制它?这样你就可以一直处理你自己的东西,偶尔将当前的发展情况从Laravel合并到你自己的分支中。编辑问题以使其更清楚。关于你的回答,我会说“可能”,但我真的不明白你想解释什么^^这次“合并到我自己的分支中”会产生什么结果?是的,我认为它可以完成这项工作,但这是一种“艰难的方式”^^^我要等着看是否有人有一个更温和的想法=)基于你自己的答案,在处理了一些问题后,比如清理标签,我创建了一个