বিটবাকেট থেকে গিথুবে সমস্ত শাখার সাথে গিট সংগ্রহস্থল কীভাবে সরানো যায়?


334

বিটবাকেট থেকে গিথব থেকে সমস্ত শাখা এবং সম্পূর্ণ ইতিহাস সহ গিট রিপোজিটরি সরানোর সর্বোত্তম উপায় কী? আমাকে ব্যবহার করার মতো কোনও স্ক্রিপ্ট বা কমান্ডের একটি তালিকা আছে?


9
গিথুব তার জন্য সরঞ্জাম এবং ডকুমেন্টেশন সরবরাহ করে: help.github.com/articles/… help.github.com/articles/…
মেমস

পার্টিতে কিছুটা দেরি হলেও এখানে মাইগ্রেশনের জন্য একটি স্ক্রিপ্ট রয়েছে: gist.github.com/chinmaya-n/cff02f1277c811deab2e550f2aad9967
inblueswithu

উত্তর:


394

আপনি GitHub পৃষ্ঠা "পাঠাতে পারেন একটি সংগ্রহস্থলের ডুফলিকেট করুন "

এটি ব্যবহার করে:

  • git clone --mirror: প্রতিটি রেফারেন্স (কমিট, ট্যাগ, শাখা) ক্লোন করতে
  • git push --mirror: সবকিছু ধাক্কা

যে দিতে হবে:

git clone --mirror https://bitbucket.org/exampleuser/repository-to-mirror.git
# Make a bare mirrored clone of the repository

cd repository-to-mirror.git
git remote set-url --push origin https://github.com/exampleuser/mirrored
# Set the push location to your mirror

git push --mirror

হিসাবে উল্লিখিত মন্তব্যে দ্বারা গুলি নির্মিত LS :


2
এই পদ্ধতিটি আমার জন্য একটি সমস্যা তৈরি করেছে (এটি সমস্যা কিনা তা নিশ্চিত নয়)। আমি যখন বিটবাকেট থেকে গিথুব পর্যন্ত রেপো মিরর করেছিলাম তখন 5 টি শাখার জন্য এটি গিথুবে "তুলনা করুন এবং তুলনামূলক অনুরোধ" হিসাবে দেখানো হয়েছে। এটি গিথুবে শাখা হিসাবে দেখানো হয় না। আমি এটি সম্পর্কে কি করতে পারি?
সিদ্ধার্থ

2
এবং তারপরে ইস্যু এবং উইকিস সম্পর্কে কী বলা যায়?
ভ্লাদিস্লাভ রাস্ট্রুসনি

@ ফ্র্যাক্টালাইজআর উইকি হ'ল অন্য একটি রেপো, যা আপনিও প্রতিলিপি করতে পারবেন ( github.com/blog/699-making-github-more-open-git-backed-wikis )। যদিও সমস্যাগুলি প্রতিরূপ করার সহজ উপায় নেই। আপনাকে এপিআই ব্যবহার করতে হবে (বিভিন্ন গিটহাব রেপো ব্যাকআপ প্রোগ্রামগুলি কেবল এটি করে: addyosmani.com/blog/backing-up-a-github-account )
ভনসি

3
আপনি যদি গিথুব থেকে বিটবকেটেও একটি সংগ্রহস্থল স্থানান্তর করতে চান তবে এটি কাজ করে।
সাইমেগ

1
রেপো অনুলিপি করার জন্য আমার এই পদ্ধতিটি ব্যবহার করা দরকার কারণ এতে একটি বড় ফাইল (> 100 এমবি) রয়েছে। জিএইচ তাদের পোস্টগুলিতে বড় ফাইলগুলির অনুমতি দেয় না। আমি রেপোটিকে জিএইচে চাপ দেওয়ার আগে বড় ফাইলটি সরিয়ে ফেললাম। তবে অন্যান্য সমস্যাগুলি বাদ দিয়ে জিএইচ এর " আমদানি সংগ্রহস্থল " বৈশিষ্ট্যটি ব্যবহার করা হ'ল 95% সময় সঠিক পছন্দ , অন্য উত্তরে বর্ণিত হিসাবে । তবে এটি ব্যর্থ হলে এটি সহায়ক ত্রুটি বার্তা দেয় না এবং আপনাকে অবশ্যই জিএইচ সহায়তায় যোগাযোগ করতে হবে। এটি জিএইচ সমর্থন যা আমাকে ফাইল আকারের সীমাবদ্ধতার বিষয়ে অবহিত করেছিল।
এলএস

412

এটা খুবই সাধারণ.

গিটহাবে একটি নতুন খালি সংগ্রহশালা তৈরি করুন (রিডমে বা লিসেন ছাড়াই আপনি এগুলি যুক্ত করতে পারেন) এবং নীচের স্ক্রিনটি প্রদর্শিত হবে

2- কোড অপশন আমদানির অভ্যন্তরে আপনি আপনার বিটবাকেট ইউআরএল এর রেপো এবং ভয়েলেট পেস্ট করুন!

আমদানি কোডে ক্লিক করুন


12
আপনি সত্যই এখানে প্রশ্নের উত্তর দিচ্ছেন, যেমন গৃহীত উত্তরটি কেবল একটি জেনেরিক গিট সম্পর্কিত পদ্ধতি দেখায়। আপনার উত্তরটি সহজতর!
এমিল বার্গারন

6
এই উত্তরটি ততক্ষণ ভাল যতক্ষণ আপনি ভান্ডার তৈরি করছেন এবং এটি খালি থাকে। যদি অন্য কেউ আপনার জন্য ভান্ডার তৈরি করে (শাখা তৈরির প্রশাসক ইনচার্জের মতো) তবে এটি কার্যকর হয় না। গৃহীত উত্তর হ'ল এই ক্ষেত্রে যাওয়ার উপায়।
মাস্টার.ওরোরা

4
অন্য কেউ এই পদ্ধতিটি ব্যবহার করার বিষয়ে ভাবছেন, আপনি এই পরিষেবাটি ব্যবহারের আগে আপনার পূর্ববর্তী সংগ্রহস্থলের হোস্টের উপর আপনার দ্বি-গুণক প্রমাণীকরণটি সরিয়ে ফেলুন, অন্যথায় আপনি গিটহাবের সদ্য নির্মিত সংগ্রহস্থলটি সরিয়ে নেওয়ার চেষ্টা করার একটি অন্তহীন লুপে আটকে যাবেন, এবং এ থেকে বেরিয়ে আসার একমাত্র উপায় হ'ল /importURL এর শেষে /settingsথাকা সেটিংসটি অ্যাক্সেস করতে এবং এটি সরিয়ে ফেলা।
ডেভ

1
ছোট সতর্কতা- যদি আপনি কোনও সমস্যা চালিত হন তবে আপনি বর্ণনামূলক ত্রুটি বার্তা পাবেন না।
রবার্টএইচ

জিএইচ এর " আমদানি সংগ্রহস্থল " বৈশিষ্ট্যটি ব্যবহার করা 95% সময় সঠিক পছন্দ । তবে এটি ব্যর্থ হলে এটি সহায়ক ত্রুটি বার্তা দেয় না এবং আপনাকে অবশ্যই জিএইচ সহায়তায় যোগাযোগ করতে হবে। আমি এটি একটি রেপোর জন্য ব্যবহার করতে পারিনি কারণ এতে একটি বড় ফাইল (> 100MB) রয়েছে। জিপিএইচ-তে রেপো চাপানোর ঠিক আগে বড় ফাইলটি সরিয়ে আমার গ্রহণযোগ্য সিএলআই পদ্ধতিটি ব্যবহার করা দরকার ।
এলএস

125

যদি আপনি গিথুবে "আমদানি কোড" বোতামটি খুঁজে না পান তবে আপনি এটি করতে পারেন:

  1. সরাসরি গিথুব আমদানিকারক খুলুন এবং প্রবেশ করুন url। এটির মতো দেখাবে:গিথুব আমদানিকারীর স্ক্রিনশট
  2. এটিকে একটি নাম দিন (অথবা এটি স্বয়ংক্রিয়ভাবে নামটি আমদানি করবে)
  3. নির্বাচন Publicবা Privateরেপো
  4. ক্লিক Begin Import

আপডেট: সম্প্রতি, গিটহাব "করার ক্ষমতা ঘোষণা বড় ফাইল সঙ্গে আমদানি ভান্ডার "


দুর্ভাগ্যক্রমে কোডবেসেক থেকে গিট-হাবের দিকে যাওয়ার চেষ্টা করার ক্ষেত্রে এটি কাজ করে না, একটি "এই ইউআরএল সমর্থিত নয়" দিয়েছিল। :(
sjmcdowall

@sjmcdowall দুঃখিত, এটি হয়নি তবে আমি বিশ্বাস করি যে কোডবেসেক ইউআরএল একটি গিট রিপোজিটরিতে নির্দেশ করার পরে এটি কাজ করা উচিত ছিল।
বিনিয়াম

ইউআরএল আর বিদ্যমান নেই।
কোডেড ধারক

@ কোডেড কনটেনার আমি সবেমাত্র যাচাই করেছি এবং এটি কার্যকর হয়। এমনকি আমি এখনই স্ক্রিনশট আপডেট করেছি।
বিনিয়াম

1
ইউআরএল কেবল 404 ফেরত আসবে যদি আপনি গিটহাবটিতে লগইন না করেন। আপনি লগ ইন থাকলে, আমদানি সরঞ্জামটি লোড হবে।
জেসন হার্ট

41

http://www.blackdogfoundry.com/blog/moving-repository-from-bitbucket-to-github/

এটি আমাকে একটি গিট সরবরাহকারী থেকে অন্য গতিতে যেতে সহায়তা করে। এটির শেষে, সমস্ত কমিটগুলি গন্তব্য গিটে ছিল। সরল এবং সরাসরি এগিয়ে।

git remote rename origin bitbucket
git remote add origin https://github.com/edwardaux/Pipelines.git
git push origin master

একবার আমি খুশী হয়েছি যে গিটহাবে এই ধাক্কা সফল হয়েছিল, আমি জারি করে পুরানো রিমোটটি মুছতে পারি:

git remote rm bitbucket

2
আপনার উত্তরে কোনও লিঙ্কের সম্পর্কিত অংশগুলি অন্তর্ভুক্ত করুন কারণ এটি নিজেরাই দাঁড়াতে সক্ষম হওয়া উচিত।
k0pernikus

আমি একটি ত্রুটি পেয়েছি যা বলছে "ত্রুটি: সোমাল রেফগুলিকে ' url.gi ' ইঙ্গিতটি ধাক্কা দিতে ব্যর্থ হয়েছে : আপডেটগুলি প্রত্যাখ্যান করা হয়েছিল কারণ রিমোটে এমন কাজ রয়েছে যা আপনার স্থানীয়ভাবে নেই This এটি সাধারণত একই রেফটিতে চাপ দেওয়া অন্য সংগ্রহস্থলের ফলে ঘটে। আপনি পুনরায় চাপ দেওয়ার আগে প্রথমে দূরবর্তী পরিবর্তনগুলি (যেমন টানুন ...) একীভূত করতে চাইতে পারেন details গিট পুশ - দ্রুত সহায়তা সম্পর্কে বিশদটির জন্য নোটটি দেখুন
কোডেড কনটেইনার

1
এটি এখনও একমাত্র উত্তর যা 3/3/2019 এ এখনও কাজ করছে :)
ওয়াং-ঝাও-লিউ কিউএম

13

আমার কাছে গিথব থেকে বিটবাকেটে বিদ্যমান সংগ্রহস্থল আমদানির বিপরীত ব্যবহারের কেস ছিল।

বিটবাকেট একটি আমদানি সরঞ্জামও সরবরাহ করে । একমাত্র প্রয়োজনীয় পদক্ষেপটি ইউপিএলটিকে সংগ্রহস্থলগুলিতে যুক্ত করা।

এটা দেখতে অনেকটা:

বিটবাকেট আমদানি সরঞ্জামের স্ক্রিনশট


5

আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন is আমি বেশ কয়েক মাস আগে এটি খুঁজে পেয়েছি যখন আমি একই জিনিসটি করার চেষ্টা করছিলাম এবং দেওয়া উত্তরগুলি দেখে হতাশ হয়ে পড়েছিল। তারা সকলেই বিটবকেট থেকে গিটহাবের এক সময়ে একটি সংগ্রহস্থল আমদানি করার বিষয়টি নিয়ে মনে হয়েছিল, হয় কমান্ড-লা কারতে বা গিটহাব আমদানিকারকের মাধ্যমে।

আমি গিটারহাব প্রকল্পটি জিটার নামে একটি কোড পেয়েছি এবং এটি আমার প্রয়োজন অনুসারে সংশোধন করেছি।

আপনি সারাংশ কাঁটাতে পারেন , বা কোডটি এখান থেকে নিতে পারেন:

#!/usr/bin/env ruby
require 'fileutils'

# Originally  -- Dave Deriso        -- deriso@gmail.com
# Contributor -- G. Richard Bellamy -- rbellamy@terradatum.com
# If you contribute, put your name here!
# To get your team ID:
# 1. Go to your GitHub profile, select 'Personal Access Tokens', and create an Access token
# 2. curl -H "Authorization: token <very-long-access-token>" https://api.github.com/orgs/<org-name>/teams
# 3. Find the team name, and grabulate the Team ID
# 4. PROFIT!

#----------------------------------------------------------------------
#your particulars
@access_token = ''
@team_id = ''
@org = ''


#----------------------------------------------------------------------
#the verison of this app
@version = "0.2"

#----------------------------------------------------------------------
#some global params
@create = false
@add = false
@migrate = false
@debug = false
@done = false
@error = false

#----------------------------------------------------------------------
#fancy schmancy color scheme

class String; def c(cc); "\e[#{cc}m#{self}\e[0m" end end
#200.to_i.times{ |i| print i.to_s.c(i) + " " }; puts
@sep = "-".c(90)*95
@sep_pref = ".".c(90)*95
@sep_thick = "+".c(90)*95

#----------------------------------------------------------------------
# greetings

def hello
  puts @sep
  puts "BitBucket to GitHub migrator -- v.#{@version}".c(95)
  #puts @sep_thick
end

def goodbye
  puts @sep
  puts "done!".c(95)
  puts @sep
  exit
end

def puts_title(text)
   puts  @sep, "#{text}".c(36), @sep
end

#----------------------------------------------------------------------
# helper methods

def get_options
  require 'optparse'

  n_options = 0
  show_options = false

  OptionParser.new do |opts|
    opts.banner = @sep +"\nUsage: gitter [options]\n".c(36)
    opts.version = @version
    opts.on('-n', '--name [name]', String, 'Set the name of the new repo') { |value| @repo_name = value; n_options+=1 }
    opts.on('-c', '--create', String, 'Create new repo') { @create = true; n_options+=1 }
    opts.on('-m', '--migrate', String, 'Migrate the repo') { @migrate = true; n_options+=1 }
    opts.on('-a', '--add', String, 'Add repo to team') { @add = true; n_options+=1 }
    opts.on('-l', '--language [language]', String, 'Set language of the new repo') { |value| @language = value.strip.downcase; n_options+=1 }
    opts.on('-d', '--debug', 'Print commands for inspection, doesn\'t actually run them') { @debug = true; n_options+=1 }
    opts.on_tail('-h', '--help', 'Prints this little guide') { show_options = true; n_options+=1 }
    @opts = opts
  end.parse!

  if show_options || n_options == 0
    puts @opts
    puts "\nExamples:".c(36)
    puts 'create new repo: ' + "\t\tgitter -c -l javascript -n node_app".c(93)
    puts 'migrate existing to GitHub: ' + "\tgitter -m -n node_app".c(93)
    puts 'create repo and migrate to it: ' + "\tgitter -c -m -l javascript -n node_app".c(93)
    puts 'create repo, migrate to it, and add it to a team: ' + "\tgitter -c -m -a -l javascript -n node_app".c(93)
    puts "\nNotes:".c(36)
    puts "Access Token for repo is #{@access_token} - change this on line 13"
    puts "Team ID for repo is #{@team_id} - change this on line 14"
    puts "Organization for repo is #{@org} - change this on line 15"
    puts 'The assumption is that the person running the script has SSH access to BitBucket,'
    puts 'and GitHub, and that if the current directory contains a directory with the same'
    puts 'name as the repo to migrated, it will deleted and recreated, or created if it'
    puts 'doesn\'t exist - the repo to migrate is mirrored locally, and then created on'
    puts 'GitHub and pushed from that local clone.'
    puts 'New repos are private by default'
    puts "Doesn\'t like symbols for language (ex. use \'c\' instead of \'c++\')"
    puts @sep
    exit
  end
end

#----------------------------------------------------------------------
# git helper methods

def gitter_create(repo)
  if @language
    %q[curl https://api.github.com/orgs/] + @org + %q[/repos -H "Authorization: token ] + @access_token + %q[" -d '{"name":"] + repo + %q[","private":true,"language":"] + @language + %q["}']
  else
    %q[curl https://api.github.com/orgs/] + @org + %q[/repos -H "Authorization: token ] + @access_token + %q[" -d '{"name":"] + repo + %q[","private":true}']
  end
end

def gitter_add(repo)
  if @language
    %q[curl https://api.github.com/teams/] + @team_id + %q[/repos/] + @org + %q[/] + repo + %q[ -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ] + @access_token + %q[" -d '{"permission":"pull","language":"] + @language + %q["}']
  else
    %q[curl https://api.github.com/teams/] + @team_id + %q[/repos/] + @org + %q[/] + repo + %q[ -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ] + @access_token + %q[" -d '{"permission":"pull"}']
  end
end

def git_clone_mirror(bitbucket_origin, path)
  "git clone --mirror #{bitbucket_origin}"
end

def git_push_mirror(github_origin, path)
  "(cd './#{path}' && git push --mirror #{github_origin} && cd ..)"
end

def show_pwd
  if @debug
    Dir.getwd()
  end
end

def git_list_origin(path)
  "(cd './#{path}' && git config remote.origin.url && cd ..)"
end

# error checks

def has_repo
  File.exist?('.git')
end

def has_repo_or_error(show_error)
  @repo_exists = has_repo
  if !@repo_exists
    puts 'Error: no .git folder in current directory'.c(91) if show_error
    @error = true
  end
  "has repo: #{@repo_exists}"
end

def has_repo_name_or_error(show_error)
  @repo_name_exists = !(defined?(@repo_name)).nil?
  if !@repo_name_exists
    puts 'Error: repo name missing (-n your_name_here)'.c(91) if show_error
    @error = true
  end
end

#----------------------------------------------------------------------
# main methods
def run(commands)
  if @debug
    commands.each { |x| puts(x) }
  else
    commands.each { |x| system(x) }
  end
end

def set_globals

  puts_title 'Parameters'

  @git_bitbucket_origin =   "git@bitbucket.org:#{@org}/#{@repo_name}.git"
  @git_github_origin = "git@github.com:#{@org}/#{@repo_name}.git"

  puts 'debug: ' + @debug.to_s.c(93)
  puts 'working in: ' + Dir.pwd.c(93)
  puts 'create: ' + @create.to_s.c(93)
  puts 'migrate: ' + @migrate.to_s.c(93)
  puts 'add: ' + @add.to_s.c(93)
  puts 'language: ' + @language.to_s.c(93)
  puts 'repo name: '+ @repo_name.to_s.c(93)
  puts 'bitbucket: ' + @git_bitbucket_origin.to_s.c(93)
  puts 'github: ' + @git_github_origin.to_s.c(93)
  puts 'team_id: ' + @team_id.to_s.c(93)
  puts 'org: ' + @org.to_s.c(93)
end

def create_repo
  puts_title 'Creating'

  #error checks
  has_repo_name_or_error(true)
  goodbye if @error

  puts @sep

  commands = [
      gitter_create(@repo_name)
  ]

  run commands
end


def add_repo
  puts_title 'Adding repo to team'

  #error checks
  has_repo_name_or_error(true)
  goodbye if @error

  puts @sep

  commands = [
      gitter_add(@repo_name)
  ]

  run commands
end

def migrate_repo

  puts_title "Migrating Repo to #{@repo_provider}"

  #error checks
  has_repo_name_or_error(true)
  goodbye if @error

  if Dir.exists?("#{@repo_name}.git")
    puts "#{@repo_name} already exists... recursively deleting."
    FileUtils.rm_r("#{@repo_name}.git")
  end

  path = "#{@repo_name}.git"
  commands = [
    git_clone_mirror(@git_bitbucket_origin, path),
    git_list_origin(path),
    git_push_mirror(@git_github_origin, path)
  ]

  run commands
end

#----------------------------------------------------------------------
#sequence control
hello
get_options

#do stuff
set_globals
create_repo if @create
migrate_repo if @migrate
add_repo if @add

#peace out
goodbye

তারপরে, স্ক্রিপ্টটি ব্যবহার করতে:

# create a list of repos
foo
bar
baz

# execute the script, iterating over your list
while read p; do ./bitbucket-to-github.rb -a -n $p; done<repos

# good nuff

5

নেই আমদানি হচ্ছে GitHub আমদানিকারক সঙ্গে একটি সংগ্রহস্থলের

আপনার যদি অন্য কোনও সংস্করণ নিয়ন্ত্রণ সিস্টেমে মার্চুরিয়াল হিসাবে হোস্ট করা একটি প্রকল্প থাকে, আপনি গিটহাব আমদানিকারক সরঞ্জামটি ব্যবহার করে স্বয়ংক্রিয়ভাবে এটিকে গিটহাবে আমদানি করতে পারেন।

  1. যে কোনও পৃষ্ঠার উপরের-ডান কোণে, ক্লিক করুন এবং তারপরে আমদানি আমদানি ক্লিক করুন।
  2. "আপনার পুরানো ভাণ্ডারের ক্লোন URL" এর অধীনে, আপনি যে প্রকল্পটি আমদানি করতে চান তার URL টাইপ করুন type
  3. সংগ্রহস্থলটির মালিকানা পেতে আপনার ব্যবহারকারী অ্যাকাউন্ট বা একটি সংস্থা চয়ন করুন, তারপরে গিটহাবের উপরে সংগ্রহস্থলের জন্য একটি নাম টাইপ করুন।
  4. নতুন সংগ্রহস্থলটি সরকারী বা ব্যক্তিগত হওয়া উচিত কিনা তা উল্লেখ করুন।
    • গিটহাবের যে কোনও ব্যবহারকারীর কাছে পাবলিক ভান্ডারগুলি দৃশ্যমান, যাতে আপনি গিটহাবের সহযোগী সম্প্রদায় থেকে উপকৃত হতে পারেন।
    • সরকারী বা বেসরকারী সংগ্রহস্থল রেডিও বোতামের ব্যক্তিগত সংগ্রহস্থলগুলি কেবলমাত্র সংগ্রহের মালিকের জন্য উপলব্ধ, সেইসাথে আপনার সাথে ভাগ করার জন্য চয়ন করা কোনও সহযোগীও উপলব্ধ।
  5. আপনার প্রবেশ করা তথ্য পর্যালোচনা করুন, তারপরে আমদানি শুরু করুন ক্লিক করুন।

ভান্ডার সম্পূর্ণরূপে আমদানি করা হয়ে গেলে আপনি একটি ইমেল পাবেন।

  1. https://help.github.com/categories/importing-your-projects-to-github
  2. https://help.github.com/articles/importing-a-repository-with-github-importer/

2

আপনি যদি নিজের স্থানীয় গিট সংগ্রহস্থলটিকে অন্য প্রবাহে নিয়ে যেতে চান তবে আপনি এটি করতে পারেন:

বর্তমান রিমোট url পেতে:

গিট রিমোট গেট-ইউআরএল উত্স

এর মতো কিছু দেখাবে: https://bitbucket.com/git/myrepo

নতুন দূরবর্তী সংগ্রহস্থল স্থাপন করতে:

গিট দূরবর্তী সেট-url উত্স git@github.com: ফোল্ডার / myrepo.git po

এখনকার বর্তমান (বিকাশ) শাখার বিষয়বস্তুগুলিকে পুশ করুন:

গিট পুশ - সেট-আপস্ট্রিম উত্স বিকাশ

আপনার কাছে এখন নতুন রিমোটে শাখার একটি সম্পূর্ণ অনুলিপি রয়েছে।

এই স্থানীয় ফোল্ডারের জন্য gচ্ছিকভাবে মূল গিট-রিমোটে ফিরে আসুন:

গিট রিমোট সেট-ইউআরএল উত্স https://bitbucket.com/git/myrepo

আপনি এখন অন্য নতুন ফোল্ডারের গিথুব থেকে আপনার নতুন গিট-रिपোজিটরি পেতে পারেন সেই সুবিধাটি দেয় যাতে আপনার দুটি স্থানীয় ফোল্ডার উভয়ই আলাদা আলাদা রিমোটগুলিতে নির্দেশ করে, পূর্ববর্তী (বিটবাকেট) এবং নতুন দুটি উপলব্ধ।


2

আমার সমস্ত বিটবকেট (ব্যবহারকারী) সংগ্রহস্থলকে ব্যক্তিগত সংগ্রহস্থল হিসাবে গিটহাবের ক্লোন করতে আমি নিম্নলিখিত বাশ স্ক্রিপ্টটি তৈরি করেছি ।


প্রয়োজনীয়তা:

  • jq (কমান্ড-লাইন JSON প্রসেসর) | ম্যাক অপারেটিং সিস্টেম:brew install jq

পদক্ষেপ:

  1. Https://github.com/settings/tokens এ যান এবং অ্যাক্সেস টোকেন তৈরি করুন। আমাদের কেবল "রেপো" সুযোগ দরকার need

  2. move_me.shস্ক্রিপ্টটি একটি কার্যকারী ফোল্ডারে সংরক্ষণ করুন এবং প্রয়োজনীয় ফাইলটি সম্পাদনা করুন।

  3. ভুলে যাবেন না CHMOD 755

  4. চালান! ./move_me.sh

  5. আপনি সময় সাশ্রয় করেছেন উপভোগ করুন।


মন্তব্য:

  • এটি স্ক্রিপ্টটি যে ডিরেক্টরিতে থাকে আপনার ডিরেক্টরিতে (আপনার কার্যকরী ডিরেক্টরি B

  • এই স্ক্রিপ্টটি আপনার BitBucket ভান্ডারগুলি মুছবে না


গিটহাবের সর্বজনীন ভান্ডারগুলিতে স্থানান্তর করা দরকার?

নীচে "private": trueথেকে খুঁজুন এবং পরিবর্তন করুন "private": false

একটি প্রতিষ্ঠানের ভান্ডারগুলি সরানো হচ্ছে?

বিকাশকারী গাইডটি চেকআউট করুন , এটি বেশ কয়েকটি সম্পাদনা দূরে।


শুভ চলমান।

#!/bin/bash

BB_USERNAME=your_bitbucket_username 
BB_PASSWORD=your_bitbucket_password

GH_USERNAME=your_github_username
GH_ACCESS_TOKEN=your_github_access_token

###########################

pagelen=$(curl -s -u $BB_USERNAME:$BB_PASSWORD https://api.bitbucket.org/2.0/repositories/$BB_USERNAME | jq -r '.pagelen')

echo "Total number of pages: $pagelen"

hr () {
  printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' -  
}

i=1

while [ $i -le $pagelen ]
do
  echo
  echo "* Processing Page: $i..."
  hr  
  pageval=$(curl -s -u $BB_USERNAME:$BB_PASSWORD https://api.bitbucket.org/2.0/repositories/$BB_USERNAME?page=$i)

  next=$(echo $pageval | jq -r '.next')
  slugs=($(echo $pageval | jq -r '.values[] | .slug'))
  repos=($(echo $pageval | jq -r '.values[] | .links.clone[1].href'))

  j=0
  for repo in ${repos[@]}
  do
    echo "$(($j + 1)) = ${repos[$j]}"
    slug=${slugs[$j]}
  git clone --bare $repo 
  cd "$slug.git"
  echo
  echo "* $repo cloned, now creating $slug on github..."  
  echo  

  read -r -d '' PAYLOAD <<EOP
  {
    "name": "$slug",
    "description": "$slug - moved from bitbucket",
    "homepage": "https://github.com/$slug",
    "private": true
  }
  EOP

  curl -H "Authorization: token $GH_ACCESS_TOKEN" --data "$PAYLOAD" \
      https://api.github.com/user/repos
  echo
  echo "* mirroring $repo to github..."  
  echo
  git push --mirror "git@github.com:$GH_USERNAME/$slug.git"
  j=$(( $j + 1 ))
  hr    
  cd ..
  done  
  i=$(( $i + 1 ))
done

1
একটি টোকেনের সাথে মিলিত আকর্ষণীয় স্ক্রিপ্ট। ঝরঝরে। সম্মত।
ভোনসি

@ ভনসি আপনাকে ধন্যবাদ!
কেনেক

1

একটি ব্যক্তিগত গিট সংগ্রহস্থল সরানোর পদক্ষেপ এখানে:

পদক্ষেপ 1: গিথুব সংগ্রহশালা তৈরি করুন

প্রথমে, গিথুব ডট কম এ একটি নতুন ব্যক্তিগত সংগ্রহশালা তৈরি করুন। সংগ্রহস্থলটি খালি রাখা গুরুত্বপূর্ণ, উদাহরণস্বরূপ চেক অপশনটি পরীক্ষা করবেন না creating

পদক্ষেপ 2: বিদ্যমান সামগ্রী সরান

এরপরে, আমাদের বিটবকেট সংগ্রহস্থল থেকে সামগ্রীতে গিথুব সংগ্রহস্থলটি পূরণ করতে হবে:

  1. বিটবকেট থেকে বিদ্যমান সংগ্রহস্থলটি দেখুন :
    $ git clone https://USER@bitbucket.org/USER/PROJECT.git
  1. বিটবকেট থেকে চেক আউট করা সংগ্রহস্থলের আপস্ট্রিম রিমোট হিসাবে নতুন গিথুব সংগ্রহস্থল যুক্ত করুন:
    $ cd PROJECT
    $ git remote add upstream https://github.com:USER/PROJECT.git
  1. সমস্ত শাখা (নীচে: কেবলমাত্র মাস্টার) এবং গিথুব সংগ্রহশালায় ট্যাগগুলি পুশ করুন :
    $ git push upstream master
    $ git push --tags upstream

পদক্ষেপ 3: পুরানো সংগ্রহস্থল পরিষ্কার করুন

শেষ অবধি, আমাদের নিশ্চিত করতে হবে যে একই প্রকল্পের জন্য দুটি সংগ্রহস্থল রেখে বিকাশকারীরা বিভ্রান্ত না হন। এখানে কীভাবে বিটবকেট সংগ্রহস্থল মুছবেন:

  1. গিথুব সংগ্রহশালার সমস্ত সামগ্রী রয়েছে কিনা তা দুবার পরীক্ষা করে দেখুন

  2. পুরানো বিটবুকিট সংগ্রহস্থলের ওয়েব ইন্টারফেসে যান

  3. মেনু বিকল্প নির্বাচন করুন> সংগ্রহস্থল মুছুন

  4. নতুন গিথুব সংগ্রহস্থলের URL টি পুনঃনির্দেশ URL হিসাবে যুক্ত করুন

এটির সাথে, সংগ্রহস্থলটি পুরোপুরি গিথুবে তার নতুন বাড়িতে বসতি স্থাপন করে। সমস্ত বিকাশকারীদের জানা যাক!


-1

এটি করার সহজ উপায়:

git remote rename origin repo_bitbucket

git remote add origin https://github.com/abc/repo.git

git push origin master

একবার গিটহাবের ধাক্কা সফল হয়ে গেলে, চালিয়ে পুরানো রিমোটটি মুছুন:

git remote rm repo_bitbucket
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.