ডিফল্ট গিট রিমোট 'পুশ টু' পরিবর্তন করা হচ্ছে


227

আমি গিট ডিফল্ট দূরবর্তী শাখার গন্তব্যটি পরিবর্তন করতে চাই যাতে আমি ঠিক করতে পারি

git push

পরিবর্তে:

git push upstream

বর্তমানে এটি মূল রিমোটে সেট করা আছে এবং আমি এটি অন্য একটি দূরবর্তীতে সেট করতে চাই।

আমি আসল (ক্লোন করা) থেকে রিমোট সরিয়ে দেওয়ার চেষ্টা করেছি

git remote rm origin

যা আসল রিমোটটি সরিয়ে দিয়েছে। কিন্তু git pushসমস্যার সমাধান করে না । আমি এখনও পেতে:

মারাত্মক: কোনও কনফিগার করা পুশ গন্তব্য নেই। হয়
কমান্ড-লাইন থেকে ইউআরএল নির্দিষ্ট করুন অথবা একটি রিমোট রিপোজিটরি ব্যবহার করে কনফিগার করুন ...

আমি এটির সাথে খেলতে চেষ্টাও করেছি:

git remote set-url --push myfork origin

এবং অন্যান্য বিকল্পগুলি কিছুই কাজ করছে বলে মনে হচ্ছে না (সম্ভবত কারণ আমি খুব শীঘ্রই রিমোটটি মুছে ফেলেছি?)

উত্তরটি অনুসরণ করে আমি এখানে পরিবর্তন করার চেষ্টা করেছি:

git config push.default upstream (or matching)

তবে দু'জনেরই কাজ হয়নি।

উত্তর:


214

আপনি git push -u <remote_name> <local_branch_name>ডিফল্ট আপ স্ট্রিম সেট করতে ব্যবহার করতে পারেন । আরও বিশদের জন্য গিট পুশের জন্য ডকুমেন্টেশন দেখুন ।


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

34
অতিরিক্ত স্পষ্টতা হিসাবে বাক্য গঠনটি হওয়া উচিত git push -u <remote_name> <local_branch_name>:<corresponding_remote_branch_name>
মার্কো লাজেরি

33
উদাহরণ: git push -u origin master:master
তারকাবিআমরনোলাবস

1
একটি ডিফল্ট রিমোট সেট করার পরে ... এমন কি কি নেই যে আপনি git pushবর্তমান স্থানীয় শাখার দূরবর্তী শাখাটি চাপতে বাধ্য করতে পারেন ? আমার অর্থ এটি করা মানে এটি প্রতিটি শাখার জন্য আমাকে এই আদেশটি চালাতে হবে। রাইট? আমি কি পুরো রেপোর জন্য প্রাথমিক সেটআপ করতে পারি না? @ মার্কোলাজারি
মধু

2
@starbeamrainbowlabs নয় git push -u origin masterযথেষ্ট? আপনি কি পুরো সিনট্যাক্সটি চিত্রিত করছেন?
জোশিয়ার

107

আপনার শাখায় কোন প্রবাহের রিমোটটি "তারযুক্ত" রয়েছে তা পরিবর্তন করতে, git branchপ্রবাহের কনফিগারেশন পতাকা সহ কমান্ডটি ব্যবহার করুন ।

নিশ্চিত করুন যে রিমোটটি আগে উপস্থিত রয়েছে:

git remote -vv

বর্তমান (চেক আউট) শাখার জন্য পছন্দসই রিমোট সেট করুন:

git branch --set-upstream-to <remote-name>

সঠিক আপস্ট্রিম রিমোট সহ শাখাটি সেটআপ করা হয়েছে যাচাই করুন:

git branch -vv


2
কেবল চেষ্টা করে git branch --set-upstream-to myforkএকটি ত্রুটি পেয়েছি:> ত্রুটি: অজানা বিকল্প up সেট আপ আপস্ট্রিম-থেকে 'আমি গিটটি চালাচ্ছি 1.7.9
অ্যালোনাইজার

3
সিনট্যাক্স 1.8 পরিবর্তন দেখতে stackoverflow.com/questions/520650/...
jtniehof

1
নিম্নলিখিত উত্তরটি দেখুন: stackoverflow.com/a/2432799/1820106 ( git remote set-url origin PATH_TO_REMOTE)
যিনন এহরিলিচ

10
git branch -u <remotename>/<branch>আমার জন্য কাজ। কমান্ডটি স্থানীয় আগ্রহের চেক আউট দিয়ে চালানো হয়েছিল। দেখুন 'ট্র্যাকিং শাখা' থেকে git-scm.com/book/it/v2/Git-Branching-Remote-Branches
Norio

2
রিমোট কমান্ড ভার্বোজ আউটপুট সত্যিই ঠিক git remote -vবা git remote --verbose-vvএর অতিরিক্ত বনাম অপ্রয়োজনীয়।
আর্টিফ 3 এক্স

45

গিট ২.৩.২ নিয়ে কাজ করা ...

git branch --set-upstream-to myfork/master

এখন status, pushএবং দূরবর্তী pullদিকে নির্দেশ করা হয়myfork


আপনি যখন কেবলমাত্র ডিফল্ট সেট করতে চান তখন এটি কাজ করে pull
স্টিংজি জ্যাক

39

আপনি এই কমান্ডটি ব্যবহার করে একবারে শাখাগুলির জন্য খুব সহজেই ডিফল্ট রিমোট পরিবর্তন করতে পারেন

git push -u <remote_name> --all

14
কেবল লক্ষ্য করার জন্য, এটি তাদের সমস্তকে ধাক্কা দেবে, পাশাপাশি তাদের প্রবাহের দূরবর্তীটিও পরিবর্তন করবে।
পুলি

16

আপনি যদি git push origin -u localBranchName:remoteBranchNameএবং ক্রমানুসারে git pushকমান্ডগুলি করে থাকেন তবে আপনি ত্রুটিগুলি পান যা উত্সের অস্তিত্ব নেই, তবে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. git remote -v

এমন কোনও রিমোট আছে যা আমি পাত্তা দিই না তা পরীক্ষা করে দেখুন। তাদের দিয়ে মুছুনgit remote remove 'name'

  1. git config --edit

পুরানো / অ-অস্তিত্বের দূরবর্তী সম্ভাব্য লক্ষণগুলির সন্ধান করুন। জন্য দেখুন pushdefault:

[remote]
  pushdefault = oldremote

আপডেট oldremoteমান এবং সংরক্ষণ করুন।

git push এখন কাজ করা উচিত।


2
ধন্যবাদ! আমি পেশী মেমরির কারণে কোনও অন্য দূরবর্তীটিতে -uব্যবহার git pushকরার সময় যুক্ত করতে চাই tend এটি প্রদত্ত দূরবর্তীটিকে ডিফল্ট করে তোলে, এটি ব্যবহার করে git config --editআবার সেট করে (বা আবার চাপ দিয়ে এবং নতুন রিমোট সেট করে) সমস্যার সমাধান করে।
টিম ভিসি

13

কেবল একটি ব্যাখ্যা (উবুন্টু 12.04 এ গিট সংস্করণ 1.7.9.5 ব্যবহার করে):

গিট রিমোটগুলি যুক্ত / সরিয়ে দেবে। এগুলি সংযুক্ত সার্ভারের সাথে গিটের দূরবর্তী দৃষ্টান্ত।

git remote add myremote git://remoteurl

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

git fetch myremote

দেখে মনে হচ্ছে এটি 'মাইরেমোট' নামে একটি শাখা তৈরি করে, তবে শাখার দূরবর্তী স্বয়ংক্রিয়ভাবে সেট করা নেই। এটি করার জন্য, আপনাকে নিম্নলিখিতগুলি করতে হবে:

প্রথমে যাচাই করে নিন যে আপনার এই সমস্যা রয়েছে

git config -l | grep myremote

আপনার কিছু দেখতে হবে:

remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master

যদি আপনি দেখতে পান branch.myremote.remote=.তবে আপনার এগিয়ে যাওয়া উচিত:

git config branch.myremote.remote myremote
git checkout myremote
git pull

আপনার এখন দূরবর্তী সংগ্রহস্থলের সাথে আপ টু ডেট হওয়া উচিত এবং আপনার টান / পুশগুলি যথাযথ রিমোটের সাথে আবদ্ধ করা উচিত। আপনি প্রতিটি শাখায় এই পদ্ধতিতে রিমোটগুলি স্যুইচ করতে পারেন । [নোট 1]

মতে একটি দ্য অফিসিয়াল গীত কনফিগ ডকুমেন্টেশন , আপনি একটি সেট আপ করতে পারেন ডিফল্ট ধাক্কা শাখা (ঠিক ঐ পৃষ্ঠাতে remote.pushdefault অনুসন্ধান) তবে মনে রাখবেন যে এই ভান্ডার / শাখা যা ইতিমধ্যে অস্তিত্ব প্রভাবিত করবে না, তাই এই কাজ করবে কিন্তু শুধুমাত্র নতুন ভান্ডার / শাখার জন্য। আপনার মনে রাখা উচিত যে --globalব্যবহারকারী-নির্দিষ্ট সংগ্রহস্থল ডিফল্টস (~ / .gitconfig) --systemসেট করবে , সিস্টেম-ব্যাপী সংগ্রহস্থল ডিফল্ট (/ etc / gitconfig) সেট করবে, এবং কোনও পতাকা বর্তমান সংগ্রহস্থল (./.gitconfig) এর জন্য কনফিগারেশন বিকল্প সেট করবে না।

এছাড়াও এটি লক্ষ করা উচিত যে push.default কনফিগারেশন বিকল্পটি দূরবর্তী আচরণ নয় , রেফ-স্পেক আচরণ কনফিগার করার জন্য ।

[1]: git branch --set-upstream myotherremoteসাধারণত এখানে কাজ করবে, তবে গিট অভিযোগ করবে যে এটি git branch --set-upstream myremoteব্যবহৃত হলে এটি তার নিজস্ব রিমোট হিসাবে কোনও শাখা সেট করবে না । আমি বিশ্বাস করি তবে এটি ভুল আচরণ।


পরিবর্তে git config -l | grep myremote, আপনি কেবল ব্যবহার করতে পারেন:git config --get branch.myremote.remote
মার্মেল

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

10

.git/configআপনার রেপোর ভিতরে একবার নজর দেওয়া সহায়ক হতে পারে , এটি প্রতিটি রিমোট এবং প্রতিটি শাখার জন্য ডিফল্ট দূরবর্তীকেও তালিকাভুক্ত করে

যেমন।

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@gitea.xxx.be:fii/web2016.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "bugfix/#8302"]
    remote = origin
    merge = "refs/heads/bugfix/#8302"
[branch "feature/#8331"]
    remote = origin
    merge = "refs/heads/feature/#8331"
[remote "scm"]
    url = https://scm.xxx.be/git/web2016bs.git
    fetch = +refs/heads/*:refs/remotes/scm/*

অযাচিত রিমোট অপসারণ করতে আপনি এই ফাইলটিতে ম্যানুয়াল পরিবর্তন করতে পারেন বা আপনার বিভিন্ন শাখার জন্য ডিফল্ট রিমোটগুলি আপডেট করতে পারেন

  • মনোযোগ দিন! রিমোটগুলি পরিবর্তন বা অপসারণ করার সময় এই কনফিগার ফাইলে এর সমস্ত রেফারেন্স আপডেট করার বিষয়টি নিশ্চিত করুন

5

এটি সমাধানের জন্য আমি সবেমাত্র অন্য কৌশলটি পেয়েছি (যদিও আমি প্রথমে উত্সটি মুছে ফেললাম, যা ভুল বলে মনে হচ্ছে) সরাসরি গিট কনফিগারেশন পরিচালনা করছে:

git config remote.origin.url url-to-my-other-remote

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

এটি করার সঠিক উপায় নয় ... @ জর্ডানের উত্তরটি আরও উপযুক্ত
রাজা

1
আরও দেখুন: স্ট্যাকওভারফ্লো.com / a / 2432799 / 1820106 ( git remote set-url origin PATH_TO_REMOTE)
যিনন এহরিলিচ

5

খুব সহজ, এবং আমার নিজের গবেষণার পাশাপাশি এখানে দুর্দান্ত কিছু মন্তব্যকে একসাথে কোবল করছে।

প্রথমে আপনি যে স্থানীয় শাখাটি আপনার দূরবর্তী শাখায় বেঁধে রাখতে চান তা পরীক্ষা করে দেখুন:

git checkout mybranch

পরবর্তী:

git branch -u origin/mybranch

কোথায়:

git branch -u {remote name}/{branch name}

আপনার একটি বার্তা পাওয়া উচিত:

"Branch mybranch set up to track remote branch mybranch from origin."

3

আমার ক্ষেত্রে, আমি নিম্নলিখিতটি দ্বারা স্থির করেছি: * git config --edit গিট কনফিগারেশনের ফাইলটিতে * রান করুন:

[branch "master"]
remote = origin # <--- change the default origin here

0

git remote set-url --push origin আপনি যেমন উল্লেখ করেছেন তেমন কাজ করা উচিত, তবে আপনাকে বিকল্প রিমোট নামের পরিবর্তে url সরবরাহ করতে হবে, যেমন

git remote set-url --push origin git@github.com:contributor/repo.git

এটি দ্বারা কাজ করে কিনা তা আপনি নিশ্চিত করতে পারেন git remote -v। যেমন

λ ~/go/src/github.com/stretchr/testify/ master git remote -v
fork    git@github.com:contributor/testify.git (fetch)
fork    git@github.com:contributor/testify.git (push)
origin  git@github.com:stretchr/testify (fetch)
origin  git@github.com:contributor/testify.git (push)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.