Git 从另一个没有历史记录的仓库中拉取
Git pull from another repository without history
我来这里是因为:我尝试将我的存储库连接到另一个存储库以保留 "up to date" 但我试图不提取另一个存储库的整个历史...
为了解释,我使用 Laravel 5 (https://github.com/laravel/laravel) 并且我创建了我自己的母版(它是 laravel/v5.0.1 的一个分支)来定制里面的一些东西(比如css 框架、一些通用布局等)-> 称其为 "azurky-repo/master"
现在我想用 laravel/master 的最新提交更新我的存储库,但每次我从 laravel/master 拉取时,我的 "git log" 都充满了提交(大约 4400),我不想要这个。 (我是个疯子,想要一个干净的存储库和对一切的大量控制^^)。
在理想的情况下,我想只更新文件,然后只一次提交'Update from Laravel/master'。
没有任何其他我根本不需要的额外历史条目或参考。
试了没成功:
git pull --depth 1 laravel master
我还有一个额外的历史条目...(最后的laravel/master 提交消息并没有成功修改...可能遗漏了什么)
有人有想法(或者我是唯一一个尝试这种事情的疯子..)?
P.S :
澄清一下,我希望得到与我相同的结果:
- 克隆我的 repo 的最新版本 (azursky-repo/master)
- 从laravel/master
下载所有更新文件
- 用这个文件覆盖我的存储库
- 手动合并每个修改过的文件
- 然后用"Update from laravel/masgter"
推送到azursky-repo/master
其实我不是受虐狂,不想绕过git的合并能力...^^
所以我觉得终于有了这段历史:
- 修订版 1:"Inital commit - Laravel v5.0.1"
- 修订版 2:"Implementation of Foundation5 / SASS / Gulp"
- 修订版 3:"Update from laravel/master"
代替:
- 修订版 1:"Inital commit - Laravel v5.0.1"
- 修订版 2:"Implementation of Foundation5 / SASS / Gulp"
- 4400 次提交来自 Laravel/master
- Rev4403:"Merge conflict from updating laravel/master"(类似这样)
你看到我希望的了吗?
这可能有点像 "hack" 的做法。但是,您可以 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
然后我从laravel/master
拉
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
N.B : 我写 commit 1/2/3 当然是为了简化
然后要格外确定:
git push origin master
并查看存储库网页
http://i.stack.imgur.com/7XMzb.jpg
(对不起没有放img的权利)
我没问题=)
最后我喜欢 git 的工作方式 =)
我来这里是因为:我尝试将我的存储库连接到另一个存储库以保留 "up to date" 但我试图不提取另一个存储库的整个历史...
为了解释,我使用 Laravel 5 (https://github.com/laravel/laravel) 并且我创建了我自己的母版(它是 laravel/v5.0.1 的一个分支)来定制里面的一些东西(比如css 框架、一些通用布局等)-> 称其为 "azurky-repo/master"
现在我想用 laravel/master 的最新提交更新我的存储库,但每次我从 laravel/master 拉取时,我的 "git log" 都充满了提交(大约 4400),我不想要这个。 (我是个疯子,想要一个干净的存储库和对一切的大量控制^^)。
在理想的情况下,我想只更新文件,然后只一次提交'Update from Laravel/master'。 没有任何其他我根本不需要的额外历史条目或参考。
试了没成功:
git pull --depth 1 laravel master
我还有一个额外的历史条目...(最后的laravel/master 提交消息并没有成功修改...可能遗漏了什么)
有人有想法(或者我是唯一一个尝试这种事情的疯子..)?
P.S :
澄清一下,我希望得到与我相同的结果:
- 克隆我的 repo 的最新版本 (azursky-repo/master)
- 从laravel/master 下载所有更新文件
- 用这个文件覆盖我的存储库
- 手动合并每个修改过的文件
- 然后用"Update from laravel/masgter" 推送到azursky-repo/master
其实我不是受虐狂,不想绕过git的合并能力...^^
所以我觉得终于有了这段历史:
- 修订版 1:"Inital commit - Laravel v5.0.1"
- 修订版 2:"Implementation of Foundation5 / SASS / Gulp"
- 修订版 3:"Update from laravel/master"
代替:
- 修订版 1:"Inital commit - Laravel v5.0.1"
- 修订版 2:"Implementation of Foundation5 / SASS / Gulp"
- 4400 次提交来自 Laravel/master
- Rev4403:"Merge conflict from updating laravel/master"(类似这样)
你看到我希望的了吗?
这可能有点像 "hack" 的做法。但是,您可以 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
然后我从laravel/master
拉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
N.B : 我写 commit 1/2/3 当然是为了简化
然后要格外确定:
git push origin master
并查看存储库网页
http://i.stack.imgur.com/7XMzb.jpg (对不起没有放img的权利)
我没问题=)
最后我喜欢 git 的工作方式 =)