2016-07-09 19 views
0

ich eine ungerade Zuordnung haben, und ich bin nicht sicher, wie dies zu tun ...Recreating git schiebt

ich an einem öffentlichen Repo suchen müssen und einmal täglich alle Schübe nehmen, die auf dem Repo passiert ist und push sie über ein einzelnes Konto zu einem anderen Repo. Irgendwie wie ein Spiegel, aber mehr von einem re-commit alle Stöße

+1

Ziehen Sie vom öffentlichen Server und drücken Sie auf die alternative Fernbedienung (nach dem Hinzufügen der zusätzlichen Fernbedienung). – crashmstr

+2

cron job? "Geben Sie mindestens 15 Zeichen ein" –

+0

* "alle Pushs neu committen" * macht für mich keinen Sinn. Kannst du den Auftrag klären? Für mich hört es sich so an, als ob Sie alle Commits für einen Tag in einen einzigen zerlegen und diesen Zweig in ein anderes Repository übertragen möchten. –

Antwort

2

Sie müssen dazu den Befehl reset und rebase verwenden.

Sie Unter der Annahme haben repo.url

git clone repo.url 
git remote add neworigin newrepo.url 

Jetzt Zweig auf lokale Kopie erstellen

git checkout -b myworkbranch 

1) Zum ersten Mal begehen, indem er einzelne Konto

In diesem Moment Meister und myworkbranch sind in sync

Jetzt sehen Sie das Protokoll aller Änderungen, die auf repo.url getan und sehen die erste begehen, nehmen Sie den Kopf dort durch git mit Reset --soft

Danach alle Dateien hinzufügen, wie Sie normale Push tun

git add --all 
git commit -m "My combined push" 
git push neworigin myworkbranch:master 

Diese in alle Änderungen vorantreiben wird einzelne ersten Mal begehen, beachten Sie die commit id

2) Laufende Zug- und Änderungen drücken

git checkout master 
git pull 
git checkout myworkbranch 
git rebase master 
git log 

nun wieder sind Sie bereit zurücksetzen

git reset --soft id zu begehen bemerkt man früher

git add --all 
git commit -m "My second combined commit" 
git push neworigin myworkbranch:master 

auf Wiederholung Halten Sie sollten nicht getestet, aber arbeiten.

+0

Danke! Schätze es wirklich –

2

Angenommen, Sie Repository bereits geklont haben, fügen Sie eine andere Fernbedienung, wo Sie drücken möchten, z.

git remote add mirror [email protected]:foo/bar.git 

zieht dann von origin (upstream) und zu einer anderen Verwahrungsstelle schieben, z.B.

git pull origin master 
git push mirror master 

Stellen Sie sicher, dass Sie über entsprechenden Zugriff auf beide Repositories verfügen.

Um Ihre aktuellen konfigurierten Fernbedienungen zu überprüfen, führen Sie: git remote -v.

Um diese Aufgabe einmal am Tag zu erledigen, erstellen Sie ein Skript und fügen Sie dessen Ausführung zu crontab hinzu oder wenn Sie Linux verwenden, kopieren Sie das Skript in den Ordner /etc/cron.daily (sofern es von Ihrem System unterstützt wird).

+0

Vielen Dank! Wirklich zu schätzen es –