delete - git push origin master




كيف يمكنني دفع فرع محلي جديد إلى مستودع Git عن بعد وتتبعه أيضًا؟ (9)

أفترض أنك قمت بالفعل باستنساخ مشروع مثل:

git clone http://github.com/myproject.git
  1. ثم في نسختك المحلية ، قم بإنشاء فرع جديد وتحقق من ذلك:

    git checkout -b <newbranch>
    
  2. لنفترض أنك قمت بعمل "git bare --init" على الخادم الخاص بك وأنشأت myapp.git ، يجب عليك:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. بعد ذلك ، يجب أن يكون المستخدمون قادرين على

    git clone http://example.com/var/git/myapp.git
    

ملاحظة: أفترض أن لديك خادم الخاص بك وتشغيلها. إذا لم يكن كذلك ، فلن ينجح. جيد كيف يكون here .

ADDED

إضافة فرع بعيد:

git push origin master:new_feature_name

تحقق مما إذا كان كل شيء جيدًا (مصدر الجلب وقائمة الفروع البعيدة):

git fetch origin
git branch -r

إنشاء فرع محلي وتتبع الفرع البعيد:

git checkout -tb new_feature_name origin/new_feature_name

تحديث كل شيء:

git pull

أريد أن أكون قادرًا على القيام بما يلي:

  1. إنشاء فرع محلي يعتمد على فرع آخر (عن بعد أو محلي) (عن طريق git branch أو git checkout -b )

  2. دفع الفرع المحلي إلى مستودع بعيد (نشر) ، ولكن جعلها تتبعها حتى git pull git push و git push سوف تعمل على الفور.

كيف يمكنني فعل ذلك؟

وأنا أعلم عن --set-upstream في Git 1.7 ، ولكن هذا هو إجراء ما بعد الإنشاء. أريد أن أجد طريقة لإجراء تغيير مماثل عند دفع الفرع إلى المستودع البعيد.


أنا ببساطة أفعل

git push -u origin localBranch:remoteBranchToBeCreated

على مشروع مستنسخ بالفعل.

ينشئ Git فرعًا جديدًا باسم remoteBranchToBeCreated تحت remoteBranchToBeCreated قمت بها في localBranch .


ببساطة ، لإنشاء فرع محلي جديد ، قم بما يلي:

git branch <branch-name>

لدفعها إلى مستودع بعيد ، قم بما يلي:

git push -u origin <branch-name>

بناء على الأجوبة بشكل طفيف هنا ، لقد قمت بلف هذه العملية كبرنامج نصي بسيط في Bash ، والذي يمكن بالطبع استخدامه كأداة Git أيضًا.

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

$ git_push_new_branch.sh

  Have you run your unit tests yet? If so, pass OK or a branch name, and try again

  usage: git_push_new_branch {OK|BRANCH_NAME}

  e.g.

  git_push_new_branch           -> Displays prompt reminding you to run unit tests
  git_push_new_branch OK        -> Pushes the current branch as a new branch to the origin
  git_push_new_branch MYBRANCH  -> Pushes branch MYBRANCH as a new branch to the origin

git_push_new_branch.sh

function show_help()
{
  IT=$(CAT <<EOF

  Have you run your unit tests yet? If so, pass OK or a branch name, and try again

  usage: git_push_new_branch {OK|BRANCH_NAME}

  e.g.

  git_push_new_branch.sh           -> Displays prompt reminding you to run unit tests
  git_push_new_branch.sh OK        -> Pushes the current branch as a new branch to the origin
  git_push_new_branch.sh MYBRANCH  -> Pushes branch MYBRANCH as a new branch to the origin

  )
  echo "$IT"
  exit
}

if [ -z "$1" ]
then
  show_help
fi

CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$1" == "OK" ]
then
  BRANCH=$CURR_BRANCH
else
  BRANCH=${1:-$CURR_BRANCH}
fi

git push -u origin $BRANCH

قبل إدخال git push -u ، لم يكن هناك خيار git push للحصول على ما تريده. يجب عليك إضافة بيانات التكوين الجديدة.

إذا قمت بإنشاء فرع جديد باستخدام:

$ git checkout -b branchB
$ git push origin branchB:branchB

يمكنك استخدام أمر git config لتجنب تحرير ملف .git/config مباشرة.

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

أو يمكنك تحرير ملف .git/config يدويًا لتتبع معلومات هذا الفرع.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB

لإنشاء فرع جديد بالتفرع من الفرع الحالي

git checkout -b <new_branch>

ثم دفع هذا الفرع الجديد إلى مستودع باستخدام

git push -u origin <new_branch>

هذا يخلق ويدفع جميع الالتزامات المحلية إلى origin/<new_branch> فرع حديث المنشأ حديثا origin/<new_branch>


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

# Create a new branch, push to origin and track that remote branch
publishBranch() {
  git checkout -b $1
  git push -u origin $1
}
alias gcb=publishBranch

الاستخدام : فقط اكتب gcb thuy/do-sth-kool مع thuy/do-sth-kool هو اسم الفرع الجديد.


للحصول على إصدار GitLab قبل 1.7 ، استخدم:

git checkout -b name_branch

(name_branch، ex: master)

لدفعها إلى مستودع بعيد ، قم بما يلي:

git push -u origin name_new_branch

(name_new_branch، example: feature)


تحرير عفا عليها الزمن ، مجرد استخدام git push -u origin $BRANCHNAME

استخدم git publish-branch من أدوات Git المتنوعة من William ( الريبو والاستنساخ الجريء ).

حسنا ، لا روبي ، لذلك - تجاهل الضمانات! - خذ الأسطر الثلاثة الأخيرة من النص البرمجي وقم بإنشاء برنامج نصي bash ، git-publish-branch :

#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}

ثم قم بتشغيل git-publish-branch REMOTENAME BRANCHNAME ، حيث يكون REMOTENAME عادةً أصلًا (يمكنك تعديل البرنامج النصي ليأخذ المصدر كإعداد افتراضي ، إلخ ...)





git-push