2010-03-28 10 views
9

TortoiseGit का उपयोग कैसे एक सब करता है कि एक निश्चित प्रतिबद्ध से accended हटाना होता है, और उपयोग का उदाहरण "अतीत में वापस पाने के" ((मैं कमांड लाइन के उपयोग से बचने के लिए कोशिश कर रहा हूँ): को जारी रखा कुछ कर रहा है, मुझे लगा कि मुझे यह पसंद नहीं आया कि यह कहां जा रहा था, और बीच में सभी को "पीछे" जाने का फैसला किया)।को हटाने TortoiseGit का उपयोग करने की सभी एक निश्चित के बाद

संक्षेप में मैं 5 प्रतिबद्ध "वापस" जाना है, और उन्हें बाद में हटाना चाहते हैं।

उत्तर

1

कमांड लाइन से, आपको वापसी का उपयोग करें या आदेश रीसेट कर सकते हैं। TortoiseGit में समान आदेश होना चाहिए, शायद आप प्रतिबद्ध लॉग देखकर उन्हें एक्सेस कर सकते हैं?

(मैं TortoiseGit इस्तेमाल नहीं किया है तो मैं यह जांच नहीं कर सकता)

+0

ओह, ओकी। खैर, जहां तक ​​मैं देख सकता हूं, उसने कमांड को वापस कर दिया है। लेकिन यह कामकाजी प्रतिलिपि में किए गए बदलावों को उलट देता है, जो पिछले प्रतिबद्धता पर वापस आ जाता है। मुझे "सड़क के नीचे" कई कामों को वापस करने का कोई तरीका नहीं दिख रहा था।किसी भी मामले में, :) – richard

+0

आह की कोशिश कर के लिए कम से कम 1, मैं तुम्हें वापस 5 प्रतिबद्ध एक्स जाना चाहती थी नोटिस नहीं किया था ( 'Git-रीसेट' अपने नए दोस्त (--hard) होना चाहिए;) – Tuxified

2

मैं कछुआ कुछ भी (जब तक आप इलेक्ट्रॉनिका समूह गिनती) उपयोग नहीं किया है, लेकिन मैं आपको इस मामले में यह जानकारी दे देंगे आप जीयूआई के साथ ऐसा करने का कोई तरीका नहीं ढूंढें या आप सभी के बाद सीएलआई जाने का निर्णय लेते हैं।

@Tuxified का उल्लेख किया है, आप git reset --hard <COMMIT> साथ ऐसा कर सकते हैं। आपको एक प्रतिबद्धता निर्दिष्ट करने की आवश्यकता है, जो किसी भी संभावित तरीके से भयभीत रूप से घबराहट में किया जा सकता है; सबसे आम रूपों में HEAD~4 जैसे फॉर्म हैं, जो वर्तमान शाखा के प्रमुख से पहले 4 प्रतिबद्धता निर्दिष्ट करते हैं, और deadbeef42, जो एक प्रतिबद्धता निर्दिष्ट करता है जिसका SHA1 0xdeadbeef42 से शुरू होता है। यदि आप लिनक्स या ओएसएक्स चला रहे हैं, तो आप "विनिर्देशों के स्पष्टीकरण" के तहत man git-rev-parse के माध्यम से प्रतिबद्ध विनिर्देशकों पर पूरा विवरण प्राप्त कर सकते हैं।

आप वर्तमान शाखा का नाम भी बदल सकते हैं (git branch -m new_branch_name) और फिर उस स्थान पर अपने सिर के साथ एक नई शाखा बनाएं जहां आप वापस जाना चाहते हैं। इसका फायदा यह है कि यदि आप वहां मौजूद सभी या कुछ सामानों का उपयोग करना चाहते हैं, तो भी आप इसे आसानी से एक्सेस कर सकते हैं; और यदि आप प्रतिबद्धता टाइप करते हैं, तो आप एक बड़े पवित्र पल से बचाए जाते हैं। प्लस गिट शाखाएं सुपर लाइटवेट हैं इसलिए केवल वास्तविक नकारात्मकता यह है कि एक और शाखा सूचीबद्ध होगी। नई मास्टर शाखा बनाने के लिए आप git branch master <COMMIT> का उपयोग करेंगे, और फिर आप इसे देखेंगे। तो यहां शुद्ध प्रभाव पहले विकल्प के समान है, सिवाय इसके कि आपके पास अभी भी पुराने पुराने परिवर्तन शाखा new_branch_name में सहेजे गए हैं। master पर नए काम करने के बाद, यदि आप इसे महसूस करते हैं, तो आप बाद में उन परिवर्तनों को भी विलय कर सकते हैं।

ध्यान दें कि इनमें से किसी भी तकनीक को "पुन: लिखने का इतिहास" माना जाता है और यदि आप दूसरों के साथ अपना रेपो साझा कर रहे हैं तो समस्याएं उत्पन्न होंगी। यदि आप क्लाउड सिटी या किसी अन्य पीसी में बैकअप रेपो को स्मार्ट और धक्का दे रहे हैं, तो आपको इसे फिर से धक्का देने से पहले उस अंत में चीजों को ठीक करना होगा।

यह शायद की तुलना में आप अभी जरूरत है, लेकिन अगर आप Git का उपयोग कर अंत एक बहुत आप शायद कुछ बिंदु पर इस सामग्री को जानने के लिए चाहता हूँ जिस तरह से और अधिक जानकारी है। खेद है कि मैं कछुआ उपयोग करने के लिए पता नहीं कैसे ...

27

TortoiseGit पर जाएं -> लॉग दिखाएं। सबसे हालिया प्रतिबद्धता का चयन करें जिसे आप रखना चाहते हैं, उपरोक्त सब कुछ मिटा दिया जाएगा। फिर उस पर राइट क्लिक करें और "रीसेट" मास्टर "का चयन करें" और हार्ड चुनें। हालांकि सावधान रहें क्योंकि एक बार जब आप ऐसा करते हैं तो यह हमेशा के लिए खो जाएगा जब तक कि वे किसी अन्य शाखा में कहीं भी संग्रहीत न हों।

+4

साइड नोट: जब आप इस परिवर्तन को मास्टर पर धक्का देते हैं, तो आपको "मौजूदा शाखा को ओवरराइट करें" का चयन करना होगा या यह असफल हो जाएगा। – Powerlord

+5

TortoiseGit में v1.8.14 "सेना ओवरराइट" "विकल्प"> करने के लिए बदल गया है: जाँच "के नाम से परिवर्तन" चेकबॉक्स "सेना त्यागने मई">। मैं और अधिक विनाशकारी "अज्ञात परिवर्तन" विकल्प का उपयोग करने की आवश्यकता नहीं किया था। – ShawnFeatherly

संबंधित मुद्दे