मुख्य सामग्री पर जाएं

Git Push Force: यह कैसे काम करता है और इसे सुरक्षित तरीके से कैसे इस्तेमाल करें

सीखें कि git push force शाखा का इतिहास कैसे फिर से लिखता है, इसे सुरक्षित रूप से कैसे उपयोग करें, और टीम के वर्कफ़्लो को तोड़े बिना कमिट्स कैसे रिकवर करें।
अपडेट किया गया 25 सित॰ 2026  · 7 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

आपने एक डेवलपर के रूप में यह अनुभव किया होगा: आपको अभी अहसास हुआ कि आपकी पिछली कमिट में कोड में समस्या थी। इस गलती को पलटने के लिए, आप कुछ कमांड चलाते हैं और अपना लोकल इतिहास फिर से लिखते हैं। जब आप सब कुछ साफ करने के लिए git push --force चलाते हैं, तो आपके टीममेट्स बताते हैं कि कुछ कमिट्स गायब हैं या आपकी पाइपलाइन में बिल्ड फेल हो रहे हैं।

इस लेख में, मैं समझाऊंगा कि git push --force असल में क्या करता है, इसे कब इस्तेमाल करना चाहिए, और गलतियों से कैसे बचना है। यदि आप Git के साथ शुरुआत कर रहे हैं, तो मैं हमारे Introduction to Git कोर्स को लेने की सलाह देता/देती हूं ताकि आप वर्ज़न कंट्रोल के बारे में सीख सकें। साथ ही, मुझे Git Cheat Sheet उपयोगी संदर्भ लगता है, जिसे आप डाउनलोड कर सकते हैं—इसमें सबसे आम Git शब्दावली और कमांड्स एक जगह हैं।

कब आपको लगेगा कि आपको git push --force की जरूरत है

मान लीजिए आप पुश करने से पहले अपनी लोकल कमिट हिस्ट्री साफ कर रहे हैं। मर्ज करने से पहले हिस्ट्री दुरुस्त करने के लिए आप git rebase -i main चलाते हैं। लोकल में सब कुछ परफेक्ट दिखता है, तो आप एक साधारण git push से अपनी रिमोट ब्रांच अपडेट करने की कोशिश करते हैं। लेकिन सामान्य सफलता संदेश की जगह Git आपको एक त्रुटि दिखा देता है।

एक और स्थिति यह हो सकती है जब आप गलती से संवेदनशील डेटा कमिट कर दें—जैसे कोई API कुंजी या पासवर्ड—और उसे रिमोट पर पुश कर दें। लोकल इतिहास फिर से लिखकर आप उस समस्या वाली कमिट को हटाते हैं, लेकिन सामान्य पुश रिमोट रिपॉज़िटरी को अपडेट नहीं करता और संवेदनशील डेटा वहीं रह जाता है। इसके बदले आपको एक त्रुटि संदेश मिलता है।

! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'origin'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.,
hint: 'git pull ...') before pushing again.

यह “non-fast-forward” त्रुटि Git का सेफ्टी नेट है—एक चेतावनी कि आपके इतिहास की कोई बात सर्वर पर मौजूद कंटेंट से मेल नहीं खाती। इस बिंदु पर, इस त्रुटि को बायपास करने के लिए git push --force चलाना आकर्षक लग सकता है।

यदि आप ब्रांच पर अकेले काम कर रहे हैं तो यह ठीक चल सकता है। लेकिन साझा प्रोजेक्ट्स में यह आसानी से भ्रम पैदा कर सकता है या किसी और का काम मिटा सकता है।

git push --force वास्तव में क्या करता है

आम तौर पर, Git केवल तभी आपको बदलाव पुश करने देता है जब आपकी लोकल ब्रांच में रिमोट पर मौजूद सब कुछ—आपकी नई कमिट्स सहित—शामिल हो। लेकिन कभी-कभी आप git rebase, squashing या संवेदनशील डेटा हटाने के जरिए अपनी कमिट हिस्ट्री फिर से लिख सकते हैं। ऐसा करने पर आपकी लोकल ब्रांच रिमोट ब्रांच से अलग हो जाएगी। तब जब आप नई कमिट पुश करने की कोशिश करते हैं, Git त्रुटि दिखाता है, जो रिमोट ब्रांच को काम के नुकसान से बचाता है।

git push --force इस्तेमाल करने पर आप Git से सेफ्टी चेक छोड़कर रिमोट ब्रांच को अपनी लोकल ब्रांच की सामग्री से ओवरराइट करने के लिए कहते हैं। 

यह कुछ इस तरह दिखता है:

git push --force origin main

यह रिमोट की main ब्रांच को आपकी लोकल main से मैच कर देगा और आपके लोकल में न होने वाली कमिट्स को हटा देगा। 

अब अपनी Git ब्रांच को उस साझा किताब के एक अध्याय की तरह समझें जिसे आपकी टीम साथ में लिख रही है। एक सामान्य पुश अध्याय के अंत में नए पैराग्राफ जोड़ने जैसा है। जबकि git push --force अधिक शक्तिशाली है—यह मौजूदा अध्याय को फाड़कर आपकी संस्करण से पूरी तरह बदल देता है। 

git push --force का जोखिम यह है कि यदि सहयोगियों ने अपनी बदलाव उन कमिट्स पर आधारित किए हैं जिन्हें आपने अभी मिटा दिया, तो उनका काम खो सकता है। अगला सेक्शन --force कमांड के साथ काम करते समय बरतने वाली सावधानियों पर है।

यह आपकी टीम के लिए सब कुछ कैसे बिगाड़ सकता है

यदि आप main या develop जैसी साझा ब्रांच पर जबरन पुश करते हैं, तो संभवतः निम्नलिखित होगा:

  • दूसरों की लोकल ब्रांचें सिंक से बाहर हो जाती हैं: यदि आपके टीममेट्स ने वे पुराने कमिट्स पुल कर लिए थे जिन्हें आपने अब रिमोट से मिटा दिया है, तो उनका लोकल इतिहास अब सर्वर से मेल नहीं खाएगा। उनकी ब्रांचें उन कमिट्स को संदर्भित करेंगी जो “गायब” हो गए हैं, जिससे भ्रम पैदा होगा और 
  • पुल करने पर उलझे हुए मर्ज या त्रुटियां मिलती हैं: जब कोई व्यक्ति आपके फोर्स-पुश के बाद git pull करने की कोशिश करता है, तो Git को फिर से लिखे गए इतिहास को उनकी लोकल कमिट अनुक्रम के साथ कैसे मिलाए, यह समझ नहीं आता। इससे अक्सर अजीब मर्ज कमिट्स, उलझाने वाली त्रुटियां, या ऐसी स्थितियां बनती हैं जहां टीममेट्स को git fetch, git reset से लेकर ब्रांच को फिर से क्लोन करने तक मैन्युअल हस्तक्षेप करने के लिए कहा जाता है।
  • CI/CD पाइपलाइन्स फेल हो सकती हैं: पाइपलाइन्स अक्सर सुसंगत कमिट हैशेज़ और लिनेयर हिस्ट्री पर निर्भर होती हैं। एक फोर्स पुश उनसे टेस्ट फेल करवा सकता है, गलत कोड को फिर से डिप्लॉय करवा सकता है, या पुराने कमिट्स पर रिबिल्ड करते समय क्रैश करा सकता है।

हमारा CI/CD for Machine Learning कोर्स देखें ताकि आप CI/CD वर्कफ़्लोज़ बनाना समझ सकें। मैं हमारे Introduction to Data Versioning with DVC कोर्स की भी सलाह देता/देती हूं, जिससे आप डेटा वर्ज़निंग और कोड वर्ज़निंग के बीच का अंतर सीखेंगे।

इसे इस तरह समझें: आप और आपका एक टीममेट feature ब्रांच पर हैं। आप अपनी लोकल हिस्ट्री साफ करते हैं, फिर git push --force चलाते हैं। कुछ मिनट बाद, आपका टीममेट अपने बदलाव पुश करता है। उन्हें Git में त्रुटियां दिखती हैं। जब वे पुल करते हैं, तो उन्हें मर्ज कॉन्फ्लिक्ट्स और बिगड़ी हुई कमिट हिस्ट्री मिलती है। इस बीच, आपकी CI पाइपलाइन मिसिंग कमिट्स के कारण फेल हो जाती है। अब, आपका टीममेट ब्रांच की उलझन सुलझाने में समय गंवाता है और डिप्लॉयमेंट में देरी हो जाती है।

एक ही फोर्स पुश यह सब करा सकता है।

ज्यादा सुरक्षित विकल्प: git push --force-with-lease

ऐसी समस्याओं से बचने के लिए, मैं git push --force-with-lease इस्तेमाल करने की सलाह देता/देती हूं। यह कमांड रिमोट ब्रांच पर पुश करते समय एक सेफ्टी चेक जोड़ता है ताकि अनपेक्षित कमिट्स से बचा जा सके।

git push --force-with-lease origin main

--force-with-lease को “कूदने से पहले देख लेना कि रास्ता साफ है या नहीं” की तरह समझें। कुछ करने से पहले यह सुनिश्चित करता है कि किसी और ने ब्रांच में बदलाव न किए हों। यदि सब कुछ वैसा ही है जैसा आपने आखिरी बार देखा था, तो आपका इतिहास अपडेट हो जाता है। लेकिन अगर ऐसी नई परिवर्तन हैं जिनके बारे में आपको पता नहीं था, तो Git आपको रोक देता है और पहले स्थिति की समीक्षा करने को कहता है। इस तरह यह कमांड हमेशा सहयोगियों को अनजाने ओवरराइट से बचाता है।

गलत फोर्स पुश से कैसे उबरें

यदि कुछ कमिट्स खो जाएं, तो घबराएं नहीं—आप उन्हें फिर भी रिकवर कर सकते हैं। Git वर्तमान कमिट में होने वाले परिवर्तनों, जिसमें रीराइट्स भी शामिल हैं, का हमेशा रिकॉर्ड रखता है और उसे reflog में स्टोर करता है।

खोई हुई कमिट्स ऐसे रिकवर करें:

चरण 1: खोई कमिट्स ढूंढने के लिए git reflog का उपयोग करें

अपनी ब्रांच हिस्ट्री देखने के लिए git reflog चलाएं।

git reflog

आपको अपनी कमिट्स कुछ इस तरह दिख सकती हैं:

abc1234 HEAD@{1}: push: force push
def5678 HEAD@{2}: commit: add new feature

चरण 2: खोई हुई कमिट बहाल करें

जिस कमिट हैश को आप रिकवर करना चाहते हैं उसे पहचान लेने पर, नीचे दिया कमांड चलाकर उस विशेष कमिट पर जाएं।

git checkout def5678

चरण 3: नई ब्रांच बनाएं

फाइलें सुरक्षित रूप से रिकवर करने के लिए, एक नई git ब्रांच बनाएं।

git checkout -b recovery-branch

चरण 4: रिमोट ब्रांच बहाल करें

अब रिकवर की गई कमिट्स को ब्रांच पर पुश करें:

git push origin recovery-branch

ध्यान रखें कि reflog डेटा केवल लोकल मशीनों पर मौजूद होता है। इसलिए, यदि आपके किसी भी टीममेट ने उन्हें अपने लोकल वातावरण में स्टोर नहीं किया, तो आप खोई कमिट्स रिकवर नहीं कर पाएंगे।

Git में सहयोग और ब्रांचों के साथ काम करने के बारे में और जानने के लिए मैं हमारे Intermediate Git कोर्स की सलाह देता/देती हूं।

git push --force को सुरक्षित रूप से इस्तेमाल करने की सर्वोत्तम प्रथाएं

गलतियां होने की संभावना घटाने के लिए, ये कुछ अच्छी आदतें अपनाएं:

  • --force की जगह --force-with-lease को प्राथमिकता दें:  यह तरीका ज्यादा सुरक्षित है—यह जांचता है कि आपकी आखिरी फ़ेच के बाद रिमोट ब्रांच बदली तो नहीं है। इससे आपके टीममेट्स को अनजाने ओवरराइट से बचाने में मदद मिलेगी।

  • साझा ब्रांचों पर फोर्स-पुश करने से बचें: main, master, develop या release जैसी साझा ब्रांचों पर कभी फोर्स-पुश न करें। बाधा से बचने के लिए केवल अपनी फीचर ब्रांचों पर, जहां योगदानकर्ता आप ही हों, फोर्स पुश करें।

  • फोर्स-पुश करने से पहले टीम को सूचित करें: यदि आपको किसी साझा ब्रांच पर फोर्स-पुश करना ही पड़े, तो अपनी टीम को पहले बता दें। इससे वे अपना काम सुरक्षित कर सकेंगे और नुकसान से बचा जा सकेगा।

  • प्रोटेक्टेड ब्रांचों का उपयोग करें: GitHub, GitLab और Bitbucket जैसे प्लेटफ़ॉर्म्स पर आप अपनी ब्रांचों के लिए प्रोटेक्शन सक्षम कर सकते हैं। इससे डायरेक्ट एडिट्स सीमित होते हैं और महत्वपूर्ण ब्रांचों पर अनजाने फोर्स पुश से बचाव होता है।

यदि आप निजी रिपोज़ मैनेजमेंट के बारे में और जानना चाहते हैं, तो हमारा Introduction to GitHub Concepts कोर्स देखे—GitHub पर सहयोग करते समय पुल रिक्वेस्ट की समीक्षा कैसे करें, यह समझने के लिए।

निष्कर्ष

git push --force आपका रिपो इतिहास फिर से लिखने का एक उपयोगी तरीका देता है—चाहे आप कमिट्स साफ करना चाहें या संवेदनशील डेटा हटाना। इस कमांड का उपयोग हमेशा सावधानी से करें ताकि आपकी टीम का वर्कफ़्लो न टूटे।

जहां भी संभव हो, --force-with-lease का उपयोग करें। यह आपको ज्यादा नियंत्रण देता है बिना दूसरों के काम को जोखिम में डाले। थोड़ी सावधानी और संचार के साथ, आप अपनी Git हिस्ट्री साफ रख सकते हैं बिना टीम के लिए परेशानी खड़ी किए।

Git में विशेषज्ञ बनने के लिए हमारे Git Fundamentals और GitHub Foundations स्किल ट्रैक्स देखें।


Allan Ouko's photo
Author
Allan Ouko
LinkedIn

डेटा एनालिटिक्स, बिज़नेस इंटेलिजेंस और डेटा साइंस में व्यावहारिक अनुभव रखने वाला डेटा साइंस तकनीकी लेखक। मैं SQL, Python, Power BI, Databricks और डेटा इंजीनियरिंग पर व्यावहारिक, उद्योग-केंद्रित सामग्री लिखता/लिखती हूँ, जो वास्तविक दुनिया की एनालिटिक्स कार्य से जुड़ी होती है। मेरी लेखनी तकनीकी गहराई और व्यावसायिक प्रभाव के बीच पुल का काम करती है, जिससे पेशेवरों को डेटा को आत्मविश्वासपूर्ण निर्णयों में बदलने में मदद मिलती है. 

FAQs

git push --force इस्तेमाल करने के क्या जोखिम हैं?

यह रिमोट ब्रांच पर कमिट्स को ओवरराइट कर सकता है, जिससे टीममेट्स का काम खो सकता है या उलझे हुए मर्ज कॉन्फ्लिक्ट्स का सामना करना पड़ सकता है।

मैं git push --force-with-lease को सुरक्षित रूप से कैसे उपयोग कर सकता/सकती हूं?

रिमोट ब्रांच आपकी पिछली फ़ेच के बाद बदली नहीं है, यह सुनिश्चित करने और अनजाने ओवरराइट से बचने के लिए --force के बजाय git push --force-with-lease का उपयोग करें।

ऐसी कौन-सी स्थितियां हैं जहां git push --force जरूरी होता है?

git push --force तब जरूरी हो सकता है जब आपने लोकल कमिट्स को रीबेस किया हो, इतिहास से संवेदनशील डेटा हटाया हो, या किसी फीचर ब्रांच को मर्ज करने से पहले कमिट हिस्ट्री साफ की हो।

जिस git push --force पर मुझे पछतावा है, उसे कैसे पलटूं?

git push --force को पलटने के लिए git reflog चलाकर पिछली कमिट ढूंढें, फिर उस कमिट को चेकआउट करके सुधारी हुई ब्रांच को फोर्स-पुश करें।

git push --force के साथ गलतियों से बचने की सर्वोत्तम प्रथाएं क्या हैं?

--force-with-lease का उपयोग करें, साझा ब्रांचों पर फोर्स-पुश से बचें, टीम से संवाद करें, और अपने Git होस्टिंग प्लेटफ़ॉर्म पर महत्वपूर्ण ब्रांचों को प्रोटेक्ट करें।

विषय
Git
डेटा इंजीनियरिंग

DataCamp के साथ सीखें

कोर्स

Git परिचय

2 घंटा
102.7K
अपने सॉफ़्टवेयर और डेटा प्रोजेक्ट्स में version control के लिए Git की मूल बातें जानें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

कोर्स

एडवांस्ड Git

3 घंटा
9.9K
Git की उन्नत सुविधाओं में महारत हासिल करें, डेटा विज्ञान और इंजीनियरिंग वर्कफ़्लो को सरल बनाएं—जटिल मर्जिंग से लेकर बड़े पैमाने पर प्रोजेक्ट ऑप्टिमाइज़ेशन तक।
और देखेंRight Arrow