重新创建 git 个推送
Recreating git pushes
我有一个奇怪的任务,我不知道该怎么做...
我需要查看一个 public 存储库,每天一次获取该存储库上发生的所有推送,并通过一个帐户将它们重新推送到另一个存储库。有点像一面镜子,但更像是重新提交所有推送
假设您已经克隆了存储库,将另一个远程添加到您要推送的位置,例如
git remote add mirror git@github.com:foo/bar.git
然后从 origin
(上游)拉取并推送到另一个存储库,例如
git pull origin master
git push mirror master
确保您有适当的访问权限来推送到两个存储库。
要检查您当前配置的遥控器,运行:git remote -v
。
要每天执行一次此任务,请创建一个脚本并将其执行添加到 crontab
,或者如果您使用的是 Linux,则将脚本复制到 /etc/cron.daily
文件夹(如果您的系统支持它)。
您需要使用 reset 和 rebase 来执行此操作。
假设你有 repo.url
git clone repo.url
git remote add neworigin newrepo.url
现在在本地副本上创建分支
git checkout -b myworkbranch
1) 单个账户首次提交
此时master和myworkbranch是同步的
现在查看在 repo.url 上完成的所有更改的日志并查看第一个提交,使用 git reset --soft
然后像正常推送一样添加所有文件
git add --all
git commit -m "My combined push"
git push neworigin myworkbranch:master
这将在第一次提交时推送所有更改,注意提交 ID
2) 持续拉取和更改推送
git checkout master
git pull
git checkout myworkbranch
git rebase master
git log
现在您再次准备好重置
git reset --soft 提交你之前记下的id
git add --all
git commit -m "My second combined commit"
git push neworigin myworkbranch:master
继续重复
未测试,但应该可以。
我有一个奇怪的任务,我不知道该怎么做...
我需要查看一个 public 存储库,每天一次获取该存储库上发生的所有推送,并通过一个帐户将它们重新推送到另一个存储库。有点像一面镜子,但更像是重新提交所有推送
假设您已经克隆了存储库,将另一个远程添加到您要推送的位置,例如
git remote add mirror git@github.com:foo/bar.git
然后从 origin
(上游)拉取并推送到另一个存储库,例如
git pull origin master
git push mirror master
确保您有适当的访问权限来推送到两个存储库。
要检查您当前配置的遥控器,运行:git remote -v
。
要每天执行一次此任务,请创建一个脚本并将其执行添加到 crontab
,或者如果您使用的是 Linux,则将脚本复制到 /etc/cron.daily
文件夹(如果您的系统支持它)。
您需要使用 reset 和 rebase 来执行此操作。
假设你有 repo.url
git clone repo.url
git remote add neworigin newrepo.url
现在在本地副本上创建分支
git checkout -b myworkbranch
1) 单个账户首次提交
此时master和myworkbranch是同步的
现在查看在 repo.url 上完成的所有更改的日志并查看第一个提交,使用 git reset --soft
然后像正常推送一样添加所有文件
git add --all
git commit -m "My combined push"
git push neworigin myworkbranch:master
这将在第一次提交时推送所有更改,注意提交 ID
2) 持续拉取和更改推送
git checkout master
git pull
git checkout myworkbranch
git rebase master
git log
现在您再次准备好重置
git reset --soft 提交你之前记下的id
git add --all
git commit -m "My second combined commit"
git push neworigin myworkbranch:master
继续重复
未测试,但应该可以。