بوابة دفع الفرع الحالي إلى جهاز التحكم عن بعد مع heroku

StackOverflow https://stackoverflow.com/questions/2401254

سؤال

أحاول إنشاء فرع انطلاق على هرمو، ولكن هناك شيء لا أحصل عليه تماما.

على افتراض أنني قمت بالفعل بإنشاء تطبيق Heroku وإعداد جهاز التحكم عن بعد للإشارة إلى التحكم عن بعد، إذا قمت بذلك:

git checkout -b staging staging-remote/master

أحصل على فرع محلي يسمى "التدريج" الذي يتسابق التدريج عن بعد / ماجستير - أو هذا ما اعتقدت ....

ولكن:

git remote show staging-remote

يعطيني هذا:

remote staging
  Fetch URL: git@heroku.com:myappname.git
  Push  URL: git@heroku.com:myappname.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    staging-remote merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

كما ترون، تبدو السحب معقولة، ولكن الضغط الافتراضي لا. إنه يعني أنه إذا قمت بذلك:

بوابة دفع التدريج عن بعد

انا ذاهب لدفع فرع الماجستير المحلي إلى فرع التدريج. ولكن هذا ليس ما أريد .... في الأساس، أريد دمج التحديثات في فرع الرش الخاص بي، ثم دفعها بسهولة إلى Heroku دون الحاجة إلى تحديد الفرع مثل ذلك:

git push staging-remote mybranch:master

ما سبق ليس من الصعب القيام به، لكنني أرغب في تجنب القيام بالضغط السابق بطريق الخطأ ودفع الفرع الخطأ ... هذا مهم مضاعفا لسلع الإنتاج أود إنشاءه!

لقد حاولت العبث بتكوين جيت، لكنه لم أحسب كيفية الحصول على هذا صحيح بعد ...

هل كانت مفيدة؟

المحلول

لقد اختبرتها و juba و @ إصدارات Matthewford تعمل تماما!

git config remote.staging.push staging:master

هذا يدفع فرع الموضوع المحلي الخاص بي تنظيم في فرع بعيد رئيس على مستودع البعيد اسمه تنظيم.

@ nickgrim ضعه في الشكل العام مثل ذلك:

git config remote.[remoteRepositoryName].push [localBranchName]:[remoteBranchName]

تحديث:

علاوة على ذلك، سيتم تشغيل GIT الحديث بسهولة أمر التكوين أعلاه لك عندك git push مع ال -u اختيار:

git push -u staging staging:master

نصائح أخرى

لدي فرع يسمى Heroku، وهذا يعمل بالنسبة لي:

git config remote.heroku.push heroku:master

المشكلة التي تواجهها هي Heroku يتجاهل جميع الفروع غير الماجستير.

من كتاب "O'Reilly - Version Control مع GIT" صفحة 184 | الفصل 11: المستودعات البعيدة

أثناء عملية دفع GIT، تريد عادة توفير التغييرات التي أجريتها على فروع الموضوع المحلي. للسماح للآخرين بالعثور على تغييراتك في المستودع البعيد بعد تحميلها، يجب أن تظهر تغييراتك في المستودع كفروع موضوعية. وبالتالي، خلال أمر دفع GIT نموذجي، يتم إرسال فروع المصدر من مستودعك إلى المستودع عن بعد باستخدام Refspec مثل:

+refs/heads/*:refs/heads/*

يمكن إعادة صياغة هذا RefSpec على النحو التالي: من المستودع المحلي، خذ كل اسم فرعي موجود تحت مساحة الاسم المصدر refs/heads/ ووضعها في فرع مطابقة بشكل مماثل تحت مساحة الاسم الوجهة refs/heads/ في مستودع البعيد. الأول refs/heads/ يشير إلى مستودعك المحلي (لأنك تقوم بتنفيذ دفع)، والثاني يشير إلى مستودع عن بعد. النجمة تأكد من تكرار جميع الفروع. ...


لهذا السبب يجب أن تفشل المثال من جوبا. يجب أن يكون Refrespec المصحح:

git config remote.staging-remote.push +refs/heads/local_branch_name:refs/heads/master

من الصفحة osiday git مع 20 أوامر أو نحو ذلك :

http://www.kernel.org/pub/software/scm/git/docs/everyday.html.

يبدو أنه يمكنك تحقيق ما تريد القيام به عن طريق إضافة توجيه التكوين إلى مستودع GIT المحلي الخاص بك، شيء مثل:

git config remote.staging-remote.push mybranch:refs/remotes/staging-remote/master

ثم، إذا كنت تفعل git push منك ميبرانش الفرع المحلي، يجب دفعه إلى رئيس فرع من الخاص بك التدريج عن بعد التحكم عن بعد.

ومع ذلك، يرجى التحقق مع git remote show staging-remote واختبارها بعناية قبل استخدامها، وأنا بعيد عن خبير جيت ...

لم أستطع معرفة طريقة للقيام بذلك، ولكن في النهاية وجدت مهمة أشعل النار مفيدة لجعلها سهلة:http://www.jbarnette.com/2009/11/10/deplying-to-heroku.html.

أواجه نفس المشكلة تحاول معرفة كيفية التعامل مع سياسة هيروكو تجاهل جميع الفروع ولكن "سيد". إنه يهزم كيندا نقطة واحدة للحفاظ على فروع منفصلة إذا كنت لا تستطيع فقط اختبار فرع السيد على هيروكو.

نتيجة هذا التقييد هو أنه مهما كان فرع موضوع محلي قد أعمل عليه، أود وسيلة سهلة لتبديل ماجستير Heroku إلى هذا الفرع الموضوع المحلي والقيام ب "دفع جيت -F" إلى سيد الكتابة على Heroku. وغني عن القول، سيكون من الجيد جدا أن يكون لديك مستودع منفصل عن بعد (مثل Github)، لدعم كل شيء دون هذا التقييد. أود أن أتصل بهذا "الأصل" واستخدم "Heroku" ل Heroku بحيث يدعم "Git Push" دائما كل شيء.

ما حصلت عليه من قراءة قسم "دفع refspecs" من http://progit.org/book/ch9-5.html. يكون

Git Push Heroku Local-Tranch-Tranch: Refs / Heads / Master

ما أعجبني حقا هو وسيلة لتعيين هذا الملف في ملف التكوين بحيث يفعل "Git Push Heroku" دائما ما ورد أعلاه، واستبدال "فرع الموضوع المحلي" باسم كل ما يحدث فرعي الحالي.

قد أسأل هذا كمسألة جديدة، لمعرفة ما إذا كان أي شخص آخر قد اكتشف كيفية القيام بذلك.

هذا يعمل. لقد استخدمتها أكثر من عدة مرات لإنشاء عملاء مع GIT-Flow و Heroku وخدمة Git Backup.

.git / التكوين للريبو:

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  ignorecase = true
[heroku]
  account = youraccount
[remote "origin"]
  url = git@bitbucket.org:youruser/yoursite.heroku.com.git # or github, etc.
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master
[branch "staging"]
  remote = origin
  merge = refs/heads/staging
[branch "develop"]
  remote = origin
  merge = refs/heads/develop
[remote "production"]
  pushurl = git@heroku.com:your-prod-app.git
  push = master:master
[remote "staging"]
  pushurl = git@heroku.com:your-staging-app.git
  push = staging:master

كل العمل بشكل صحيح:

git push origin

git pull origin

git push staging

git push production

فكر في جلب ودفع مثل Stdout و Stdin، حيث يمكن إعادة توجيه أو إغلاق كلاهما ليكون طريقة واحدة. أيضا إذا كان أي شخص يعرف كيفية الحصول على هذه الإعدادات دون اختراق. جيت / التكوين، فلا تتردد في التعديل مع تعديل، من المؤكد أن نقاط الكرمة متابعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top