git - আমি কিভাবে স্থানীয়ভাবে এবং দূরবর্তী উভয় একটি গিট শাখা মুছে ফেলতে পারি?
git-branch git-remote (20)
আমি স্থানীয়ভাবে এবং GitHub এ আমার দূরবর্তী প্রকল্প ফর্ক উভয় একটি শাখা মুছে ফেলতে চান।
রিমোট শাখা মুছতে ব্যর্থ প্রচেষ্টা
$ 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.
আমি স্থানীয়ভাবে এবং GitHub উভয় remotes/origin/bugfix
শাখা সফলভাবে মুছে ফেলার জন্য ভিন্নভাবে কি করতে হবে?
নির্বাহী সারসংক্ষেপ
$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>
উল্লেখ্য যে বেশিরভাগ ক্ষেত্রে রিমোট নামটি origin
।
স্থানীয় শাখা মুছুন
স্থানীয় শাখাটি মুছে ফেলার জন্য নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করুন:
$ git branch -d branch_name
$ git branch -D branch_name
দ্রষ্টব্য: -d
বিকল্পটি --delete
জন্য একটি উপনাম, যা শুধুমাত্র শাখাটি মুছে ফেলে যদি এটি ইতিমধ্যে আপস্ট্রিম শাখায় সম্পূর্ণরূপে মার্জ হয়ে থাকে। আপনি -D
ব্যবহার করতে পারেন, যা --delete --force
জন্য একটি উপনাম, যা শাখাটি মুছে ফেলে "তার মার্জড অবস্থা নির্বিশেষে।" [উত্স: man git-branch
]
রিমোট শাখা মুছুন [8-সেপ্টেম্বর ২017 তারিখে আপডেট করা]
গিট v1.7.0 হিসাবে, আপনি ব্যবহার করে একটি দূরবর্তী শাখা মুছে ফেলতে পারেন
$ git push <remote_name> --delete <branch_name>
যা তুলনায় মনে রাখা সহজ হতে পারে
$ git push <remote_name> :<branch_name>
যা একটি রিমোট শাখা বা ট্যাগ মুছে ফেলতে " Git v1.5.0 এ যোগ করা হয়েছিল।"
Git v2.8.0 থেকে শুরু করে আপনি ডি-ডি বিকল্পের সাথে git push
ব্যবহার করতে পারেন - --delete
জন্য একটি উপনাম হিসাবে।
অতএব, আপনার ইনস্টল করা Git সংস্করণটি আপনাকে সহজ বা কঠিন সিনট্যাক্স ব্যবহার করতে হবে কিনা তা নির্দেশ করবে।
রিমোট শাখা মুছুন [5 জানুয়ারি ২010 থেকে আসল উত্তর]
স্কট চিকন দ্বারা প্রো গিট এর অধ্যায় 3 থেকে:
দূরবর্তী শাখা মুছে ফেলা হচ্ছে
ধরুন আপনি একটি দূরবর্তী শাখার সাথে সম্পন্ন করেছেন - বলুন, আপনি এবং আপনার সহযোগীরা একটি বৈশিষ্ট্য নিয়ে শেষ হয়ে গেছে এবং এটি আপনার রিমোটের মাস্টার শাখায় (অথবা আপনার স্থিতিশীল কোডলাইন কোনও শাখায় রয়েছে) এতে মার্জ করেছেন। আপনি পরিবর্তে সিনট্যাক্স
git push [remotename] :[branch]
ব্যবহার করে একটি দূরবর্তী শাখা মুছে ফেলতে পারেনgit push [remotename] :[branch]
। আপনি যদি সার্ভার থেকে আপনার সার্ভারফিক্স শাখা মুছে ফেলতে চান তবে আপনি নিম্নলিখিতটি চালান:$ git push origin :serverfix To [email protected]:schacon/simplegit.git - [deleted] serverfix
পরিস্ফুটন। আপনার সার্ভারে আর কোন শাখা নেই। আপনি এই পৃষ্ঠাটি কুকুর-কান করতে চাইতে পারেন, কারণ আপনাকে সেই কমান্ডের প্রয়োজন হবে এবং আপনি সম্ভবত সিনট্যাক্সটি ভুলে যাবেন। এই কমান্ডটি মনে রাখার একটি উপায় হল
git push [remotename] [localbranch]:[remotebranch]
সিনট্যাক্সটিgit push [remotename] [localbranch]:[remotebranch]
করে যা আমরা কিছুটা আগে চলে গেছি। আপনি যদি[localbranch]
অংশটি ছেড়ে যান তবে আপনি মূলত বলছেন, "আমার পাশে কিছু নাও এবং এটি[remotebranch]
।"
আমি git push origin :bugfix
জারি git push origin :bugfix
এবং এটি সুন্দরভাবে কাজ। স্কট চকন ঠিক ছিল- আমি কুকুরটিকে কান দিতে চাই (অথবা স্ট্যাক ওভারফ্লোে এটির উত্তর দিয়ে কুকুর কান)।
তারপর আপনি অন্যান্য মেশিনে এটি চালানো উচিত
git fetch --all --prune
পরিবর্তন প্রচার করা।
সংক্ষিপ্ত উত্তর
যদি আপনি নিম্নলিখিত কমান্ডের আরও বিস্তারিত ব্যাখ্যা চান তবে পরবর্তী বিভাগে দীর্ঘ উত্তরগুলি দেখুন।
একটি দূরবর্তী শাখা মুছে ফেলা হচ্ছে:
git push origin --delete <branch> # Git version 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 tracking branches
git fetch <remote> -p # Shorter
দীর্ঘ উত্তর: মুছে ফেলার জন্য 3 টি ভিন্ন শাখা আছে!
আপনি স্থানীয়ভাবে এবং দূরবর্তী উভয় শাখা মুছে ফেলার সাথে ডিল করছেন, মনে রাখবেন যে 3 বিভিন্ন শাখা জড়িত আছে :
- স্থানীয় শাখা
X
। - রিমোট মূল শাখা
X
। - দূরবর্তী শাখা
X
ট্র্যাক স্থানীয় স্থানীয় দূরবর্তী ট্র্যাকিং শাখাorigin/X
X
।
ব্যবহৃত মূল পোস্টার
git branch -rd origin/bugfix
যা কেবল তার স্থানীয় রিমোট-ট্র্যাকিং শাখার origin/bugfix
মুছে origin/bugfix
, এবং প্রকৃত bugfix
শাখার bugfix
origin
মুছে bugfix
।
যে প্রকৃত রিমোট শাখা মুছে ফেলতে , আপনি প্রয়োজন
git push origin --delete bugfix
অতিরিক্ত তথ্য
নিম্নোক্ত বিভাগগুলি আপনার দূরবর্তী এবং দূরবর্তী ট্র্যাকিং শাখাগুলি মুছে ফেলার সময় বিবেচনা করার জন্য অতিরিক্ত বিশদ বর্ণনা করে।
দূরবর্তী শাখা মুছে ফেলার জন্য দূরবর্তী ট্র্যাকিং শাখা মুছে ফেলা
উল্লেখ্য, রিমোট শাখা X
একটি git push
দিয়ে কমান্ড লাইন থেকে মুছে ফেলার ফলে স্থানীয় রিমোট-ট্র্যাকিং শাখার origin/X
মুছে ফেলা হবে , তাই git fetch --prune
রিমোট-ট্র্যাকিং শাখাটি git fetch --prune
বা git fetch -p
সহ 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
। উদাহরণস্বরূপ, যদি আপনি GitHub এর ওয়েব ইন্টারফেসের মাধ্যমে সরাসরি রিমোট শাখা মুছে ফেলেন তবে এটি ঘটতে পারে।
এই অপ্রচলিত রিমোট-ট্র্যাকিং শাখাগুলিকে সরিয়ে ফেলার একটি সাধারণ উপায় (গিট সংস্করণ 1.6.6 থেকে) সহজেই --prune
বা --prune
-p
সাথে git fetch
--prune
চালাতে হয়। মনে রাখবেন যে দূরবর্তী স্থানে আর বিদ্যমান কোন দূরবর্তী শাখার জন্য এটি সমস্ত অপ্রচলিত স্থানীয় দূরবর্তী ট্র্যাকিং শাখাগুলি সরিয়ে দেয় :
git fetch origin --prune
git fetch origin -p # Shorter
এখানে 1.6.6 রিলিজ নোট (জোর খনি) থেকে প্রাসঙ্গিক উদ্ধৃতি রয়েছে:
"
--multiple
fetch" শিখেছে - সমস্ত এবং ---multiple
বিকল্পগুলি, অনেকগুলি সংগ্রহস্থল থেকে fetch চালানোর জন্য, এবং--prune
বিকল্পটি বন্ধ হয়ে যাওয়া দূরবর্তী ট্র্যাকিং শাখাগুলি সরাতে। এইগুলি "গিট রিমোট আপডেট" এবং "গিট রিমোট প্রুন" তৈরি করা কম প্রয়োজনীয় (যদিও "দূরবর্তী আপডেট" বা "রিমোট প্রুন" অপসারণ করার কোনও পরিকল্পনা নেই)।
অপ্রচলিত দূরবর্তী ট্র্যাকিং শাখার জন্য স্বয়ংক্রিয় স্বয়ংক্রিয় ছাঁটাই বিকল্প
অন্যথায়, আপনার অচল স্থানীয় স্থানীয় রিমোট-ট্র্যাকিং শাখাগুলিকে git fetch -p
মাধ্যমে git fetch -p
, আপনি --remote
বা -r
ফ্ল্যাগগুলির সাহায্যে কেবল --remote
শাখাটি (এস) অপসারণ করে অতিরিক্ত নেটওয়ার্ক অপারেশন করতে এড়াতে পারেন :
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
আরো দেখুন
অন্যান্য উত্তর অনেক ত্রুটি / সতর্কতা হতে হবে। এই পদ্ধতিটি অপেক্ষাকৃত বোকা প্রমাণ যদিও আপনি এখনও git branch -D branch_to_delete
প্রয়োজন হতে পারে যদি এটি সম্পূর্ণভাবে কিছু some_other_branch
মধ্যে মার্জ না হয়ে some_other_branch
, উদাহরণস্বরূপ।
git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete
আপনি রিমোট শাখা মুছে ফেলা হলে রিমোট চার্নিং প্রয়োজন হয় না। এটি শুধুমাত্র ট্র্যাকিংয়ের একটি রেপোতে উপলব্ধ সর্বাধিক আপ টু ডেট রিমোট পেতে ব্যবহৃত হয়। আমি git fetch
remotes যোগ হবে পালন করেছি, তাদের অপসারণ না। এখানে git remote prune origin
আসলে কিছু করবে যখন একটি উদাহরণ:
ব্যবহারকারী A উপরে পদক্ষেপ করে। ব্যবহারকারী বি সবচেয়ে আপ টু ডেট রিমোট শাখা দেখতে নিম্নলিখিত কমান্ড চালাবে
git fetch
git remote prune origin
git branch -r
অন্যান্য উত্তর ছাড়াও, আমি প্রায়ই git_remote_branch টুলটি ব্যবহার করি। এটি একটি অতিরিক্ত ইনস্টলেশান, তবে এটি দূরবর্তী শাখার সাথে ইন্টারঅ্যাক্ট করার সুবিধাজনক উপায় পায়। এই ক্ষেত্রে, মুছে ফেলার জন্য:
grb delete branch
আমি বেশিরভাগ ক্ষেত্রেই publish
এবং track
কমান্ডগুলি ব্যবহার করি।
আপনি git remote prune origin
ব্যবহার করেও এটি করতে পারেন:
$ git remote prune origin
Pruning origin
URL: [email protected]/yourrepo.git
* [pruned] origin/some-branchs
এটি prunes এবং একটি git branch -r
তালিকা থেকে দূরবর্তী ট্র্যাকিং শাখা মুছে ফেলা।
আপনি যদি কোনও শাখা মুছে ফেলতে চান তবে শাখাটি মুছে ফেলার জন্য শাখার বাইরে চেকআউট করুন।
git checkout other_than_branch_to_be_deleted
স্থানীয় শাখা মোছা হচ্ছে:
git branch -D branch_to_be_deleted
রিমোট শাখা মোছা হচ্ছে:
git push origin --delete branch_to_be_deleted
আমি আমার Bash সেটিংসে নিম্নলিখিতটি ব্যবহার করি:
alias git-shoot="git push origin --delete"
তারপর আপনি কল করতে পারেন:
git-shoot branchname
আরেকটি পদ্ধতির
git push --prune origin
সতর্কতা: এটি স্থানীয়ভাবে বিদ্যমান নয় এমন সমস্ত দূরবর্তী শাখা মুছে দেবে। অথবা আরো ব্যাপকভাবে,
git push --mirror
রিমোটরিটির স্থানীয় অনুলিপিের মতো দূরবর্তী রিপোজিটরিটি দেখতে সক্ষম হবে (স্থানীয় মাথা, রিমোট এবং ট্যাগগুলি রিমোটে মিরর করা হয়)।
এখন আপনি এটি GitHub ডেস্কটপ অ্যাপ্লিকেশন দিয়ে করতে পারেন।
অ্যাপ চালু করার পর
- শাখা ধারণকারী প্রকল্প ক্লিক করুন
- আপনি যে শাখাটি মুছতে চান তা স্যুইচ করুন
- "শাখা" মেনু থেকে, GitHub সার্ভার থেকে শাখা মুছে ফেলার জন্য, "অপ্রকাশিত করুন ..." নির্বাচন করুন।
- "শাখা" মেনু থেকে, আপনার স্থানীয় মেশিনের শাখাটি মুছে ফেলার জন্য ('আপনি বর্তমানে যে মেশিনে কাজ করছেন সেটি উর্দ্ধ করুন) শাখাটি মুছে ফেলতে', 'মুছে দিন' শাখা_নাম "..." নির্বাচন করুন।
এটি সহজ: শুধুমাত্র নিম্নলিখিত কমান্ড চালান:
স্থানীয়ভাবে এবং দূরবর্তীভাবে উভয় একটি গিট শাখা মুছে ফেলার জন্য প্রথমে কমান্ড ব্যবহার করে স্থানীয় শাখাটি মুছুন:
git branch -d example
(এখানে example
হল শাখা নাম)
এবং তারপরে কমান্ড ব্যবহার করে রিমোট শাখাটি মুছুন:
git push origin :example
টিপ: আপনি ব্যবহার করে শাখা মুছে ফেলার সময়
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
।
নির্বাহ করার আগে
git branch --delete <branch>
রিমোট শাখার এক্সিকিউট নামটি এক্সিকিউটিভ করে তা নির্ধারণ করুন:
git ls-remote
এটি আপনাকে <branch>
মানের জন্য ঠিক কী লিখতে হবে তা বলবে। ( branch
কেস সংবেদনশীল!)
যদি আপনি এই পদক্ষেপগুলিকে একক কমান্ড দিয়ে সম্পূর্ণ করতে চান তবে নীচের যোগ করে আপনার ~/.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
(বড় হাতের ডি) ব্যবহার করতে হবে।
রিমোট শাখা মুছুন
git push origin :<branchname>
স্থানীয় শাখা মুছে দিন
git branch -D <branchname>
স্থানীয় শাখা পদক্ষেপ মুছে দিন:
- অন্য শাখা চেকআউট
- স্থানীয় শাখা মুছে দিন
শুধু বলুন:
git branch -d <branch-name>
git push origin :<branch-name>
স্থানীয়ভাবে এবং দূরবর্তীভাবে আপনার শাখা মুছে ফেলতে
প্রধান শাখা
git checkout master
-git checkout master
আপনার দূরবর্তী শাখা মুছুন -
git push origin --delete <branch-name>
-git push origin --delete <branch-name>
আপনার স্থানীয় শাখা মুছুন -
git branch --delete <branch-name>
শাখা -git branch --delete <branch-name>
মুছে ফেলুন
একটি মাছ ধরার নৌকা কমান্ড স্থানীয়, এবং দূরবর্তী উভয় মুছে দিন:
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"
স্থানীয়ভাবে মুছে ফেলার জন্য - (স্বাভাবিক),
git branch -d my_branch
যদি আপনার শাখাটি রিবাজিং / মার্জিং অগ্রগতিতে এবং এটি সঠিকভাবে সম্পন্ন না হয়ে থাকে, তাহলে আপনাকে Rebase/Merge in progress
একটি ত্রুটি 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.
গ্রাফিকাল উপস্থাপনা,
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>
git push origin --delete branchName
তুলনায় মনে রাখা সহজ
git push origin :branchName