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


16941

আমি স্থানীয়ভাবে এবং দূরবর্তীভাবে উভয় শাখা মুছতে চাই।

একটি রিমোট শাখা মুছতে চেষ্টা ব্যর্থ হয়েছে

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject

* [new branch] bugfix -> origin/bugfix
Already up-to-date.

remotes/origin/bugfixস্থানীয়ভাবে এবং দূরবর্তীভাবে সফলভাবে শাখাটি মুছতে আমার আলাদাভাবে কী করা উচিত ?


1053
মডারেটর নোট: আপনি যদি এই প্রশ্নের উত্তর দিতে চান, তবে লক্ষ্য করুন যে ইতিমধ্যে 40 টি উত্তর পোস্ট করা আছে। আপনার নতুন উত্তর কোনও উল্লেখযোগ্য মান যোগ করবে?
রবার্ট হার্ভে

54
দ্রষ্টব্য: গিট 2.5+ (Q2 2015) এর জন্য, সঠিক বার্তাটি " deleted remote-tracking branch" থাকবে: github.com/git/git/commit/… দেখুন
ভোনসি

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

@ রবার্টহারভে এখন কেবল 39
অ্যাডাম

@ অ্যাডাম: ৮১. ৪২ টি উত্তর বিভিন্ন কারণে মুছে ফেলা হয়েছে। নির্দিষ্ট বিষয়ের সাথে জনসাধারণের অব্যক্ত আবেশ জীবনের অন্যতম বৃহত রহস্য।
রবার্ট হার্ভে

উত্তর:


21415

নির্বাহী সারসংক্ষেপ

$ git push -d <remote_name> <branch_name>
$ git branch -d <branch_name>

নোট করুন যে বেশিরভাগ ক্ষেত্রে দূরবর্তী নাম origin। সেক্ষেত্রে আপনাকে একইভাবে কমান্ডটি ব্যবহার করতে হবে।

$ git push -d origin <branch_name>

স্থানীয় শাখা মুছুন

স্থানীয় শাখা মুছতে নীচের একটি ব্যবহার করুন:

$ git branch -d branch_name
$ git branch -D branch_name

নোট:-d বিকল্পের জন্য উপনাম হল --delete, যা শুধুমাত্র শাখা মুছে ফেলে যদি এটা ইতিমধ্যেই সম্পূর্ণ তার মূল প্রজেক্টের শাখায় মার্জ করা হয়েছে। আপনি এটি ব্যবহার করতে পারেন -D, --delete --forceএটির জন্য একটি এলিফ , যা শাখাটি মুছে দেয় "এর मर्জকৃত অবস্থা নির্বিশেষে।" [সূত্র: man git-branch]

রিমোট শাখা মুছুন [8-সেপ্টেম্বর -2017 এ আপডেট হয়েছে]

Git v1.7.0 হিসাবে , আপনি ব্যবহার করে একটি দূরবর্তী শাখা মুছতে পারেন

$ git push <remote_name> --delete <branch_name>

যা মনে রাখা সহজ হতে পারে

$ git push <remote_name> :<branch_name>

যা "দূরবর্তী শাখা বা ট্যাগ মুছতে গিট ভি 1 .5. " এ যুক্ত করা হয়েছিল ।

থেকে শুরু করে গীত v2.8.0 আপনার কাছে ব্যবহার করতে পারেন git pushসঙ্গে -dএকটি ওরফে যেমন বিকল্প --delete

অতএব, আপনার ইনস্টল করা গিটের সংস্করণ আপনাকে আরও সহজ বা শক্ত বাক্য গঠন ব্যবহার করার প্রয়োজন কিনা তা নির্দেশ করে।

রিমোট শাখা মুছুন [৫ জানুয়ারী -২০১০ থেকে আসল উত্তর]

স্কট চকন দ্বারা প্রো গিট এর অধ্যায় 3 থেকে :

রিমোট শাখা মুছে ফেলা হচ্ছে

ধরুন আপনি একটি দূরবর্তী শাখা দিয়ে শেষ করেছেন - বলুন, আপনি এবং আপনার সহযোগীরা কোনও বৈশিষ্ট্য সমাপ্ত করে এটিকে আপনার রিমোটের মাস্টার শাখায় একীভূত করেছেন (বা আপনার স্থিতিশীল কোড-লাইন যে কোনও শাখায় রয়েছে)। পরিবর্তে অবরুদ্ধ সিনট্যাক্স ব্যবহার করে আপনি একটি দূরবর্তী শাখা মুছতে পারেন git push [remotename] :[branch]। আপনি যদি সার্ভার থেকে আপনার সার্ভার-ফিক্স শাখাটি মুছতে চান তবে আপনি নিম্নলিখিতটি চালান:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

গম্ভীর গর্জন। আপনার সার্ভারে আর কোনও শাখা নেই। আপনি এই পৃষ্ঠাটি কুকুর করতে চাইতে পারেন, কারণ আপনার সেই আদেশটি প্রয়োজন হবে এবং আপনি সম্ভবত বাক্যবিন্যাসটি ভুলে যাবেন। এই কমান্ডটি মনে রাখার একটি উপায় হল git push [remotename] [localbranch]:[remotebranch]সিন্টেক্সটি স্মরণ করে যা আমরা কিছুটা আগে গিয়েছিলাম। আপনি যদি [localbranch]অংশটি ছেড়ে দেন , তবে আপনি মূলত বলছেন, "আমার দিকে কিছু না নিয়ে এটিকে করুন [remotebranch]।"

আমি জারি করেছি git push origin: bugfixএবং এটি সুন্দরভাবে কাজ করেছে। স্কট চ্যাঙ্কন সঠিক ছিল — আমি সেই পৃষ্ঠাটি কুকুর করতে চাইব (বা স্ট্যাক ওভারফ্লোতে এর উত্তর দিয়ে কার্যত কুকুরের কান)।

তারপরে আপনার অন্য মেশিনে এটি চালানো উচিত

# Fetch changes from all remotes and locally delete 
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune

পরিবর্তন প্রচার করতে।


353
git fetch --all --pruneসার্ভারে রিমোট শাখাটি মোছার পরে অন্য মেশিনগুলিতে একটি করতে ভুলবেন না । ||| স্থানীয় শাখাটি মুছে ফেলার পরে git branch -dএবং git push origin --deleteঅন্যান্য মেশিনের সাহায্যে দূরবর্তী শাখাটি মুছে ফেলার পরে এখনও "অপ্রচলিত ট্র্যাকিং শাখা" থাকতে পারে (সেগুলি দেখার জন্য git branch -a)। এগুলি থেকে মুক্তি পেতে git fetch --all --prune
ট্রেভর বয়ড স্মিথ

14
git branch -aসমস্ত শাখা দেখতে @ ট্রেভরবয়ডস্মিটি ছাড়াও , আপনি git branch -rকেবল দূরবর্তী শাখাগুলি দেখতেও ব্যবহার করতে পারেন । আরও দেখুন git remote show origin- উত্স: gitready.com/interedia/2009/02/13/list-remote-bankches.html
সান্দ্রা

17
আমাকে git branch -D Branch_Nameস্থানীয় শাখা থেকে মুক্তি পেতে দৌড়াতে হয়েছিল
কলব ক্যানিয়ন

11
@ কলবক্যানিয়ন আপনার কেবলমাত্র -D ব্যবহার করতে হবে যদি শাখাটি অন্য কোনও শাখায় একীভূত না করা হয়।
বিটিআরইউ

3
প্রশ্নটি ছিল "স্থানীয়ভাবে এবং গিটহাবের উভয়ই দূরবর্তী স্থান / উত্স / বাগফিক্স শাখা সফলভাবে মুছতে আমার আলাদাভাবে কী করা দরকার?" আপনার আপডেট হওয়া উত্তরে কমান্ডগুলি চালনার পরে, স্থানীয় শাখাটি এখনও উপস্থিত রয়েছে। গ্রহণযোগ্য উত্তরটি একটি সম্পূর্ণ উত্তর হলে এটি দুর্দান্ত হবে be গিট কী সহজ কাজকে সহজ করে তোলে এ সম্পর্কে এটি একেবারে আশ্চর্যজনক ...
jww

3314

ম্যাথিউয়ের উত্তর দূরবর্তী শাখা অপসারণের জন্য দুর্দান্ত এবং আমি ব্যাখ্যাটিরও প্রশংসা করি তবে দুটি আদেশের মধ্যে একটি সাধারণ পার্থক্য করতে:

আপনার মেশিন থেকে একটি স্থানীয় শাখা অপসারণ করতে :

git branch -d {the_local_branch}( -Dএকত্রিত স্থিতি পরীক্ষা না করে শাখাটি মোছার জন্য জোর করে ব্যবহার করুন)

সার্ভার থেকে একটি রিমোট শাখা অপসারণ করতে :

git push origin --delete {the_remote_branch}

তথ্যসূত্র: গিট: একটি শাখা মুছুন (স্থানীয় বা দূরবর্তী)


250
@ ম্যাগিডো ভালভাবে -Dমুছে ফেলা করে, -dআপনাকে একটি সতর্কতা দেয় যদি এটি ইতিমধ্যে সংযুক্ত না হয়ে থাকে
T

8
আপনার স্থানীয় শাখা মাস্টার এবং দৌড়ে সাথে একত্রীকরণ করা না থাকলে 'git branch -d your_branchতারপর তোমার মত ত্রুটি হবেerror: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
Geeks

12
আমি -D এর পরিবর্তে -d ব্যবহার করার পরামর্শ দেব কারণ এটি নিরাপদ। যদি নিমজ্জনিত কমিটের কারণে -d ব্যর্থ হয় তবে আপনার এটি মূল্যায়ন করতে হবে এবং যদি অপসারণ করা অবশ্যই ঠিক আছে তবে -D ব্যবহার করুন।
রোবি

7
রিপোজিটরি ক্লোনিসহ অন্যদের যেখানে দূরবর্তী শাখাগুলি সরিয়ে ফেলা হয়েছে তাদের চালানো উচিত git remote prune <name>(উদাহরণস্বরূপ git remote prune origin) স্থানীয়ভাবে দূরবর্তীটিতে অস্তিত্ব নেই এমন বাসি শাখাগুলি অপসারণ করতে।
কোড_ড্রেড

3
আমি যুক্ত করতে চাই যে -ড একটি সতর্কতা দেয় যদি এটি বর্তমান হেডের সাথে একত্রীভূত না হয়। আপনার যদি স্পষ্টতার প্রয়োজন হয় তবে আমি এই আদেশটি সুপারিশ git branch -a --merged origin/masterকরব এটি স্থানীয় এবং দূরবর্তী উভয় শাখার তালিকা তৈরি করবে; যে মাস্টার মধ্যে মার্জ করা হয়েছে। এখানে অতিরিক্ত তথ্য
এরিক

2038

সংক্ষিপ্ত উত্তর

আপনি যদি নিম্নলিখিত কমান্ডগুলির আরও বিশদ ব্যাখ্যা চান, তবে পরবর্তী বিভাগে দীর্ঘ উত্তরগুলি দেখুন।

রিমোট শাখা মোছা হচ্ছে

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin -d <branch>        # Shorter version (Git 1.7.0 or newer)
git push origin :<branch>          # Git versions older than 1.7.0

একটি স্থানীয় শাখা মুছে ফেলা হচ্ছে

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches

স্থানীয় রিমোট-ট্র্যাকিং শাখা মোছা হচ্ছে

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p      # Shorter

দীর্ঘ উত্তর আছে: মুছে ফেলতে তিনটি ভিন্ন শাখা!

আপনি যখন স্থানীয়ভাবে এবং দূরবর্তীভাবে শাখাগুলি মুছে ফেলার বিষয়ে আলোচনা করছেন তখন মনে রাখবেন যে এখানে তিনটি পৃথক শাখা জড়িত রয়েছে :

  1. স্থানীয় শাখা X
  2. দূরবর্তী উত্স শাখা X
  3. স্থানীয় রিমোট-ট্র্যাকিং শাখা origin/Xযা দূরবর্তী শাখাকে ট্র্যাক করে X

তিনটি শাখার দৃশ্যায়ন

আসল পোস্টার ব্যবহৃত:

git branch -rd origin/bugfix

কোনটি কেবল মোছা স্থানীয় দূরবর্তী-ট্র্যাকিং শাখা origin/bugfix , এবং প্রকৃত দূরবর্তী শাখা bugfixউপর origin

চিত্র 2

প্রকৃত দূরবর্তী শাখাটি মুছতে আপনার প্রয়োজন

git push origin --delete bugfix

চিত্র 3

অতিরিক্ত তথ্য

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

দূরবর্তী শাখাগুলি মুছে ফেলতে জোর করা দূরবর্তী ট্র্যাকিং শাখাগুলিও সরিয়ে দেয়

নোট করুন যে Xকমান্ড লাইন থেকে দূরবর্তী শাখাটি মুছে ফেলা git push স্থানীয় রিমোট-ট্র্যাকিং শাখাও সরিয়ে ফেলবে origin/X , তাই অপ্রচলিত দূরবর্তী-ট্র্যাকিং শাখার সাথে git fetch --pruneবা ছাঁটাই করা প্রয়োজন হয় না git fetch -p। তবে যাইহোক এটি করে দিলে ক্ষতি হবে না।

আপনি যাচাই করতে পারেন যে রিমোট-ট্র্যাকিং শাখাটিও origin/Xনিম্নলিখিত চালনা করে মুছে ফেলা হয়েছিল:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

অপ্রচলিত স্থানীয় দূরবর্তী ট্র্যাকিং শাখার উত্স / এক্স ছাঁটাই করা

আপনি যদি Xকমান্ড লাইন থেকে উপরের শাখাটি মুছে ফেলেন না (উপরে যেমন) তবে আপনার স্থানীয় সংগ্রহশালায় এখনও (একটি অপ্রচলিত) রিমোট-ট্র্যাকিং শাখা থাকবে origin/X। উদাহরণস্বরূপ, আপনি যদি গিটহাবের ওয়েব ইন্টারফেসের মাধ্যমে সরাসরি কোনও দূরবর্তী শাখা মুছে ফেলেন তবে এটি ঘটতে পারে।

এই অপ্রচলিত দূরবর্তী-ট্র্যাকিং শাখাগুলি মুছে ফেলার একটি সাধারণ উপায় (যেহেতু গিট সংস্করণ 1.6.6) কেবল বা সংক্ষিপ্তর git fetchসাথে চালানো । দ্রষ্টব্য যে এটি দূরবর্তীতে আর বিদ্যমান নেই এমন দূরবর্তী শাখাগুলির জন্য সমস্ত অপ্রচলিত স্থানীয় দূরবর্তী ট্র্যাকিং শাখাগুলি সরিয়ে দেয় :--prune-p

git fetch origin --prune
git fetch origin -p # Shorter

এখানে 1.6.6 রিলিজ নোট (জোর খনি) থেকে প্রাসঙ্গিক উদ্ধৃতিটি দেওয়া হয়েছে:

"গিট ফেচ" শিখেছি --all এবং --multipleবিকল্পগুলি, অনেক সংগ্রহস্থল থেকে আনার জন্য চালানো, এবং --pruneবাসি হয়ে যাওয়া দূরবর্তী ট্র্যাকিং শাখাগুলি সরানোর বিকল্প। এগুলি "গিট রিমোট আপডেট" এবং "গিট রিমোট প্রুন" কম প্রয়োজনীয় করে তোলে (যদিও "রিমোট আপডেট" বা "রিমোট প্রুন" অপসারণের কোনও পরিকল্পনা নেই)।

অপ্রচলিত দূরবর্তী-ট্র্যাকিং শাখার জন্য উপরে স্বয়ংক্রিয় ছাঁটাইয়ের বিকল্প

অন্যথা, পরিবর্তে মাধ্যমে আপনার অপ্রচলিত স্থানীয় দূরবর্তী-ট্র্যাকিং শাখা গাছ ছাঁটাই এর git fetch -p, আপনি অতিরিক্ত নেটওয়ার্ক অপারেশন উপার্জন এড়াতে পারেন শুধু নিজে সঙ্গে শাখা (গুলি) সরিয়ে --remoteবা -rপতাকার:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

আরো দেখুন


আপনার চিত্র থেকে, আমি দেখতে পাচ্ছি স্থানীয় ক্লোন রেপো এবং দূরবর্তী উত্সের রেপো রয়েছে। সুতরাং কমপক্ষে দুটি শারীরিক শাখা রয়েছে। মুছে ফেলতে তৃতীয় শাখাটি কোথায়? তৃতীয় শাখাটি কি কেবল স্থানীয় ক্লোন রেপোতে প্রতিশ্রুতিবদ্ধ দিকে নির্দেশ করছে?
হুগি

6
@ হুগি এটি বেশ সঠিক। গিটের শাখাগুলি কেবল কমিটের সাথে সংযুক্ত বুকমার্ক। সুতরাং উপরের আমার গ্রাফগুলিতে, স্থানীয় ক্লোন (2 টি শাখা) Xএবং সেখানে origin/Xবুকমার্কগুলি রয়েছে এবং তারপরে Xরিমোটে রয়েছে (3 টি শাখা তৈরি করা)।

6
রিমোট ট্র্যাকিং শাখার জন্য +1। আপনি অন্য কারও শাখা ক্লোন করলে এই শাখাটি সমস্যা সৃষ্টি করে। এটি আপনার প্রতিশ্রুতিগুলি ট্র্যাক করে এবং আপনাকে জিজ্ঞাসা করে যে আপনি যদি সেই ব্যক্তির শাখায় ঠেলাঠেলি করতে চান keeps
Kermit_ice_tea

1
গ্রাফিক্স একা সোনার ভাল হয়েছে।
মোজেনস ট্র্যাশারডি কে

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

1517

একটি শাখা মুছে ফেলার পদক্ষেপ:

দূরবর্তী শাখা মুছে ফেলার জন্য :

git push origin --delete <your_branch>

স্থানীয় শাখাটি মোছার জন্য আপনার তিনটি উপায় রয়েছে :

1: git branch -D <branch_name>

2: git branch --delete --force <branch_name>  # Same as -D

3: git branch --delete  <branch_name>         # Error on unmerge

ব্যাখ্যা করুন: ঠিক আছে, এখানে কী চলছে তা কেবল ব্যাখ্যা করুন!

কেবলমাত্র কি git push origin --deleteকরতে আপনার রিমোটের শাখা মুছতে শুধুমাত্র , শেষে শাখার নাম যোগ করতে এবং এই মুছে দেবে এবং এটা ধাক্কা দূরবর্তী একই সময়ে ...

এছাড়াও, git branch -D, যা কেবল স্থানীয় শাখা মুছতে শুধুমাত্র ! ...

-D--delete --forceযার জন্য শাখাটি মুছে ফেলা হবে এমনকি এটি মার্জ করা হয়নি (জোর করে মুছুন), তবে আপনি -dএমন কোনওটি ব্যবহার করতে পারেন যার জন্য --deleteশাখা সংযুক্তির স্থিতি সম্পর্কিত কোনও ত্রুটি ছুঁড়েছে ...

পদক্ষেপগুলি দেখানোর জন্য আমি নীচের চিত্রটিও তৈরি করেছি :

গিটে একটি দূরবর্তী এবং স্থানীয় শাখা মুছুন


48
git branch -aস্থানীয় এবং প্রত্যন্ত শাখাগুলি প্রদর্শন করবে dia এটি আপনার জন্য ডায়াগ্রাম প্রবর্তন করতে সহায়তা করবে।
লরেন্সচেন

4
নোট করুন যে আপনি যে শাখার মুছতে চান সেটি স্থাপন করে থাকলে, স্থানীয় শাখাটি মুছে ফেলার আগে আপনাকে মুছে ফেলার (যেমন: মাস্টার) প্রয়োজন ছাড়া অন্য কোনও শাখাটি পরীক্ষা করতে হবে।
বাডির আমের

যখন শাখাগুলি উত্স অনুসারে মুছে ফেলা হবে, আপনার স্থানীয় সংগ্রহস্থল সেটির নজরে নেবে না। আপনার কাছে এখনও সেই শাখাগুলির স্থানীয়ভাবে ক্যাশেড সংস্করণ থাকবে (যা আসলে ভাল) তবে গিট শাখা -a এখনও সেগুলি দূরবর্তী শাখা হিসাবে তালিকাভুক্ত করবে। আপনি স্থানীয়ভাবে এই তথ্যটি পরিষ্কার করতে পারেন: git remote prune originআপনার মুছে ফেলা শাখাগুলির স্থানীয় কপিগুলি এর দ্বারা মুছে ফেলা হয় না। একই প্রভাবটি ব্যবহার করে অর্জন করা হয়েছেgit fetch --prune
vibs2006

2
চিত্রটি বিভ্রান্তিকর এবং খুব বড় এবং উত্তরে কিছুই জুড়েনি। আমি আশা করি এটি এসও তেমন একটি ট্রেন্ড হয়ে উঠবে না।
jmiserez

796

দূরবর্তী শাখাটি মুছতে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন

git push --delete origin serverfix

যা একই কাজ করে

git push origin :serverfix

তবে এটি মনে রাখা সহজ হতে পারে।


1
... এবং ব্যবহার করা নিরাপদ: ও
cst1992

1
আপনি যে স্থানীয় শাখাটি মুছে ফেলার বিষয়ে অংশটি ভুলে গেছেন যা দ্বারা করা যেতে পারে: git branch -d <local_branch>বা git branch -D <local_branch>জোর করে মুছে ফেলার জন্য
অমিত দাশ

370

পরামর্শ: আপনি যখন শাখাগুলি ব্যবহার করে মুছবেন

git branch -d <branchname> # Deletes local branch

অথবা

git push origin :<branchname> # Deletes remote branch

শুধুমাত্র তথ্যসূত্র মুছে ফেলা হয়। যদিও ব্রাঞ্চটি রিমোটে সরিয়ে ফেলা হয়েছে, তবুও এর উল্লেখগুলি আপনার দলের সদস্যদের স্থানীয় সংগ্রহস্থলগুলিতে এখনও বিদ্যমান। এর অর্থ হ'ল অন্যান্য দলের সদস্যদের জন্য মুছে ফেলা শাখাগুলি এখনও দেখা যায় যখন তারা একটি করে git branch -a

এটি সমাধানের জন্য, আপনার দলের সদস্যরা মুছে ফেলা শাখাগুলি ছাঁটাই করতে পারেন

git remote prune <repository>

এটি বিশেষভাবে হয় git remote prune origin


14
আপনার পরিষ্কার করা উচিত যে উপরের git pushক্রিয়াকলাপটি স্থানীয় শাখা এবং দূরবর্তী শাখা মুছে ফেলে ।
আনিকা ব্যাকস্ট্রোম

22
দ্রষ্টব্য যে git remote pruneঅপ্রচলিত দূরবর্তী ট্র্যাকিং শাখাগুলি অপসারণ করার কিছুটা অপ্রচলিত উপায়, এটি করার আরও নতুন উপায় হ'ল ব্যবহার করা git fetch --pruneবা git fetch -p

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

361

আপনি যদি কোনও শাখা মুছতে চান তবে প্রথমে শাখাটি মুছে ফেলা ছাড়া অন্য শাখায় চেকআউট করুন।

git checkout other_than_branch_to_be_deleted

স্থানীয় শাখা মুছে ফেলা হচ্ছে:

git branch -D branch_to_be_deleted

দূরবর্তী শাখা মুছে ফেলা হচ্ছে:

git push origin --delete branch_to_be_deleted

260
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

7
নোট যে মুছে ফেলতে -D বাধ্য করে। এটি ব্যবহার করা সর্বদা ভাল -d, যা আপনাকে বিপজ্জনক কিছু করার দরকার হলে তা মনে করিয়ে দেয়।
জোনাথন রাইনহার্ট

13
আহাহঃ :) এটি আপনার উপর: আপনি গিটকে কাঁদতে দেখতে চাইলে -ডি ব্যবহার করুন বা -আপনি কাঁদতে চাইলে ডি।
ফিলিপ

224

এটি সহজ: কেবল নিম্নলিখিত কমান্ডটি চালান:

স্থানীয়ভাবে এবং দূরবর্তীভাবে একটি গিট শাখা মুছতে, প্রথমে এই কমান্ডটি ব্যবহার করে স্থানীয় শাখাটি মুছুন:

git branch -d example

(এখানে exampleশাখার নাম।)

এবং তারপরে, এই কমান্ডটি ব্যবহার করে দূরবর্তী শাখাটি মুছুন:

git push origin :example

199

আরেকটি পদ্ধতি হ'ল:

git push --prune origin

সতর্কতা: এটি স্থানীয়ভাবে অস্তিত্ব নেই এমন সমস্ত দূরবর্তী শাখা মুছে ফেলবে। বা আরও বিস্তৃতভাবে,

git push --mirror

দূরবর্তী সংগ্রহস্থলটিকে কার্যকরভাবে সংগ্রহস্থলের স্থানীয় কপির মতো দেখায় (স্থানীয় হেড, রিমোট এবং ট্যাগগুলি রিমোটে মিরর করা হয়)।


1
গিট পুশ - প্রিন্ট উত্স গীতলবতে আমার জন্য কিছুই করেনি: গিট ক্লোন গিট: //repo.git; গিট শাখা-ডি-আর উত্স / কিছু-শাখা; গিট পুশ - প্রিন মূল; ফলন: আপ টু ডেট সব কিছুই; গিট আনতে; স্থানীয়ভাবে মুছে ফেলা শাখাগুলি ফিরিয়ে আনে; গিট পুশ - এমিরর; এখন তারা সত্যিই চলে গেছে!
ইএমবিআই

165

আমি আমার বাশ সেটিংসে নিম্নলিখিতটি ব্যবহার করি :

alias git-shoot="git push origin --delete"

তারপরে আপনি কল করতে পারেন:

git-shoot branchname

11
আমি শেষ করেছি কেবলমাত্র আমার .gitconfig অঙ্কুর মধ্যে "শুট" নাম যুক্ত করুন = পুশ উত্স
ডিলেট

যদি আপনার উত্স কোনও আটলশিয়ান স্ট্যাশ হয় এবং শাখাটি ডিফল্ট হিসাবে সেট করা থাকে তবে আপনি একটি ত্রুটি পাবেন "ডিফল্টরূপে, বর্তমান শাখাটি মোছার বিষয়টি অস্বীকার করা হয়েছে ..."। মুছতে পারার আগে আমাকে অন্য একটি শাখায় নির্দেশ করতে স্ট্যাশের ডিফল্ট শাখাটি পরিবর্তন করতে হয়েছিল।
নিওস্ক্রাইব করুন

এটি সম্পূর্ণরূপে সহজ হিসাবে আপনি এটি করেছেন তবে fyi গিট আপনাকে কাস্টম কমান্ড করতে দেয়। রাখুন git push origin --delete $1আপনার পাথ নামক একটি ফাইলে git-shootএবং git shoot branchnameখুব কাজ করবে।
মাহমোফ

132

স্থানীয়ভাবে মুছুন:

একটি স্থানীয় শাখা মুছতে আপনি ব্যবহার করতে পারেন:

git branch -d <branch_name>

জোর করে কোনও শাখা মুছতে, -Dপরিবর্তে ব্যবহার করুন -d

git branch -D <branch_name>

রিমোটলি মুছুন:

দুটি বিকল্প রয়েছে:

git push origin :branchname

git push origin --delete branchname

আমি প্রস্তাব দিচ্ছি যে আপনি দ্বিতীয়টি ব্যবহার করুন কারণ এটি আরও স্বজ্ঞাত।


129

জানুয়ারী ২০১৩ সাল থেকে, গিটহাব Delete branchআপনার "শাখা" পৃষ্ঠায় প্রতিটি শাখার পাশে একটি বোতাম অন্তর্ভুক্ত করেছে ।

প্রাসঙ্গিক ব্লগ পোস্ট: শাখাগুলি তৈরি এবং মুছুন


3
আমি কেবল এই বছরই গিথুবকে ব্যবহার শুরু করেছি, তাই আমি ভাবছিলাম যে কেন এটি এত উচ্চ মানের প্রশ্ন, এবং শীর্ষ উত্তরগুলির মধ্যে কেউই কেবল এটি গিথুব ওয়েব ইন্টারফেস থেকে মুছে ফেলার পরামর্শ দিচ্ছে না! আকর্ষণীয় যে এটি কেবল সাম্প্রতিক সংযোজন।
ক্যাম জ্যাকসন

6
আমি এই এক নির্দেশ করতে যাচ্ছি। লক্ষ্য করুন বোতাম আপনার স্থানীয় শাখা মুছে যাবে না ... কিভাবে করতে হবে এই উত্তর দেখার যে: stackoverflow.com/a/10999165/901641
ArtOfWarfare

126

আপনি যদি এই দুটি পদক্ষেপটি একটি একক কমান্ড দিয়েই সম্পন্ন করতে চান তবে নীচে নিজের সাথে যুক্ত করে এটির জন্য একটি নাম রাখতে পারেন ~/.gitconfig:

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

বিকল্পভাবে, আপনি এটি ব্যবহার করে কমান্ড লাইন থেকে আপনার বৈশ্বিক কনফিগারেশনে যুক্ত করতে পারেন

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

দ্রষ্টব্য : যদি -d(লোয়ারকেস ডি) ব্যবহার করা হয় তবে শাখাটি কেবলমাত্র একত্রীকরণের পরে মুছে ফেলা হবে। মুছে ফেলতে বাধ্য করতে, আপনাকে -D(বড় হাতের ডি) ব্যবহার করতে হবে ।


6
এই আমি খুঁজছিলাম ছিল। আমার নিজের শেল ফাংশন ওরফে কাজ করেনি (অপ্রত্যাশিত EOF) এবং আমি বুঝতে পারি না কেন, তবে এটি দুর্দান্ত কাজ করে! আমার করা একমাত্র পরিবর্তনটি এর &&সাথে প্রতিস্থাপন করা হয়েছিল ;যাতে প্রথম কমান্ড ব্যর্থ হলেও দ্বিতীয়টি কার্যকর করা হবে (কখনও কখনও কেবল স্থানীয় বা কেবলমাত্র দূরবর্তী বিদ্যমান)।
ব্যবহারকারী 1021726

115

স্থানীয়ভাবে এবং দূরবর্তীভাবে আপনার শাখা মুছতে

  • মাস্টার শাখায় চেকআউট - git checkout master

  • আপনার দূরবর্তী শাখা মুছুন - git push origin --delete <branch-name>

  • আপনার স্থানীয় শাখা মুছুন - git branch --delete <branch-name>


112

আপনি এটি ব্যবহার করেও করতে পারেন git remote prune origin

$ git remote prune origin
Pruning origin
URL: git@example.com/yourrepo.git
 * [pruned] origin/some-branchs

এটি git branch -rতালিকা থেকে দূরবর্তী ট্র্যাকিং শাখাগুলি ছাঁটাই করে এবং মুছে দেয় ।


108

অন্যান্য উত্তরগুলি ছাড়াও, আমি প্রায়শই git_remote_branch সরঞ্জাম ব্যবহার করি । এটি একটি অতিরিক্ত ইনস্টল, তবে এটি আপনাকে দূরবর্তী শাখাগুলির সাথে যোগাযোগের জন্য একটি সুবিধাজনক উপায় দেয় gets এই ক্ষেত্রে, মুছতে:

grb delete branch

আমি দেখি যে আমি ব্যবহার publishএবং trackবেশ প্রায়ই কমান্ড।


98

একটি এক-লাইনের কমান্ড মুছে ফেলতে উভয় স্থানীয়, এবং দূরবর্তী :

D=branch-name; git branch -D $D; git push origin :$D

অথবা আপনার ~ / .gitconfig এ নীচের উপন্যাস যুক্ত করুন । ব্যবহার:git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"

17
Script git branch -Dকোনও স্ক্রিপ্টে সাবধানতার সাথে ব্যবহার করুন, যেহেতু এটি কোনও শাখাটি পরীক্ষা না করে জোর করে মুছে ফেলা হয়েছে d -dনিরাপদ থাকতে ব্যবহার করুন ।
সিজারসোল

94

শাখা মুছে ফেলা হচ্ছে

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

$ git branch -d contact-form

এবং দূরবর্তী শাখা মুছে ফেলার জন্য:

git push origin --delete contact-form

87

দূরবর্তী শাখা মুছুন

git push origin :<branchname>

স্থানীয় শাখা মুছুন

git branch -D <branchname>

স্থানীয় শাখার পদক্ষেপগুলি মুছুন:

  1. অন্য শাখায় চেকআউট
  2. স্থানীয় শাখা মুছুন

3
দূরবর্তী শাখা মুছে ফেলার জন্য পরে "গিট পুশ" দরকার?
চঠুরঙ্গ

সামিথা ছাথুরঙা নং, git push origin :<branchname>ইতিমধ্যে দূরবর্তী স্থানে একটি 'ফাঁকা' শাখা ঠেলে দিয়েছে (তাই দূরবর্তী শাখাটি মুছে ফেলে)
মাইখা সাজ্জবে


83
git push origin --delete <branch Name>

চেয়ে মনে রাখা সহজ

git push origin :branchName

81

এখন আপনি এটি গিটহাব ডেস্কটপ অ্যাপ্লিকেশন দিয়ে করতে পারেন ।

অ্যাপ্লিকেশন চালু করার পরে

  1. শাখা সমন্বিত প্রকল্পে ক্লিক করুন
  2. আপনি মুছে ফেলতে চান সেই শাখায় স্যুইচ করুন

    শাখা পরিবর্তন

  3. "ব্রাঞ্চ" মেনু থেকে, গিটহাব সার্ভারগুলি থেকে শাখাটি মুছে ফেলার জন্য "অপ্রকাশিত ..." নির্বাচন করুন।

    অপ্রকাশিত শাখা

  4. "ব্রাঞ্চ" মেনু থেকে, শাখাটি আপনার স্থানীয় মেশিনটি মুছে ফেলার জন্য " ব্রাঞ্চ_নাম " মুছুন ... "নির্বাচন করুন (আপনি বর্তমানে যে মেশিনটিতে কাজ করছেন একে একে)

    স্থানীয় শাখা মুছুন


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

12
@ ডেমেডিয়র, আমি দ্বিমত পোষণ করছি। ২০১০ সালে ওপি যখন প্রশ্ন জিজ্ঞাসা করেছিল, এটি করার UI উপায় উপস্থিত ছিল না এবং একমাত্র বিকল্প ছিল কমান্ড লাইন। আপনি একটি কমান্ড লাইন কেবলমাত্র বিকল্প চান তা নির্দেশ করতে এটি প্রশ্নে বা ট্যাগ, কমান্ড-লাইন-ইন্টারফেসের সাথে উল্লেখ করা উচিত , যা এই ক্ষেত্রে উপস্থিত নেই।
এরিক

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

78

স্থানীয়ভাবে মুছে ফেলতে - (সাধারণ)

git branch -d my_branch

যদি আপনার শাখাটি একটি রিবাজিং / মার্জ অগ্রগতিতে থাকে এবং তা সঠিকভাবে করা হয়নি, তার অর্থ আপনি একটি ত্রুটি পাবেন, Rebase/Merge in progress , সুতরাং সেই ক্ষেত্রে আপনি নিজের শাখাটি মুছতে সক্ষম হবেন না।

সুতরাং হয় আপনার রিবেসিং / মার্জ করা সমাধান করা দরকার। অন্যথায়, আপনি ব্যবহার করে মুছে ফেলতে বাধ্য করতে পারেন ,

git branch -D my_branch

রিমোটে মুছতে :

git push --delete origin my_branch

আপনি একই ব্যবহার করে করতে পারেন:

git push origin :my_branch   # Easy to remember both will do the same.

গ্রাফিকাল উপস্থাপনা:

এখানে চিত্র বিবরণ লিখুন


73

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

দূরবর্তী শাখা মুছতে

git push -d origin <branch-name>

অথবা

git push origin :<branch-name>

স্থানীয় শাখা মুছতে

git branch -D <branch-name>

2
দূরবর্তী শাখাটি মোছার --deleteপরিবর্তে আমার ব্যবহার করা দরকার -d
জাকজে

-dবিকল্পটি একটি উপাধি --deleteএবং যদি --deleteকাজ হয় তবে -dএটিও কাজ করা উচিত, আপনি যদি জোর করে কোনও শাখা মুছতে চান তবে আপনি বা এর -Dপরিবর্তে ব্যবহার করতে পারেন । -d--delete
বিবেক মারু

68

রিমোটের শাখার মতো একই নামের সাথে যদি আপনার ট্যাগ থাকে তবে এটি কাজ করবে না:

$ git push origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to push some refs to 'git@github.com:SomeName/some-repo.git'

সেক্ষেত্রে আপনাকে অবশ্যই উল্লেখ করতে হবে যে আপনি শাখাটি মুছতে চান, ট্যাগটি নয়:

git push origin :refs/heads/branch-or-tag-name

একইভাবে, আপনি যে শাখার ব্যবহার করবেন তার পরিবর্তে ট্যাগটি মুছতে:

git push origin :refs/tags/branch-or-tag-name

1
এটি দুর্দান্ত, তবে লোকেরা তাদের শাখা এবং ট্যাগগুলির একই নাম এবং একই নামকরণ স্কিমের সাথে প্রথম স্থানে নামকরণ করা উচিত নয়।

3
ঠিক আছে, আমার দৃশ্যপটটি ছিল যে আমি একটি শাখাটিকে একটি ট্যাগে রূপান্তর করছি এবং ট্যাগটির জন্য শাখার মতো একই নাম রাখা বুদ্ধিমান হয়েছিল। রুপান্তরিত করার অর্থ আমি শাখা বি এটিকে মার্জ করে এবং শাখা বিতে সর্বশেষ প্রতিশ্রুতি ট্যাগ ট্যাগ দিয়ে ট্যাগ করেছিলাম যাতে শাখা বি মোছার পরে এটি সহজেই বি ট্যাগটি পরীক্ষা করে পুনরুদ্ধার করা যায়
গ্রেগ

53

অন্যান্য উত্তরগুলির মধ্যে অনেকগুলি ত্রুটি / সতর্কতার দিকে পরিচালিত করবে। এই পদ্ধতির তুলনামূলকভাবে বোকা প্রমাণ যদিও এটি আপনার এখনও প্রয়োজন হতে পারে git branch -D branch_to_deleteযদি এটি সম্পূর্ণরূপে একীভূত না হয় তবে some_other_branchউদাহরণস্বরূপ।

git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete

আপনি যদি রিমোট শাখাটি মুছে ফেলেন তবে রিমোট ছাঁটাই প্রয়োজন হয় না। এটি কেবলমাত্র আপনি সন্ধান করছেন এমন একটি সংগ্রহস্থলে সর্বাধিক আপ টু ডেট রিমোটগুলি পাওয়া যায়। আমি পর্যবেক্ষণ করেছি git fetchরিমোটগুলি যুক্ত করব, সেগুলি সরাবে না। git remote prune originপ্রকৃতপক্ষে কখন কিছু করতে হবে তার একটি উদাহরণ এখানে :

ব্যবহারকারী এ উপরের পদক্ষেপগুলি করেন। সর্বাধিক আপ টু ডেট দূরবর্তী শাখা দেখতে ব্যবহারকারী বি নীচের আদেশগুলি চালাবেন:

git fetch
git remote prune origin
git branch -r

51

আমি এই উত্তরের জন্য গুগল করতে অসুস্থ হয়ে পড়েছি, তাই ক্রাইজক্রাইগ পোস্ট করা উত্তরটির জন্য আমি একইরকম দৃষ্টিভঙ্গি নিয়েছি আগে করা ।

আমি আমার বাশ প্রোফাইলে নিম্নলিখিতগুলি যুক্ত করেছি:

function gitdelete(){
    git push origin --delete $1
    git branch -D $1
}

তারপরে প্রতিবার যখন আমি একটি শাখা দিয়ে চলেছি ( masterউদাহরণে মার্জ করা হয়েছে ) আমি আমার টার্মিনালে নিম্নলিখিতটি চালাচ্ছি:

gitdelete my-branch-name

... যা স্থানীয়ভাবে পাশাপাশি my-branch-nameথেকে মুছে ফেলা হয় origin


7
এটির উপর প্রসারণ, --delete "$@"এবং এর -D "$@"পরিবর্তে $1এটি একাধিক শাখার জন্য পরিচালনা করবে।
কুণল

3
আমি চলমান করার পরামর্শ দিই git branch -d(ছোট হাতের 'd' নামে সহ) প্রথম নিশ্চিত পরিবর্তন হয়েছে মার্জ, এবং তারপর যদি সফল (করা ধাক্কা &&কমান্ড মধ্যে)
Bryn

49

মৃত্যুদণ্ড কার্যকর করার আগে

git branch --delete <branch>

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

git ls-remote

এটি আপনাকে মূল্যের জন্য ঠিক কী লিখতে হবে তা বলবে <branch>। ( branchকেস সংবেদনশীল!)


46

ব্যবহার করুন:

git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

আপনি যদি মুছে ফেলার বিষয়ে নিশ্চিত হন তবে চালান

git branch -D bugfix

এখন মুছে ফেলার জন্য মুছে ফেলা দূরবর্তী শাখা চালান

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