git গিটহাব - কিভাবে আমি একটি নতুন স্থানীয় শাখা একটি রিমোট গিট রিপোজিটরিতে ধাক্কা দিই এবং এটিও ট্র্যাক করি?




github (12)

আমি নিম্নলিখিত কাজ করতে সক্ষম হতে চান:

  1. অন্য কোন (দূরবর্তী বা স্থানীয়) শাখার উপর ভিত্তি করে একটি স্থানীয় শাখা তৈরি করুন ( git branch বা git checkout -b )

  2. রিমোট রিপোজিটরি (প্রকাশ) করতে স্থানীয় শাখাকে চাপুন, তবে এটি ট্র্যাকযোগ্য করে তুলুন যাতে git pull এবং git push অবিলম্বে কাজ করবে।

আমি কেমন করে ঐটি করি?

আমি জানি জিট 1.7 --set-upstream , কিন্তু এটি একটি পোস্ট-সৃষ্টি পদক্ষেপ। রিমোট রিপোজিটরিতে শাখা ধাক্কা দিলে আমি একই রকম পরিবর্তন করতে চাই।


Answers

আমি মনে করি আপনি ইতিমধ্যে একটি প্রকল্প ক্লোন করেছেন:

git clone http://github.com/myproject.git
  1. তারপরে আপনার স্থানীয় অনুলিপিটিতে একটি নতুন শাখা তৈরি করুন এবং এটি পরীক্ষা করে দেখুন:

    git checkout -b <newbranch>
    
  2. আপনি আপনার সার্ভারে একটি "গিট বেয়ার - ইনাট" তৈরি করেছেন এবং 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 কিভাবে একটি ভাল।

যোগ করা হয়েছে

একটি দূরবর্তী শাখা যোগ করুন:

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.7 এর পূর্বে GitLab সংস্করণের জন্য, ব্যবহার করুন:

git checkout -b name_branch

(name_branch, ex: master)

রিমোট রিপোজিটরিতে এটি ধাক্কা দেওয়ার জন্য, করুন:

git push -u origin name_new_branch

(name_new_branch, উদাহরণ: বৈশিষ্ট্য)


পুরানো সম্পাদনা করুন , শুধুমাত্র git push -u origin $BRANCHNAME ব্যবহার করুন git push -u origin $BRANCHNAME

উইলিয়ামের বিবিধ গিট সরঞ্জামগুলি ( গিটারিয়াস রেপো এবং clone ) থেকে git publish-branch ব্যবহার করুন।

ঠিক আছে, রুবি, তাই না - সুরক্ষা উপেক্ষা! - স্ক্রিপ্টের শেষ তিনটি লাইন গ্রহণ করুন এবং একটি ব্যাশ স্ক্রিপ্ট তৈরি করুন, 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 সাধারণত উত্স হয় (আপনি ডিফল্ট হিসাবে উত্স হিসাবে স্ক্রিপ্ট সংশোধন করতে পারেন, ইত্যাদি ...)


আমি একটি উপনাম তৈরি করেছি যাতে যখনই আমি একটি নতুন শাখা তৈরি করি, এটি তত্সহ দূরবর্তী শাখাকে ধাক্কা দেবে এবং ট্র্যাক করবে। আমি .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 দিয়ে gcb thuy/do-sth-kool টাইপ করুন আমার নতুন শাখা নাম।


একটি পাবলিক রিপোজিটরি আপনার স্থানীয় শাখা আপলোড করার জন্য, আপনি জনসাধারণের সংগ্রহস্থল cd করতে হবে এবং তারপর নিম্নলিখিত কোড ব্যবহার করুন:

git push -u origin branchname

বিদ্যমান শাখা থেকে বন্ধ শাখা দ্বারা একটি নতুন শাখা তৈরি করতে

git checkout -b <new_branch>

এবং তারপর ব্যবহার করে রিপোজিটরি এই নতুন শাখা ধাক্কা

git push -u origin <new_branch>

এটি একটি নতুন তৈরি হওয়া দূরবর্তী শাখা origin/<new_branch> সমস্ত স্থানীয় origin/<new_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

যদি আপনি অন্যদের সাথে আপনার রেপো ভাগ করে না থাকেন তবে আপনার সমস্ত শাখাগুলি দূরবর্তী স্থানে এবং --set-upstream ট্র্যাকিং সঠিকভাবে ট্র্যাক করার জন্য এটি দরকারী:

git push --all -u

(ওপিকে ঠিক কি জিজ্ঞাসা করা হয় নি, কিন্তু এই এক-মাছ ধরার নৌকা বেশ জনপ্রিয়)

আপনি যদি অন্যদের সাথে আপনার রেপো ভাগাভাগি করেন তবে এটি আপনার পক্ষে ভাল নয় কারণ আপনার সমস্ত ডোজী পরীক্ষামূলক শাখার সাথে রেপোটি বন্ধ করা হবে।


জিট 1.7.0 এবং পরে, আপনি একটি নতুন শাখা চেকআউট করতে পারেন:

git checkout -b <branch>

ফাইল সম্পাদনা, যোগ করুন এবং প্রতিশ্রুতিবদ্ধ। তারপর -u (push --set-upstream জন্য সংক্ষিপ্ত) বিকল্পটি --set-upstream :

git push -u origin <branch>

গিট ধাক্কা সময় ট্র্যাকিং তথ্য সেট আপ করবে।


আমি কেবল না

git push -u origin localBranch:remoteBranchToBeCreated

ইতিমধ্যে একটি ক্লোন প্রকল্প।

গিট remoteBranchToBeCreated আমার remoteBranchToBeCreated অধীনে remoteBranchToBeCreated তৈরি করা একটি নতুন শাখা তৈরি localBranch


এখানে উত্তরগুলির উপর সামান্য তৈরি করা, আমি এই প্রক্রিয়াটিকে একটি সাধারণ বাশ স্ক্রিপ্ট হিসাবে আবৃত করেছি, যা অবশ্যই গিট ওরফে হিসাবে ব্যবহার করা যেতে পারে।

আমার কাছে গুরুত্বপূর্ণ সংযোজন হল যে এটি ডিফল্টভাবে বর্তমান শাখার নামটি প্রেরণ এবং পাস করার আগে ইউনিট পরীক্ষা চালানোর জন্য আমাকে অনুরোধ করে।

$ 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

আপনি যা করছেন তা সব দূরবর্তী শাখাগুলি পেতে হবে, তবে এটি তাদের জন্য স্থানীয় শাখাগুলি তৈরি করবে না। আপনি gitk ব্যবহার করলে, আপনাকে দূরবর্তী শাখাগুলিকে "রিমোট / মূল / ডেভ" বা অনুরূপ কিছু হিসাবে বর্ণনা করা উচিত।

একটি দূরবর্তী শাখার উপর ভিত্তি করে একটি স্থানীয় শাখা তৈরি করতে, এরকম কিছু করুন:

git checkout -b dev refs/remotes/origin/dev

যা ভালো কিছু ফেরত করা উচিত:

Branch dev set up to track remote branch refs/remotes/origin/dev.
Switched to a new branch "dev"

এখন, যখন আপনি ডেভ শাখাতে থাকবেন, তখন "গিট পুল" দূরবর্তী ডেভ শাখা হিসাবে একই স্থানে আপনার স্থানীয় ডেভ আপডেট করবে। মনে রাখবেন যে এটি সমস্ত শাখাগুলি আনবে, কিন্তু শুধুমাত্র আপনি যেটির উপরে গাছের উপরে যাবেন তা টেনে আনুন।





git repository git-branch git-push