গিট পুশ কিছুই করবে না (সবকিছুই আধুনিকীকরণ)


100

আমি গিটহাবের একটি গিট সংগ্রহস্থল আপডেট করার চেষ্টা করছি। আমি একগুচ্ছ পরিবর্তন করেছি, সেগুলি সংযোজন করেছি, প্রতিশ্রুতিবদ্ধ করেছি তারপরে একটি করার চেষ্টা করেছি git push। প্রতিক্রিয়া আমাকে জানায় যে সবকিছু আপ টু ডেট, তবে স্পষ্টভাবে তা নয়।

git remote show origin

আমি যে সংগ্রহস্থলটি প্রত্যাশা করছিলাম সেটির সাথে প্রতিক্রিয়া জানায়।

গিট কেন আমাকে বলছে যে সংগ্রহশালায় দৃশ্যমান নয় এমন স্থানীয় কমিট রয়েছে যখন তা সংগ্রহস্থলটি আপ টু ডেট?

  [searchgraph]  git status
# On branch develop
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       Capfile
#       config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)

  [searchgraph]  git add .

  [searchgraph]  git status
# On branch develop
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   Capfile
#       new file:   config/deploy.rb
#

  [searchgraph]  git commit -m "Added Capistrano deployment"
[develop 12e8af7] Added Capistrano deployment
 2 files changed, 26 insertions(+), 0 deletions(-)
 create mode 100644 Capfile
 create mode 100644 config/deploy.rb

  [searchgraph]  git push
Everything up-to-date

  [searchgraph]  git status
# On branch develop
nothing to commit (working directory clean)

উত্তর:


142

git pushআপনার স্থানীয় সমস্ত শাখাকে ধাক্কা দেয় না: এটি কীভাবে জানতে পারে কোন দূরবর্তী শাখাগুলিতে তাদের ঠেলে দেওয়া হবে? এটি কেবলমাত্র স্থানীয় শাখাগুলিকে ঠেলে দেয় যা নির্দিষ্ট দূরবর্তী শাখায় ধাক্কা দেওয়ার জন্য কনফিগার করা হয়েছে।

আমার গিতের সংস্করণে (1.6.5.3), যখন আমি git remote show originএটি চালিত করি তখন কোন শাখাটি পুশ করার জন্য কনফিগার করা আছে তা প্রকৃতপক্ষে মুদ্রণ করে:

Local refs configured for 'git push':
  master pushes to master (up to date)
  quux   pushes to quux   (fast forwardable)

প্র: তবে আমি masterএই সমস্ত বিষয়ে চিন্তা না করে ধাক্কা দিতে পারি !

আপনি যখন git cloneডিফল্টরূপে এটি masterরিমোটের masterশাখায় (স্থানীয় হিসাবে উল্লেখ করা হয় origin/master) ধাক্কা দেওয়ার জন্য আপনার স্থানীয় শাখাটি স্থাপন করে , তাই আপনি যদি কেবল প্রতিশ্রুতিবদ্ধ থাকেন masterতবে একটি সরল git pushসর্বদা আপনার পরিবর্তনগুলিকে পিছনে ঠেলে দেয়।

তবে, আপনার পোস্ট করা আউটপুট স্নিপেট থেকে আপনি একটি ডাকা শাখায় developরয়েছেন, যা আমি অনুমান করছি যে কোনও কিছুর দিকে এগিয়ে যাওয়ার জন্য সেট আপ করা হয়নি। সুতরাং git pushযুক্তি ছাড়াই branch শাখায় কমিটগুলি ঠেকাবে না

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

প্র: তাহলে আমি কীভাবে আমার প্রতিশ্রুতিগুলি ঠেকাতে পারি?

আপনি যা করতে চান তা যদি আপনার পরিবর্তনগুলি থেকে এর developমধ্যে রাখা হয় origin/masterতবে আপনার সম্ভবত সেগুলি আপনার স্থানীয়তে মিশ্রিত করা উচিত masterthen

git checkout master
git merge develop
git push             # will push 'master'

আপনি যা চান তা যদি developদূর থেকে একটি শাখা তৈরি করা হয়, এর থেকে পৃথক হয়ে যায় master, তারপরে যুক্তি সরবরাহ করুন git push:

git push origin develop

এটি করবে: রিমোট নামে একটি নতুন শাখা তৈরি করবে develop; এবং সেই শাখাটি আপনার স্থানীয় developশাখার সাথে হালনাগাদ আনুন ; এবং সেট developকরার ধাক্কা origin/developযাতে ভবিষ্যতে, git pushছাড়া আর্গুমেন্ট হবে ধাক্কা developস্বয়ংক্রিয়ভাবে।

আপনি যদি স্থানীয়কে developকোনও দূরবর্তী শাখায় ঠেলাতে চান তবে যাকে অন্য কিছু বলা হয় develop, তবে আপনি বলতে পারেন:

git push origin develop:something-else

তবে, এই ফর্মটি ভবিষ্যতে সর্বদা চাপ দেওয়ার জন্য সেট আপ করা হবে না ; এটি একটি শট অপারেশন।developorigin/something-else


অনেক ধন্যবাদ, আপনার গিট পুশ উত্স বিকাশ: অন্য কিছু প্রশ্নের উত্তর দিয়েছে আমি কিছুক্ষণের জন্য সক্ষম হইনি।
এন্ট্রয়েড

1
আমার ক্ষেত্রে git push origin xএখনও ভবিষ্যতে ধাক্কা দেওয়ার জন্য শাখা এক্স স্থাপন করা হয়নি। এটি .gitconfig [remote "origin"]বিভাগে একটি নির্দিষ্ট পুস্পস্পেকের কারণে যা গিটের আচরণের কারণ হয়েছিল।
রমন

27

আমার সোর্সট্রি অ্যাপ্লিকেশনটি মঞ্চ চলাকালীন ক্র্যাশ হয়ে গিয়েছিল me এবং কমান্ড লাইনে দেখে মনে হয়েছিল যে পূর্ববর্তীটি git addদূষিত হয়েছিল। যদি এটি হয় তবে চেষ্টা করুন:

git init
git add -A
git commit -m 'Fix bad repo'
git push

শেষ কমান্ডে, আপনাকে শাখাটি সেট করতে হবে।

git push --all origin master

মনে রাখবেন যে আপনি যদি কোনও ব্রাঞ্চিং বা এই ধরণের কোনও কাজ না করে থাকেন তবে এটি যথেষ্ট। সেক্ষেত্রে নিশ্চিত হয়ে নিন যে আপনি ঠিক মতো শাখায় যাচ্ছেন git push origin develop


15

চেষ্টা করুন:

git push --all origin

এটি এক শাখা থেকে মাস্টার হিসাবে নয়, রেপোতে পৃথক শাখা পৃথক করার প্রতিশ্রুতি দেয়।
শ্রীদেবী জে

13

শেষ প্রতিশ্রুতিতে যাবার চেষ্টা করুন এবং তারপরে করুন git push origin HEAD:master


1
এটি আসলে কাজ করে। এটি কেন কাজ করেছে তা আপনি ব্যাখ্যা করতে চান ?
রেনি নিফেনিগার 19

দস্তাবেজগুলি থেকে পাঠ্য:Push the current branch to the remote ref matching master in the origin repository. This form is convenient to push the current branch without thinking about its local name.
uruapanmexicansong

আমার জন্যও কাজ করেছিলেন
জেরাদ রুতনাম

আমি তুলনা করেছি কীভাবে আমার রেপো কনফিগার করা হয়েছে এবং সমস্ত শাখা দেখতে একই রকম। তবুও, এক শাখা আমি কেবল ব্যবহার করবেন পারে git push: / এটি আমার জন্য ভাল হিসাবে কাজ: git push origin HEAD:my_branch_name
iafork

6

আমার ক্ষেত্রে, অন্য কোনও সমাধান কাজ করেনি। আমাকে নতুন সংশোধিত ফাইলগুলির ব্যাকআপ করতে হবে (এর সাথে দেখানো হয়েছে git status) এবং একটি চালানো git reset --hard। এটি আমাকে দূরবর্তী সার্ভারের সাথে পুনরায় সাইন ইন করতে দেয়। নতুন সংশোধিত ফাইল যুক্ত করা এবং চলছে

git add .
git commit -am "my comment"
git push

কৌতুকটি করেছেন। আমি আশা করি এটি "শেষ সুযোগ" সমাধান হিসাবে কাউকে সহায়তা করবে।


4

এখনই, আপনি বিকাশকারী শাখায় থাকাকালীন এটি উপস্থিত হবে। আপনার উত্স উপর একটি বিকাশ শাখা আছে? যদি না হয়, চেষ্টা করুন git push origin developgit pushআপনার উত্সের বিকাশকারী শাখার সম্পর্কে জানার পরে এটি কাজ করবে।

আরও পড়া হিসাবে, আমি গিট-পুশ ম্যান পৃষ্ঠাগুলি , বিশেষত উদাহরণ বিভাগে একবার দেখেছি ।


3

সুনির্দিষ্ট হওয়ার জন্য, আপনি যদি মাস্টারটিতে কিছু মার্জ করতে চান তবে নীচের পদক্ষেপগুলি অনুসরণ করতে পারেন।

git add --all // If you want to stage all changes other options also available
git commit -m "Your commit message"
git push // By default when it clone is sets your origin to master or you would have set sometime with git push -u origin master.

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

git push origin develop // It will create a remote branch with name "develop".

আপনি যদি নিজের স্থানীয় শাখার নাম বাদে অন্য কোনও শাখা তৈরি করতে চান তবে নিম্নলিখিত কমান্ডের সাহায্যে এটি করতে পারেন।

git push origin develop:some-other-name

2

ধন্যবাদ স্যাম স্টোকসকে। তার উত্তর অনুসারে আপনি সমস্যাটি বিভিন্ন উপায়ে সমাধান করতে পারেন (আমি এইভাবে ব্যবহার করেছি)। আপনার বিকাশ ডিরেক্টরি আপডেট করার পরে আপনার এটি পুনরায় পুনর্নির্মাণ করা উচিত

git init

তারপরে আপনি প্রতিশ্রুতিবদ্ধ এবং মাস্টার আপডেট আপডেট করতে পারেন


1
ধন্যবাদ! আমার ক্ষেত্রে, টাইপ করুন: git initএবং একটি নতুন কমান্ড ট্যাব খুলুন, টাইপ করুন:git push origin branch_name
s7ven

2

আমি যখন ^Cমাঝখানে ছিলাম তখন আমার সাথে এটি ঘটেছিলgit push গিটহাবের । যদিও গিটহাব প্রদর্শন করে নি যে পরিবর্তনগুলি করা হয়েছিল।

এটি ঠিক করার জন্য, আমি আমার কার্যক্ষম গাছটিতে একটি পরিবর্তন করেছি, প্রতিশ্রুতিবদ্ধ এবং তারপরে আবার ধাক্কা দিয়েছি। এটি পুরোপুরি ঠিকঠাক কাজ করেছে।


2

এটা আমার সাথে ঘটেছিল। আমি কেবল পরিবর্তনগুলি পুনরায় প্রতিশ্রুতিবদ্ধ করেছি, এবং তারপরে এটি ধাক্কা দিয়েছে।


2

আমি এখানে সংজ্ঞায়িত সহ অনেক পদ্ধতি চেষ্টা করেছি। আমি যা পেয়েছি তা হ'ল

  • ভান্ডারটির নামটি বৈধ কিনা তা নিশ্চিত করুন। সর্বোত্তম উপায় হ'ল সংগ্রহস্থল সাইট থেকে লিঙ্কটি অনুলিপি করা এবং গিট ব্যাশে পেস্ট করা।

  • আপনি নির্বাচিত ফাইলগুলি কমিট করেছেন তা নিশ্চিত করুন।

    git commit -m "Your commit here"
    
  • উভয় পদক্ষেপ যদি কাজ না করে তবে চেষ্টা করুন

    git push -u -f origin master


1

পরিবর্তে, আপনি নিম্নলিখিত চেষ্টা করতে পারে। আপনাকে যেতে হবে না master; আপনি সরাসরি নিজের শাখা থেকে পরিবর্তনগুলি চাপতে বাধ্য করতে পারেন।

উপরে বর্ণিত হিসাবে, আপনি যখন রিবেস করেন, আপনি নিজের শাখায় ইতিহাস পরিবর্তন করছেন। ফলস্বরূপ, আপনি যদি git pushরিবেসের পরে কোনও সাধারণ করার চেষ্টা করেন , গিট এটিকে প্রত্যাখ্যান করবে কারণ সার্ভারে প্রতিশ্রুতি থেকে আপনার শাখায় কমিট করার সরাসরি পথ নেই। পরিবর্তে, গিটকে জানাতে আপনাকে -fবা --forceপতাকা ব্যবহার করতে হবে যে হ্যাঁ, আপনি কী করছেন তা সত্যই জানেন। জোর করে ধাক্কা দেওয়ার সময়, আপনি আপনার push.defaultকনফিগারেশন সেটিংসটিকে সাধারণ হিসাবে সেট করার পরামর্শ দিচ্ছেন যা গিট ২.০ এ ডিফল্ট। আপনার কনফিগারেশনটি সঠিক কিনা তা নিশ্চিত করতে, চালনা করুন:

$ git config --global push.default simple

একবার এটি সঠিক হয়ে গেলে আপনি কেবল চালাতে পারবেন:

$ git push -f

এবং আপনার টানার অনুরোধ পরীক্ষা করুন। এটি আপডেট করা উচিত!

আরও তথ্যের জন্য কীভাবে পুনরায় স্থিতির অনুরোধটি স্থিত করবেন তার নীচে যান ।



0

আমার সাথে এটি ঘটেছিল একবার আমি একটি নতুন শাখা থেকে চাপ দেওয়ার চেষ্টা করেছি এবং git push origin masterপরিবর্তে আমি ব্যবহার করেছি । আপনার উচিত:

  • ব্যবহার করুন: git push origin your_new_branchআপনি যদি চান যে এই শাখাটি দূরবর্তী রেপোতে খুব বেশি ঘটে।
  • অন্য কারো কাছে আপনার মাস্টার শাখা একত্রীকরণ জিনিষ খুঁজে বার করো তারপর Git রেপো মাস্টার থেকে ধাক্কা git merge origin master

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


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