পুশ অন্য একটি শাখায় প্রতিশ্রুতিবদ্ধ


384

একটি শাখা থেকে অন্য শাখায় পরিবর্তন করা এবং চাপ দেওয়া কি সম্ভব?

অনুমান করছি যে পরিবর্তন commited BRANCH1 এবং তাদের ধাক্কা চান BRANCH2

BRANCH1 থেকে , এটি কি বৈধ:

git push origin **BRANCH2**

এবং তারপরে BRANCH1 পুনরায় সেট করবেন?

উত্তর:


710

প্রায় কাজ করবে।

অ-ডিফল্ট শাখায় চাপ দেওয়ার সময় আপনাকে উত্স রেফ এবং লক্ষ্য রেফ উল্লেখ করতে হবে:

git push origin branch1:branch2

অথবা

git push <remote> <branch with new changes>:<branch you are pushing to> 

26
উভয় কি branch1এবং branch2দূরবর্তী থাকতে হবে? আপনি যদি স্থানীয় branch1থেকে দূরবর্তী দিকে ধাক্কা দিতে চান origin branch2?
ওড়াদ

11
@ অরড: না part প্রথম অংশটি স্থানীয় প্রতিশ্রুতির জন্য কেবলমাত্র সনাক্তকারী; এমনকি এটি একটি শাখা হতে হবে না।
এসএলএক্স

6
@ অভিসেকপি: একই বাক্য গঠন ব্যবহার করুন। উৎস শাখা পড়ুন করতে,<remote>/<branch>
SLaks

4
@ অভিসেকপি: আমি ঠিক যা বলেছি ঠিক তাই করুন Do বর্তমান শাখা সম্পূর্ণ অপ্রাসঙ্গিক।
স্ল্যাक्स

20
সচেতন থাকুন যে কেউ (আমার মতো) এই git push origin :branch2ভেবে চালানোর জন্য প্ররোচিত হয়েছে যে এটি কেবলমাত্র স্থানীয় স্থানীয় শাখাকে দূরবর্তী স্থানে ঠেলে দেবে branch2, এটি পরিবর্তে দূরবর্তীটিকে মুছবেbranch2 ! সঠিক উপায় git push origin HEAD:branch2
হেল্ডার পেরেরা

72

অবশ্যই, যদিও এটি কেবল তখনই কাজ করবে যদি এটি BRANCH2 এর একটি দ্রুত এগিয়ে থাকে বা আপনি এটি জোর করে থাকেন। এই জাতীয় কোনও কাজ করার সঠিক বাক্য গঠন

git push <remote> <source branch>:<dest branch> 

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


6
ধন্যবাদ! আমি কেবল যুক্ত করব যা আপনি জোর করতে পারেন git push --force remote local-branch:remote-branch
ফেরান মেলিনঞ্চ

16

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

স্টেপ-01: তৈরি ও সুইচ নতুন শাখায় বি

গিট চেকআউট-বি বি

পদক্ষেপ -২০: নতুন স্থানীয় শাখায় পরিবর্তন যুক্ত করুন

গিট অ্যাড // বা নির্দিষ্ট ফাইল (গুলি)

পদক্ষেপ -03: পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ

গিট কমিট - এম "কমিট_মেসেজ"

পদক্ষেপ -04: নতুন শাখায় পরিবর্তন ঠেলাও বি । নীচের কমান্ডটি দূরবর্তীভাবে পাশাপাশি একটি নতুন শাখা বি তৈরি করবে

গিট পুশ অরিজিনাল বি

এখন, আপনি বিটবাকেট থেকে যাচাই করতে পারবেন যে শাখা বি এর শাখা এ এর চেয়ে আরও একটি কমিট থাকবে । আর আপনি যখন শাখা চেকআউট হবে একজন এই পরিবর্তনগুলি সেখানে হবে না এই শাখা মধ্যে push করা হয়েছে বি

দ্রষ্টব্য: আপনি যদি শাখার A শাখায় আপনার পরিবর্তনগুলি সম্পাদন করে থাকেন এবং এর পরে আপনি সেই পরিবর্তনগুলি নতুন শাখা বিতে স্থানান্তর করতে চান তবে আপনাকে প্রথমে সেই পরিবর্তনগুলি পুনরায় সেট করতে হবে। #HappyLearning


2

আমার ক্ষেত্রে আমার একটি স্থানীয় প্রতিশ্রুতি ছিল, যা এতে চাপ দেওয়া হয়নি origin\master, তবে আমার স্থানীয় masterশাখায় কমিট হয়েছিল । এই স্থানীয় প্রতিশ্রুতি এখন অন্য শাখায় ঠেলা উচিত।

সঙ্গে গীত এক্সটেনশানগুলি আপনি ভালো কিছু করতে পারেন:

  • (বিদ্যমান না থাকলে এবং তৈরি করুন) চেকআউট করে নতুন শাখা তৈরি করুন, যেখানে আপনি আপনার প্রতিশ্রুতিটি চাপতে চান।
  • ইতিহাস থেকে প্রতিশ্রুতি নির্বাচন করুন, যা এই শাখায় পদচারণা করা এবং ঠেলা উচিত।
  • ডান ক্লিক করুন এবং চেরি পিক কমিট নির্বাচন করুন ।
  • এরপরে চেরি পিক বোতাম টিপুন ।
  • নির্বাচিত প্রতিশ্রুতি আপনার চেক আউট শাখায় প্রয়োগ করা হবে। এখন প্রতিশ্রুতিবদ্ধ এবং এটি ধাক্কা।
  • ত্রুটিযুক্ত প্রতিশ্রুতি সহ আপনার পুরানো শাখাটি দেখুন।
  • এই শাখাটিকে দ্বিতীয় শেষ প্রতিশ্রুতিতে কঠোরভাবে পুনরায় সেট করুন, যেখানে সবকিছু ঠিক ছিল (আপনি কী করছেন এখানে সচেতন হন!)। আপনি দ্বিতীয় শেষ প্রতিশ্রুতিতে রাইট ক্লিকের মাধ্যমে এটি করতে পারেন এবং এখানে বর্তমান শাখার পুনরায় সেট করুন নির্বাচন করতে পারেন । আপনি যদি জানেন যে আপনি কী করছেন তা নিশ্চিত করুন the

আপনি এটি জিআইটি কমান্ড লাইনেও করতে পারেন । ডেভিড ক্রিস্টেনসেনের কাছ থেকে অনুলিপি করা উদাহরণ :

আমি মনে করি আপনি git cherry-pick+ git resetআরও দ্রুত ওয়ার্কফ্লো হতে পাবেন :

আপনার একই পরিস্থিতিটি ব্যবহার করে, "বৈশিষ্ট্য" শীর্ষস্থানীয় সর্বাধিক প্রতিশ্রুতিবদ্ধ হওয়া শাখা হওয়ার সাথে এটি করা আরও সহজ হবে:

git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^

কাজটি বেশ কিছুটা সাশ্রয় করে এবং git cherry-pick হ্যান্ডেল করার জন্য ডিজাইন করা দৃশ্যটি।

আমি এটাও নোট করব যে এটি সর্বোচ্চ কাজ করার প্রতিশ্রুতি না দিলে কাজ করবে; চেরি-পিক করার জন্য আপনার কেবল যুক্তির জন্য একটি প্রতিশ্রুতি দরকার:

git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history


2

আমি একটি খারাপ ফলাফল পেয়েছি git push origin branch1:branch2কমান্ডের :

আমার ক্ষেত্রে, branch2মুছে ফেলা হয় এবংbranch1 কিছু নতুন পরিবর্তন সহ আপডেট করা হয়েছে।

অতএব, আপনি যদি পরিবর্তনগুলি কেবল এর branch2থেকে চাপতে চান তবে branch1নীচের পদ্ধতিগুলি ব্যবহার করে দেখুন:

  • চালু branch1:git add .
  • চালু branch1:git commit -m 'comments'
  • চালু branch1:git push origin branch1

  • চালু branch2:git pull origin branch1

  • চালু branch1: পূর্ববর্তী প্রতিশ্রুতিতে প্রত্যাবর্তন করুন।


0

আপনি এটি সহজেই করতে পারেন

git status
git add .
git commit -m "any commit"
git pull origin (branch name, master in my case)
git push origin current branch(master):branch 2(development)(in which you want to push changes)

-1

git init 
#git remote remove origin
git remote add origin  <http://...git>
echo "This is for demo" >> README.md 
git add README.md
git commit -m "Initail Commit" 
git checkout -b branch1 
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete  branch1
#git branch --unset-upstream  


1
কোডটির কিছু ব্যাখ্যা যুক্ত করুন।
নাকেক্স

-4

আপনি ব্রাঞ্চ 1 এর প্রতি প্রতিশ্রুতিবদ্ধ হয়েছেন এবং পরিবর্তনগুলি না হারিয়ে এই প্রতিশ্রুতি থেকে মুক্তি পেতে চান? গিট রিসেট আপনার যা প্রয়োজন। না:

git branch BRANCH2

আপনি যদি ব্রাঞ্চ 2 কে একটি নতুন শাখা হতে চান। আপনি চাইলে এটিকে অন্য একটি শাখার সাথেও মার্জ করতে পারেন। যদি BRANCH2 ইতিমধ্যে বিদ্যমান থাকে, তবে এই পদক্ষেপটি ছেড়ে দিন।

তারপরে:

git reset --hard HEAD~3

আপনি যে শাখায় প্রতিশ্রুতিবদ্ধ তা দায়বদ্ধতা পুনরায় সেট করতে চাইলে want এটি শেষ তিনটি কমিটের পরিবর্তনগুলি নেয়।

তারপরে পুনরায় সেট করা কমিটগুলি ব্রাঞ্চ 2 এ আনতে নীচে করুন

git checkout BRANCH2

এই উত্সটি সহায়ক ছিল: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch

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