मुख्य सामग्री पर जाएं
होम
Docs/Git और GitHub

Git और GitHub

PocketCode में Git पहले से बिल्ट-इन है: कुछ इंस्टॉल नहीं करना और git कमांड टाइप नहीं करनी। hunk से stage करें, commit करें, branch बदलें और merge करें, stash करें, blame देखें, interactive rebase और cherry-pick करें, फिर अपने GitHub pull request, issue और CI पढ़ें और मैनेज करें। यह ऐप के अंदर JGit लाइब्रेरी पर चलता है, इसलिए सारा लोकल काम ऑफ़लाइन चलता है; सिर्फ़ remote से बात करने (clone, pull, push, GitHub) के लिए कनेक्शन चाहिए।

यह क्या है और इसे कैसे खोलें

Git एक अकेली स्क्रीन नहीं है: हर हिस्सा वहीं है जहाँ आप पहले से काम करते हैं। जो आप कर रहे हैं उसके हिसाब से सही दरवाज़ा चुनें।

कहाँकैसे खोलें
Source Control (एडिटर)एडिटर का कमांड पैलेट या मेन्यू खोलें, Git सेक्शन में जाएँ और Source Control चुनें। या फ़िज़िकल कीबोर्ड पर Ctrl+Shift+G दबाएँ, या स्टेटस बार में branch का नाम या blame टेक्स्ट टैप करें।
GitHub PRs & Issues (एडिटर)कमांड पैलेट या एडिटर मेन्यू → Git → GitHub PRs & Issues। इसका कोई शॉर्टकट नहीं है।
Local History… और Compare with… (एडिटर)कमांड पैलेट। इनमें से किसी का शॉर्टकट नहीं है।
Git Panel (टर्मिनल)टर्मिनल में टूल्स पैनल या टर्मिनल मेन्यू खोलें और Git Panel चुनें।
प्रोजेक्ट कार्ड (Projects)कार्ड का chevron टैप करके उसे खोलें: Commit, Git, Publish, और प्रोजेक्ट में remote हो तो Pull / Push / Fetch। Clone पेज के ऊपर वाली टाइल है।
आपका GitHub अकाउंटSettings → Integrations → Connected Services → GitHub।

अंदर क्या चलता है

  • बिल्ट-इन इंजन। Git ऐप के अंदर JGit 6.5.0 पर चलता है, जो Java की एक Git लाइब्रेरी है। लोकल टर्मिनल में git प्रोग्राम नहीं है, इसलिए उसका Git Panel भी यही इंजन इस्तेमाल करता है; SSH पर पैनल होस्ट का अपना git चलाता है।
  • ऑफ़लाइन चलता है। Status, staging, commit, diff, blame, history, stash, merge, branch की तुलना, rebase, cherry-pick, branch, tag और Local History के लिए कनेक्शन नहीं चाहिए। Clone, fetch, pull, push, publish और GitHub पर सब कुछ के लिए चाहिए।
  • नया प्रोजेक्ट अभी repository नहीं होता। उसे Start tracking this project (Projects → Git) या Initialize repository (टर्मिनल का Git Panel) से track करना शुरू करें। Clone करने पर आपको repository मिलती है। PocketCode का अपना .pocketcode/ फ़ोल्डर आपके changes से बाहर रखा जाता है।
  • दूसरे दरवाज़े। AI चैट आपके लिए Git चला सकती है (status, commit, log, diff, branch, push और pull; push के लिए आपकी पुष्टि माँगी जाती है) और Workflows में Git स्टेप है (status, commit, push, pull, checkout, log, diff)। दोनों यही इंजन इस्तेमाल करते हैं और अपने-अपने पेज पर समझाए गए हैं।
Ctrl+Shift+G ही अकेला Git शॉर्टकट है। GitHub, Local History, Compare with… और rebase का कोई शॉर्टकट नहीं है।

स्क्रीन मैप

Git से जुड़ी हर स्क्रीन और शीट, और वह कहाँ मिलती है। अगले सेक्शन उन्हें एक-एक करके समझाते हैं।

स्क्रीनवहाँ कैसे पहुँचेंआप क्या कर सकते हैं
Source ControlEditor → Git → Source Control, Ctrl+Shift+G, या स्टेटस बारBranch और ↑↓ गिनती देखें, फ़ाइलें stage और unstage करें, diff पढ़ें, commit message लिखकर commit करें, pull और push करें।
AI Commit MessageSource Control → AI messageआपकी फ़ाइलों के नामों से बने सुझाए गए message के चार स्टाइल में से एक चुनें। यह message बॉक्स भर देता है; commit नहीं करता।
Stage by hunkSource Control → Changes के नीचे किसी फ़ाइल पर बना आइकनचुनें कि फ़ाइल के कौन-से ब्लॉक commit में जाएँगे और कौन-से बाहर रहेंगे।
Merge BranchSource Control → Mergeकिसी लोकल branch को मौजूदा branch में merge करें। Conflict हो तो वही डायलॉग conflict वाली फ़ाइलें सूचीबद्ध करता है, हर एक को हल करने देता है और merge abort करने देता है।
StashSource Control → Stashबदलाव एक तरफ़ रखें (वैकल्पिक message के साथ), फिर उन्हें apply, pop या drop करें।
BlameSource Control → Blameदेखें कि खुली फ़ाइल के हर ब्लॉक को आख़िरी बार किसने बदला, और उस commit का diff खोलें।
File HistorySource Control → File Historyखुली फ़ाइल को छूने वाले पिछले 50 commit देखें और हर एक का diff खोलें।
Branch ComparisonSource Control → Compareदो लोकल branch की तुलना करें: आगे और पीछे के commit, और बदली हुई फ़ाइलें।
Diff viewerSource Control में किसी फ़ाइल को टैप करें; File History, Blame, Local History और Compare with… से भीजोड़ी और हटाई गई लाइनें लाइन नंबर और +N −M कुल के साथ पढ़ें; दोनों तरफ़ को Swap करें।
Conflict resolverMerge डायलॉग → conflict वाली फ़ाइल → Edit manually, या interactive rebase जो किसी conflict पर रुके → Resolveहर टकराने वाले ब्लॉक के लिए Ours, Theirs या Both चुनें।
GitHub PRs & IssuesEditor → Git → GitHub PRs & Issuesचार टैब: PRs, Issues, CI और Alerts। Pull request और issue फ़िल्टर करें और खोलें; बनाएँ, merge करें, बंद करें और कमेंट करें।
New pull requestPRs टैब → New pull request from …Title, description, base और head branch, draft और labels।
Interactive rebaseGitHub PRs & Issues → ⋮ मेन्यू → Interactive rebase…Rebase की योजना बनाएँ, पुष्टि करें और चलाएँ, एक backup के साथ जिसे आप restore कर सकते हैं।
Cherry-PickGitHub PRs & Issues → ⋮ मेन्यू → Cherry-pick…Hash टाइप करके दिए गए commit को मौजूदा branch पर लागू करें।
Local Historyकमांड पैलेट → Local History…खुली फ़ाइल के पहले सेव किए गए वर्शन देखें; किसी एक को कॉपी या restore करें।
Compare with…कमांड पैलेट → Compare with…खुली फ़ाइल का diff डिस्क, HEAD, क्लिपबोर्ड या किसी दूसरे खुले टैब से देखें।
Explorer के निशान और स्टेटस बारRepository में हमेशा दिखते हैंदेखें कि कौन-सी फ़ाइलें बदली हैं, और branch अपनी ↑↓ गिनती के साथ।
Git PanelTerminal → टूल्स पैनल → Git PanelStatus, Branches, Log और Actions टैब: लोकल में बिल्ट-इन इंजन, SSH पर होस्ट का git।
Commit Changesप्रोजेक्ट कार्ड → Commitफ़ाइलें stage और unstage करें, किसी फ़ाइल के बदलाव discard करें, amend करें, Commit या Commit & Push करें।
Git Settingsप्रोजेक्ट कार्ड → GitTracking शुरू करें, remote जोड़ें या बनाएँ, upload, download और remote की जाँच करें; branch बदलें और बनाएँ; History, Tags; commit पर आपका नाम।
Commit HistoryGit Settings → Historyपिछले 100 commit, Revert, Reset Soft, Reset Hard और Cherry-pick के साथ।
TagsGit Settings → TagsTag बनाएँ (message जोड़ें तो annotated), किसी को delete करें, tags push करें।
Publish to Remoteप्रोजेक्ट कार्ड → PublishGitHub, GitLab या Bitbucket पर खाली repository बनाएँ और उसे origin के रूप में जोड़ें। यह push नहीं करता।
CloneProjects पेज → CloneGitHub, GitLab या Bitbucket पर अपनी repositories में से एक चुनें और उसे प्रोजेक्ट के रूप में डाउनलोड करें।
Sign in with a codeSettings → Integrations → Connected Services → GitHubएक छोटे कोड से अपना GitHub अकाउंट कनेक्ट करें, जिसे आप ब्राउज़र में approve करते हैं।

Clone, publish और GitHub कनेक्ट करना

Git तभी किसी remote से बात कर सकता है जब PocketCode के पास आपका अकाउंट हो। Clone, publish, pull और push सब उसी अकाउंट से होते हैं जो आप Connected Services में कनेक्ट करते हैं; हर repository के लिए अलग से कुछ सेट नहीं करना पड़ता।

अपना GitHub अकाउंट कनेक्ट करें

  1. 1Settings → Integrations → Connected Services खोलें और GitHub चुनें। उसकी पंक्ति में Sign in with a code लिखा होता है।
  2. 2Get a code from GitHub टैप करें। PocketCode Your code दिखाता है।
  3. 3Open GitHub टैप करें, खुलने वाले पेज (github.com/login/device) पर कोड टाइप करें और approve करें।
  4. 4शीट खुली रखें। Waiting for you to approve it… अपने आप कनेक्टेड अकाउंट में बदल जाता है: टोकन वापस कॉपी करने की ज़रूरत नहीं।

आप क्या कर सकते हैं

  • कभी टोकन हाथ में लिए बिना कनेक्ट करें: PocketCode GitHub के device flow का इस्तेमाल करता है, जिसे client secret नहीं चाहिए और जो आपके approve करने तक हर कुछ सेकंड में जाँच करता है।
  • Approve करने से पहले देखें कि क्या माँगा जा रहा है: अनुमतियाँ repo, read:user और user:email। repo वही है जो private repositories तक पहुँचता है।
  • इसी एक अकाउंट का इस्तेमाल clone, publish, fetch, pull, push, GitHub PRs & Issues शीट और CI फ़ीड के लिए करें।

आप क्या नहीं कर सकते, और क्यों

  • Free पर दूसरा GitHub अकाउंट (या किसी भी provider का दूसरा अकाउंट) कनेक्ट करना: हर provider का पहला अकाउंट मुफ़्त है, उससे ज़्यादा Pro में हैं।Pro
  • कोड वाला sign-in तब इस्तेमाल करना जब GitHub ने उसे PocketCode के OAuth ऐप के लिए चालू न किया हो: तब शीट बताती है कि GitHub अभी इसे नहीं दे रहा।थर्ड पार्टी
कोड लगभग 15 मिनट तक चलता है; expire हो जाए तो नया माँगें। टोकन डिवाइस पर encrypted सेव होता है, हर PocketCode अकाउंट और हर provider अकाउंट के लिए अलग-अलग (प्राइवेसी और सुरक्षा देखें)। GitLab और Bitbucket उसी स्क्रीन से कनेक्ट होते हैं; Platform Services हर एक को समझाता है।

Repository clone करें

  1. 1Projects पेज पर Clone टैप करें और Clone from GitHub, Clone from GitLab या Clone from Bitbucket चुनें। जो सर्विस आपने कनेक्ट नहीं की उस पर Not connected — tap to connect लिखा होता है; उसका Connect बटन आपको Connected Services पर ले जाता है।
  2. 2अपनी repositories खोजें (GitHub पर Search repositories…) और किसी एक पर Clone टैप करें। बस एक tap काफ़ी है: और कुछ नहीं पूछा जाता, और clone हमेशा PocketCode के अपने प्रोजेक्ट स्टोरेज में सेव होता है, जिसे दूसरे ऐप नहीं देख सकते।
  3. 3Cloning Repository प्रगति दिखाता है। Cancel उसे रोकता है और अधूरी कॉपी हटा देता है।
  4. 4Repository एक नए प्रोजेक्ट के रूप में दिखती है। अगर उस नाम का प्रोजेक्ट पहले से है, तो नए का नाम name (2), name (3)… होता है।

आप क्या कर सकते हैं

  • Private और public दोनों तरह की repositories clone करें, GitHub, GitLab या Bitbucket से, बशर्ते वह अकाउंट कनेक्टेड हो।
  • पूरी history पाएँ: clone shallow नहीं होता।

आप क्या नहीं कर सकते, और क्यों

  • URL से clone करना, या ऐसी repository clone करना जो आपके अकाउंट की सूची में नहीं है।अभी नहीं
  • दूसरे होस्ट से clone करना (GitHub Enterprise, self-hosted GitLab, Gitea, Codeberg…): सिर्फ़ github.com, gitlab.com और bitbucket.org समर्थित हैं।जानबूझकर
  • कनेक्टेड अकाउंट के बिना clone करना, public repository भी नहीं।नेटवर्क ज़रूरी
  • Submodule या Git LFS कंटेंट लाना: submodule clone नहीं होते, और LFS फ़ाइलें अपने छोटे टेक्स्ट pointer के रूप में ही रहती हैं।अभी नहीं
  • असली प्रगति देखना: बार चरणों में बढ़ता है, bytes के हिसाब से नहीं।अभी नहीं

लोकल प्रोजेक्ट publish करें

Publish उस प्रोजेक्ट के लिए है जो अभी सिर्फ़ आपके फ़ोन पर है।

  1. 1प्रोजेक्ट का कार्ड खोलें और Publish टैप करें।
  2. 2कोई कनेक्टेड सर्विस चुनें, फिर Repository name भरें (शुरू में प्रोजेक्ट का नाम होता है) और Public या Private चुनें। यह शुरू में Public होता है, इसलिए कोड सबके लिए नहीं है तो इसे Private कर दें।
  3. 3Create & Link टैप करें।

आप क्या कर सकते हैं

  • GitHub, GitLab या Bitbucket पर publish करें।
  • वही नतीजा Git → Create on GitHub and connect से पाएँ, या पहले से मौजूद repository को Link a repository I already have से जोड़ें (प्रोजेक्ट कार्ड पर Git देखें)।

आप क्या नहीं कर सकते, और क्यों

  • कोई सर्विस कनेक्ट न हो तब publish करना: शीट कहती है Connect GitHub, GitLab or Bitbucket in Services first, और आप वहाँ से कनेक्ट नहीं कर सकते।नेटवर्क ज़रूरी
  • किसी दूसरे होस्ट पर publish करना।जानबूझकर
Publish सर्विस पर खाली repository बनाता है और उसे origin के रूप में जोड़ता है। यह commit या push नहीं करता। आपका काम तब ऊपर जाता है जब आप commit करके Upload changes (या Push) इस्तेमाल करते हैं।

एडिटर में Source Control

Source Control एडिटर का Git पैनल है, खुले हुए प्रोजेक्ट के लिए। यह branch और आपके बदलाव दिखाता है और रोज़ का चक्र पूरा करता है: stage, commit, pull, push। Branch का काम, stash, blame और history ऊपर लगे chips हैं।

Commit, push, pull, merge और stash के अंत में एडिटर में एक छोटा message आता है: क्या हुआ (जैसे Committed: …, Pushed, Pulled, Merged: …, Stash saved: …) या क्या असफल रहा (Push failed: …, कारण कोलन के बाद)। हर एक के बाद सूचियाँ और ↑↓ काउंटर ताज़ा हो जाते हैं।

बदलाव देखें और stage करें

सबटाइटल कुछ ऐसा दिखता है: main ↑2 ↓1 · Changes · 3: branch, वे commit जो आपने push नहीं किए (↑) और pull नहीं किए (↓), और बदलावों की संख्या। फ़ाइलें Staged Changes, Changes और Untracked में बँटी होती हैं।

आप क्या कर सकते हैं

  • किसी फ़ाइल का diff पढ़ने के लिए उसे टैप करें: जोड़ी और हटाई गई लाइनें रंग में, लाइन नंबर और +N −M कुल के साथ। Swap दोनों तरफ़ की अदला-बदली करता है।
  • फ़ाइल को उसकी पंक्ति पर Stage / Unstage से ले जाएँ (नई फ़ाइल के लिए Track & Stage), या पूरे समूह को Stage All / Unstage All से।
  • हेडर में Refresh, Pull और Push आइकन इस्तेमाल करें। Pull और Push बिना पूछे तुरंत चलते हैं, और हर एक एक message के साथ ख़त्म होता है (Pushed या Push failed: …)।
  • जब commit करने को कुछ न हो तब No changes detected (Working tree clean.) दिखता है।

आप क्या नहीं कर सकते, और क्यों

  • यहीं repository शुरू करना: जो प्रोजेक्ट अभी repository नहीं है उसमें पैनल सिर्फ़ No changes detected कहता है। Tracking Projects → Git से या टर्मिनल के Git Panel से शुरू करें।अभी नहीं
  • Fetch करना, branch बनाना या बदलना, amend करना, किसी फ़ाइल के बदलाव discard करना, tags या remotes एडिट करना: एडिटर में इनके लिए बटन नहीं है। Projects और टर्मिनल इनमें से ज़्यादातर कर देते हैं (नीचे देखें)।अभी नहीं
  • ↑↓ काउंटर पर भरोसा करना कि वे हमेशा ताज़ा हैं: वे सिर्फ़ pull या push के बाद बदलते हैं, क्योंकि एडिटर fetch नहीं कर सकता।अभी नहीं

Stage by hunk

फ़ाइल का सिर्फ़ एक हिस्सा commit करें। Changes के नीचे किसी फ़ाइल पर Stage by hunk टैप करें।

आप क्या कर सकते हैं

  • बदलाव का हर ब्लॉक Hunk @ line N के रूप में अपनी हटाई और जोड़ी गई लाइनों के साथ दिखता है।
  • हर hunk शुरू में Stage होता है; जिन्हें छोड़ना है उन पर Skip टैप करें। N of M accepted उन्हें गिनता है।
  • सारे hunk चुने हों तो नीचे का बटन Stage all कहता है, वरना Stage N। यह सिर्फ़ उन्हीं hunk को अगले commit में जोड़ता है और डिस्क पर आपकी फ़ाइल को नहीं छेड़ता।

आप क्या नहीं कर सकते, और क्यों

  • किसी hunk को अलग-अलग लाइनों में बाँटना।अभी नहीं
  • नई या पहले से staged फ़ाइल को hunk से stage करना: आइकन सिर्फ़ Changes के नीचे दिखता है।अभी नहीं
फ़ाइल की staged कॉपी आख़िरी commit और आपके चुने हुए hunk से दोबारा बनाई जाती है, इसलिए उस फ़ाइल के लिए पहले से staged कुछ भी उससे बदल जाता है।

Commit और सुझाया गया message

Commit message… में message टाइप करें और Commit टैप करें। बटन तभी चालू होता है जब message हो और Staged Changes के नीचे कम से कम एक फ़ाइल हो।

आप क्या कर सकते हैं

  • विचारों के लिए AI message टैप करें। कोई स्टाइल चुनें (Conventional, Descriptive, Imperative या Emoji), कोई सुझाव टैप करें और Use this message: यह बॉक्स भर देता है, और Commit आपको फिर भी टैप करना है।
  • अपने नाम से commit करें: एडिटर के commit में वही नाम और ईमेल जाता है जो repository में सेव है, इसलिए पहले Your name on commits सेट करें (Projects → Git)।

आप क्या नहीं कर सकते, और क्यों

  • एडिटर से आख़िरी commit को amend करना: Projects → Commit में Amend last commit इस्तेमाल करें।अभी नहीं
AI message AI नहीं है। यह एक लोकल, नियम-आधारित सुझाव है जो आपकी बदली हुई फ़ाइलों (staged, unstaged और नई) के नामों और बदलाव के प्रकार से बनता है। यह आपका diff नहीं पढ़ता, कोई model नहीं बुलाता और कोई key इस्तेमाल नहीं करता।

Branch merge करें

  1. 1Merge टैप करें। Merge Branch डायलॉग Current: main दिखाता है और आपकी दूसरी लोकल branch सूचीबद्ध करता है; उन्हें Search branches... से छाँटें।
  2. 2कोई branch चुनें और Merge into main टैप करें।
  3. 3एक message बताता है कि क्या हुआ: Fast-forward merge: …, Merged: …, Already up to date या conflict होने पर Merge has conflicts in: …।
  4. 4Conflict के बाद डायलॉग Merge conflicts detected बन जाता है, जिसमें N file(s) need resolution लिखा होता है। किसी फ़ाइल को टैप करें और Accept current, Accept incoming या Accept both चुनें (हर एक उस फ़ाइल के सभी टकराने वाले ब्लॉकों पर लागू होता है और फ़ाइल को stage कर देता है), या ब्लॉक-दर-ब्लॉक चुनने के लिए Edit manually। Conflicts देखें।
  5. 5Abort Merge merge को छोड़ देता है: यह पूछता है Abort merge? (This will discard the in-progress merge and its conflict resolutions. This cannot be undone.) और Abort पुष्टि करता है। आख़िरी फ़ाइल हल होने पर डायलॉग branch सूची पर लौट आता है, और आप Source Control से commit करते हैं।

आप क्या नहीं कर सकते, और क्यों

  • Remote branch merge करना, या fast-forward-only, no-fast-forward या squash चुनना। Remote का काम लाने के लिए Pull इस्तेमाल करें।अभी नहीं

दो branch की तुलना करें

  1. 1Compare (Branch Comparison) टैप करें।
  2. 2Base और Compare चुनें, फिर Compare branches टैप करें।

आप क्या कर सकते हैं

  • Ahead और Behind, Files, commit (सूची 50 पर रुकती है, पर Ahead असली गिनती है) और बदले हुए paths पढ़ें। एक जैसी branch पर No differences between these branches लिखा आता है।

आप क्या नहीं कर सकते, और क्यों

  • तुलना से किसी फ़ाइल का diff खोलना, या remote branch की तुलना करना: सिर्फ़ लोकल branch सूचीबद्ध होती हैं।अभी नहीं

Stash

Stash chip बताता है कि आपके पास कितनी entries हैं। बदलाव एक तरफ़ रखने के लिए Stash और फिर Stash changes टैप करें; किसी entry को टैप करके उसे Apply, Pop या Drop करें। Drop पहले पूछता है: Drop stash? — This stash entry will be deleted permanently. This cannot be undone.

आप क्या कर सकते हैं

  • पुष्टि से पहले Optional stash message टाइप करें: वह entry के साथ सेव होता है और सूची में उसका शीर्षक बनकर दिखता है। इसके बिना Git अपना WIP on … शीर्षक लिखता है।
  • नतीजा एक message में पढ़ें: Stash saved: …, Stash applied and removed (Pop), Stash applied (kept) (Apply) या Stash removed (Drop)।

आप क्या नहीं कर सकते, और क्यों

  • नई (untracked) फ़ाइलें stash करना: सिर्फ़ उन फ़ाइलों के बदलाव अलग रखे जाते हैं जिन्हें Git पहले से track करता है।अभी नहीं
  • किसी ख़ास entry को pop करना: Pop हमेशा सबसे नई entry को apply करके हटाता है, चाहे आपने कोई भी पंक्ति खोली हो।अभी नहीं
  • Apply किया गया stash टकराए तो conflict हल करना: इसके लिए कोई resolver नहीं है।अभी नहीं
किसी एक ख़ास entry को restore करने के लिए उस पर Apply और फिर Drop इस्तेमाल करें: ये दोनों आपकी चुनी हुई पंक्ति का सम्मान करते हैं।

Blame

आप क्या कर सकते हैं

  • फ़ाइल खुली होने पर Blame टैप करें: एक ही commit की लगातार लाइनें साथ में समूहित होती हैं, author, Line N (या रेंज) और 7 अक्षरों के hash के साथ।
  • किसी ब्लॉक को टैप करें, फिर View commit, ताकि उस फ़ाइल के लिए उस commit का diff पढ़ सकें।
  • स्टेटस बार देखें: वह branch के नाम के पास, आपके कर्सर वाली लाइन के लिए author · कितनी देर पहले दिखा सकता है। किसी भी एक को टैप करके Source Control खोलें। जो लाइनें आपने commit नहीं कीं उन पर Not Committed Yet दिखता है।

आप क्या नहीं कर सकते, और क्यों

  • दूसरी branch या commit पर blame करना, या स्टेटस बार का blame छिपाना: इसकी कोई सेटिंग नहीं है।अभी नहीं
  • वह सापेक्ष समय अपनी भाषा में पढ़ना: just now, 5 min ago, yesterday… हमेशा अंग्रेज़ी में रहते हैं।अभी नहीं

File history

आप क्या कर सकते हैं

  • फ़ाइल खुली होने पर File History टैप करें, उसे छूने वाले पिछले 50 commit के लिए (message, hash, author, कितना पुराना), और View diff से देखें कि हर एक ने उस फ़ाइल में क्या बदला।
  • जिस फ़ाइल को कभी छुआ नहीं गया उस पर No commit history for this file लिखा आता है।

आप क्या नहीं कर सकते, और क्यों

  • 50 से ज़्यादा commit देखना।जानबूझकर
  • फ़ाइल को पुराने वर्शन पर restore करना, या पंक्ति से revert करना: Revert Projects → Git → History में है, और Local History बिना सेव किए काम को संभालता है।अभी नहीं

Explorer और स्टेटस बार में निशान

आप क्या कर सकते हैं

  • Repository में फ़ाइल explorer हर बदली फ़ाइल पर निशान लगाता है (modified, added, untracked, deleted या renamed), बदलाव वाले फ़ोल्डर पर निशान लगाता है, और नीचे branch, ↑↓ और बदली फ़ाइलों की संख्या वाला footer दिखाता है। वह वही status पढ़ता है जो Source Control पढ़ता है।
  • स्टेटस बार में branch का नाम Source Control खोलता है।
  • Git repository के बाहर कोई निशान नहीं होता और कोई footer नहीं होता।

आप क्या नहीं कर सकते, और क्यों

—

प्रोजेक्ट कार्ड पर Git

कई Git क्रियाएँ एडिटर में नहीं बल्कि Projects पेज के प्रोजेक्ट कार्ड पर हैं: amend, branch बदलना और बनाना, tags, revert, reset, remote जोड़ना और commit पर आपका नाम। कार्ड के बारे में Projects पेज पर बताया गया है।

कार्ड आपको क्या बताता है

प्रोजेक्ट के नाम के पास कार्ड एक टैग तभी दिखाता है जब कुछ करने को हो।

टैगमतलब
PullRemote पर ऐसे commit हैं जो आपके पास नहीं हैं।
Pushआपके पास ऐसे commit हैं जो remote पर नहीं हैं, या यह branch कभी push नहीं हुई।
Changesआपके पास uncommitted बदलाव हैं (remote वाले प्रोजेक्ट के लिए दिखता है)।
Conflictदोनों तरफ़ नए commit हैं, इसलिए पहले download करना होगा। इसका मतलब merge conflicts नहीं है।
खोलने पर, प्रोजेक्ट में remote हो तो कार्ड Pull, Push और Fetch chips दिखाता है, प्रोजेक्ट repository हो तो Commit बटन (बदलाव बाक़ी हों तो एक बिंदु के साथ) और Git और Publish chips। टैग तब ताज़ा होते हैं जब सूची लोड होती है और जब आप एडिटर में फ़ाइल सेव करते हैं। एक समय में सिर्फ़ एक टैग दिखता है और Changes पहले आता है: uncommitted बदलाव हों तो सिर्फ़ Changes दिखता है, भले ही pull या push के लिए commit भी हों (सिर्फ़ untracked फ़ाइलें गिनती में नहीं आतीं)। टैग remote की आख़िरी ज्ञात स्थिति से तुलना करते हैं, इसलिए Pull तभी दिखता है जब वह स्थिति अपडेट हो चुकी हो (Fetch chip, Check the remote, कोई pull या push)।

Commit Changes

कार्ड पर Commit टैप करें। शीट का शीर्षक Commit Changes है और उसमें branch का नाम होता है।

आप क्या कर सकते हैं

  • हर फ़ाइल के चेकबॉक्स से फ़ाइलों को Staged (n) और Unstaged & Untracked (n) के बीच ले जाएँ, या Stage All / Unstage All इस्तेमाल करें।
  • Commit message टाइप करें और Commit टैप करें। इसके लिए message और कम से कम एक staged फ़ाइल चाहिए, और यह आपके लिए कुछ stage नहीं करता: कुछ भी staged न हो तो कहता है No staged files. Use 'Stage All' to add changes.
  • Amend last commit पर टिक करें (Modify the previous commit with the current changes): बटन Amend Commit बन जाता है।
  • एक बार में commit और upload के लिए Commit & Push टैप करें (सिर्फ़ तब जब प्रोजेक्ट में remote हो)।
  • Git जिस फ़ाइल को पहले से track करता है उसके uncommitted बदलाव उसकी पंक्ति पर Discard changes आइकन से हटाएँ। यह staged या नई फ़ाइलों पर नहीं दिखता।
  • Author: repository में सेव नाम और ईमेल; वे न हों तो आपके PocketCode अकाउंट के।

आप क्या नहीं कर सकते, और क्यों

—

Git Settings

कार्ड पर Git टैप करें। एक स्टेटस कार्ड बताता है कि प्रोजेक्ट कहाँ खड़ा है, और क्रियाएँ उसके साथ बदलती हैं।

कार्ड कहता हैआप क्या कर सकते हैं
Not tracked yetStart tracking this project एक लोकल repository बनाता है, ऐसी .gitignore के साथ जो .pocketcode/ को बाहर रखती है। Link a repository I already have उसे बनाता है और origin को आपके दिए URL पर सेट करता है।
Saved on this device onlyCreate on GitHub and connect (या GitLab, Bitbucket) एक खाली private या public repository बनाता है और उसे जोड़ता है; इसके लिए पहले अकाउंट चाहिए (Connect a GitHub account first, in Settings)। Link a repository I already have origin को एक URL पर सेट करता है।
ConnectedUpload changes (push), Download changes (pull) और Check the remote (fetch), साथ में Branch, History और Tags पंक्तियाँ।

आप क्या कर सकते हैं

  • Branch: आपकी लोकल branch। किसी एक को टैप करके उस पर जाएँ, या Create new branch इस्तेमाल करें: Switch to this branch (डिफ़ॉल्ट रूप से चुना हुआ) तुरंत उस पर ले जाता है।
  • Your name on commits: repository जो user.name और user.email सेव करती है उन्हें सेट करें। वे शुरू में repository, आपकी कनेक्टेड सर्विस या आपके अकाउंट से भरे होते हैं।

आप क्या नहीं कर सकते, और क्यों

  • ऐसी repository में जिसमें अभी remote नहीं है, branch बदलना या History और Tags देखना: वे पंक्तियाँ तभी दिखती हैं जब origin हो। टर्मिनल का Git Panel लोकल में branch बदल सकता है।अभी नहीं
  • Branch delete या rename करना, या remote branch सूचीबद्ध करना: यहाँ सिर्फ़ लोकल branch हैं।अभी नहीं

Commit History, Revert और Reset

History (Commit History) पिछले 100 commit सूचीबद्ध करता है: message, 7 अक्षरों का hash, author और तारीख़। किसी commit को टैप करने पर चार बटन दिखते हैं।

बटनक्या करता है
Revertएक नया commit बनाता है जो उस commit को पलट देता है। History दोबारा नहीं लिखी जाती।
Reset SoftBranch को उस commit पर वापस ले जाता है और उसके बाद का सब कुछ staged बदलावों के रूप में रखता है।
Reset HardBranch को वापस ले जाता है और उसके बाद का सब कुछ फेंक देता है, uncommitted बदलाव भी।
Cherry-pickउस commit को मौजूदा branch के ऊपर लागू करता है, hash टाइप किए बिना।

आप क्या नहीं कर सकते, और क्यों

  • Mixed reset करना, या पुराने commit से एक फ़ाइल restore करना: सिर्फ़ Reset Soft और Reset Hard हैं।अभी नहीं
Reset Hard टैप करते ही चल जाता है, बिना पुष्टि के, और uncommitted काम को फेंक देता है। पहले commit या stash करें।

Tags

Tags Git Settings की एक पंक्ति है और, Branch और History की तरह, प्रोजेक्ट में remote होने पर दिखती है।

आप क्या कर सकते हैं

  • Create Tag: v1.0.0 जैसा नाम और एक वैकल्पिक message। Message हो तो tag annotated होता है।
  • किसी tag को उसके आइकन से delete करें।
  • Push Tags उन्हें upload करता है (सिर्फ़ remote के साथ)।

आप क्या नहीं कर सकते, और क्यों

—

टर्मिनल में Git Panel

टर्मिनल का अपना छोटा Git पैनल है। जब आप पहले से shell में हों तो repository शुरू करने या commit करने का यह सबसे तेज़ तरीका है।

Git Panel

टर्मिनल का टूल्स पैनल (या उसका मेन्यू) खोलें और Git Panel चुनें। इसमें चार टैब हैं: Status, Branches, Log और Actions। लोकल shell में यह उस repository पर काम करता है जो आपके मौजूदा फ़ोल्डर से ऊपर की ओर चलकर मिलती है, आपके अपने workspace से बाहर गए बिना, बिल्ट-इन इंजन से। SSH पर यह रिमोट होस्ट पर git चलाता है।

आप क्या कर सकते हैं

  • Status: Staged, Modified और Untracked फ़ाइलों की गिनती और सूचियाँ, या Working tree is clean।
  • Branches: किसी branch पर जाने के लिए उसे टैप करें, या New branch।
  • Log: पिछले 30 commit।
  • Actions: Commit changes (message पूछता है और पैनल बंद कर देता है), Pull, Push, Stash, Stash Pop, Fetch, Add All और Reset (सब कुछ index से बाहर निकाल देता है)।
  • Repository न हो तो No Git repository here Initialize repository का विकल्प देता है।

आप क्या नहीं कर सकते, और क्यों

  • लोकल shell में Diff क्रिया इस्तेमाल करना: वह सिर्फ़ SSH पर है।जानबूझकर
  • Message के साथ stash, किसी एक फ़ाइल को discard करना, merge, rebase, tag या blame: इस पैनल में नहीं। यह खुद यह कहता है: Local panel backed by JGit; for full git use the editor's Source Control।अभी नहीं
  • कनेक्टेड अकाउंट के बिना push या pull करना: पैनल वजह के साथ Git: … दिखाता है और sign-in नहीं खोलता।नेटवर्क ज़रूरी

Conflicts

Conflict का मतलब है कि दो बदलावों ने एक ही लाइनों को छुआ। PocketCode में उसे हल करने के दो guided तरीक़े हैं: merge के लिए Source Control का Merge डायलॉग, और interactive rebase का ब्लॉक-दर-ब्लॉक resolver। Pull, apply किए गए stash या cherry-pick में conflict हो तो conflict markers आपको ख़ुद संभालने होते हैं।

Merge के बाद, फ़ाइल-दर-फ़ाइल

  1. 1Source Control से कोई branch merge करें। Conflict हो तो एक message कहता है Merge has conflicts in: … और Merge डायलॉग Merge conflicts detected, N file(s) need resolution और फ़ाइलों की सूची दिखाता है।
  2. 2किसी फ़ाइल को टैप करके उसके विकल्प खोलें: Accept current, Accept incoming, Accept both या Edit manually।
  3. 3पहले तीन पूरी फ़ाइल को दोबारा लिखते हैं: हर टकराने वाला ब्लॉक वही पक्ष ले लेता है (या दोनों, पहले current), markers हट जाते हैं और फ़ाइल stage हो जाती है। एक message पुष्टि करता है: Conflict resolved: …।
  4. 4Edit manually नीचे बताई गई ब्लॉक-दर-ब्लॉक शीट खोलता है: हर ब्लॉक के लिए Ours, Theirs या Both चुनें, फिर Apply टैप करें।
  5. 5सूची में कोई फ़ाइल न बचे तो डायलॉग branch चुनने वाली स्क्रीन पर लौट आता है। हल की गई फ़ाइलें staged हैं: commit message लिखें और Commit टैप करें।

आप क्या कर सकते हैं

  • फ़ाइलों को एक-एक करके हल करें और गिनती घटते देखें।
  • Abort Merge से छोड़ दें: यह Abort merge? पूछता है और Abort पुष्टि करता है; message कहता है Merge aborted।

आप क्या नहीं कर सकते, और क्यों

—

Rebase के दौरान, ब्लॉक-दर-ब्लॉक

  1. 1जब interactive rebase किसी conflict पर रुकता है, तो हर टकराने वाली फ़ाइल पर Resolve दिखता है।
  2. 2हर ब्लॉक के लिए Ours (Current (ours)), Theirs (Incoming (theirs)) या Both चुनें। हेडर आपकी प्रगति गिनता है: N / M resolved।
  3. 3Apply टैप करें। फ़ाइल सेव होती है, और कोई conflict marker न बचे तो staged हो जाती है। जो ब्लॉक आपने नहीं चुने उनके markers बने रहते हैं।
  4. 4Rebase में लौटकर Continue टैप करें (या Skip this commit, या Abort)।

आप क्या नहीं कर सकते, और क्यों

  • किसी ब्लॉक का common ancestor वाला वर्शन चुनना, या शीट के अंदर हाथ से एडिट करना।अभी नहीं
इस शीट के शब्द (Conflict N, Current (ours), Incoming (theirs), Ours, Theirs, Both) हमेशा अंग्रेज़ी में होते हैं, ऐप की भाषा कुछ भी हो।

Pull, stash या cherry-pick से आए conflicts

Projects में, conflict वाला pull कहता है: The same lines changed on both sides. Open the affected files, keep the version you want, and try again. यहाँ भी यही रास्ता है।

आप क्या नहीं कर सकते, और क्यों

  • Pull, apply किए गए stash या cherry-pick से आए conflict के लिए guided resolver इस्तेमाल करना: सिर्फ़ Merge डायलॉग और interactive rebase के पास है।अभी नहीं
इनके लिए कोई guided resolver नहीं है। Conflict वाला pull या apply किया गया stash आपकी फ़ाइलों में conflict markers (<<<<<<<, =======, >>>>>>>) छोड़ देता है: उन्हें खोलें और जो वर्शन चाहिए उसे रखें।

Interactive rebase और cherry-pick

Interactive rebase और cherry-pick Source Control से नहीं खुलते: वे GitHub शीट में हैं। GitHub PRs & Issues खोलें और उसका ⋮ मेन्यू → Interactive rebase… या Cherry-pick… इस्तेमाल करें।

⋮ मेन्यू तभी काम करता है जब प्रोजेक्ट का origin remote github.com पर हो। जिस प्रोजेक्ट में remote नहीं है, या जिसका origin GitLab, Bitbucket या किसी दूसरे होस्ट पर है, वह rebase या cherry-pick नहीं खोल सकता। Projects → Git → History आपके टैप किए किसी भी commit पर Cherry-pick देता है, hash टाइप किए बिना, और नतीजा एक message में बताता है।

Interactive rebase

  1. 1Interactive rebase… खोलें। शीट planning में शुरू होती है: अभी आपकी repository को कुछ नहीं छूता।
  2. 2Onto branch चुनें। यह शुरू में main या master होता है, अगर कोई हो और वह आपकी मौजूदा branch न हो।
  3. 3हर commit के लिए Pick, Reword, Squash, Fixup या Drop चुनें, और commit message बदलने के लिए Edit message इस्तेमाल करें।
  4. 4अगर आपके पास uncommitted बदलाव हैं तो शीट चेतावनी देती है; उन्हें एक तरफ़ रखने के लिए Stash my changes before starting चालू करें। rebase पूरा होने के बाद वे stash में ही रहते हैं (उन्हें Stash से apply करें); abort करने पर वे अपने-आप वापस आ जाते हैं।
  5. 5Start rebase टैप करें। एक पुष्टि स्क्रीन योजना सूचीबद्ध करती है (जैसे दो Pick और एक Squash) और बताती है कि branch से कितने commit हटाए जाएँगे; वे backup में बने रहते हैं।
  6. 6अगर कोई commit टकराता है तो rebase रुक जाता है: Stopped at … · step N of M। हर फ़ाइल पर Resolve इस्तेमाल करें (Conflicts देखें), फिर Continue; या Skip this commit, या Abort। हर एक में आपसे पुष्टि माँगी जाती है।
  7. 7ख़त्म होने पर Rebase complete (या abort के बाद Rebase undone) दिखता है। Restore backup branch को वैसा ही कर देता है जैसी वह rebase से पहले थी; Another rebase फिर से शुरू करता है।

आप क्या कर सकते हैं

  • कुछ भी बदलने से पहले PocketCode आपकी branch का मौजूदा सिरा refs/pocketcode/rebase-backup/<branch> के रूप में सेव कर लेता है।
  • Uncommitted बदलावों के साथ rebase कभी शुरू नहीं होता, जब तक आप उन्हें पहले stash न कर दें।
  • Abort सब कुछ पलट देता है (branch, index और working tree) और आपका अपना stash फिर से apply कर देता है।
  • योजना .git के अंदर सेव होती है, इसलिए बीच में ऐप बंद हो गया हो तब भी Continue और Skip this commit काम करते हैं।
  • Restore backup branch को सेव किए सिरे पर वापस ले जाता है, पर सिर्फ़ साफ़ working tree के साथ; rebase के बाद बने commit फिर सिर्फ़ Git reflog में बचे रहते हैं।

आप क्या नहीं कर सकते, और क्यों

  • Commit का क्रम बदलना: शीट इसकी अनुमति नहीं देती।जानबूझकर
  • Edit क्रिया इस्तेमाल करना: Git amend करने के बजाय नया commit बना देता, इसलिए वह नहीं दी जाती।जानबूझकर
  • जो पहला commit आप रखते हैं उस पर Squash या Fixup से शुरू करना, या हर commit drop कर देना: शीट दोनों को मना करती है।जानबूझकर
  • Remote branch पर rebase करना, या उस branch के अलावा किसी और branch को rebase करना जिस पर आप हैं: सिर्फ़ लोकल branch दी जाती हैं, और detached HEAD मना कर दिया जाता है।अभी नहीं
  • इसे Source Control से, बिना remote वाले प्रोजेक्ट से, या ऐसे प्रोजेक्ट से खोलना जिसका origin github.com पर नहीं है।अभी नहीं

Cherry-pick

  1. 1Cherry-pick… खोलें, Commit hash में commit hash टाइप करें और Add टैप करें। जितने चाहें जोड़ें; वे chips के रूप में दिखते हैं।
  2. 2Cherry-Pick (या Cherry-pick N commits) टैप करें और पुष्टि करें: Apply N commits onto the current branch, in order?
  3. 3शीट Cherry-picked … successfully या Cherry-pick failed: … बताती है।

आप क्या नहीं कर सकते, और क्यों

  • सूची से commit चुनना: आपको hash पता होना चाहिए और टाइप करना होगा, और एकमात्र जाँच यह है कि उसमें space न हो।अभी नहीं
  • कई hash जोड़ने पर क्रम पर भरोसा करना: वे साथ में शुरू होते हैं, इसलिए पुष्टि वाला “in order” पक्का नहीं है। क्रम मायने रखता हो तो एक बार में एक cherry-pick करें।अभी नहीं
  • New commit: … पर भरोसा करना: यह आपका टाइप किया hash दिखाता है, बने हुए commit का id नहीं।अभी नहीं
  • Conflict हल करना: टकराने वाला cherry-pick बस failure बताता है, कोई resolver नहीं है।अभी नहीं

GitHub: pull request, issue, CI और alerts

GitHub PRs & Issues एडिटर में खुले प्रोजेक्ट की GitHub repository से बात करता है। यह प्रोजेक्ट का origin remote पढ़ता है और वह अकाउंट इस्तेमाल करता है जो आपने Connected Services में कनेक्ट किया; अनुरोध सीधे आपके फ़ोन से api.github.com तक जाते हैं। हेडर में owner/repo, repository को ब्राउज़र में खोलने का आइकन और ⋮ मेन्यू दिखता है।

यह सिर्फ़ github.com की repositories के साथ काम करता है: GitLab merge request, Bitbucket pull request और GitHub Enterprise समर्थित नहीं हैं। हर सूची 300 आइटम पर रुक जाती है।

शुरू करना

आपको ऐसा प्रोजेक्ट चाहिए जिसका origin github.com पर हो और एक कनेक्टेड GitHub अकाउंट। कोई प्रोजेक्ट खुला न हो तो शीट कहती है Project path not set — open from editor; बाक़ी स्थितियाँ Troubleshooting में हैं। इसमें चार टैब हैं।

टैबक्या दिखाता है
PRs · NRepository के pull request, सबसे हाल में अपडेट हुए पहले।
Issues · Nउसके issue (pull request इसमें शामिल नहीं हैं)।
CIआपके खोले हुए pull request की checks।
Alerts · Nआपकी GitHub notifications; N बिना पढ़े की गिनती है, जो टैब पहली बार खोलने पर लोड होती है।
Branch मेन्यू (Base branch, Head branch और rebase शीट में Onto branch) शीट खुलते ही आपकी लोकल branch से भर जाते हैं।

Pull requests

आप क्या कर सकते हैं

  • Open, Mine, Review requested, Closed या All से फ़िल्टर करें। Mine और Review requested आपके फ़ोन पर, आपके GitHub login के आधार पर फ़िल्टर होते हैं।
  • सूची पढ़ें: स्थिति (Open, Draft, Merged, Closed), नंबर, title, author, कितना पुराना, माँगे गए reviews और labels।
  • किसी एक को खोलें: Summary (description, head → base, बदली फ़ाइलें, +N / −M, commit, assignees, labels, Checks और Reviews अपनी स्थिति के साथ), Files · N (+/− के साथ paths) और Comments · N।
  • देखें कि वह merge क्यों नहीं हो सकता: एक बैनर Can't merge: … पढ़ता है और उसके बाद लागू होने वाली वजहें (merge conflicts, a failing check, changes requested)।
  • Write a comment… एक conversation comment पोस्ट करता है। Close PR pull request को बंद करता है।
  • Merge में Merge commit, Squash and merge और Rebase and merge मिलते हैं। ऐप वही head commit भेजता है जो उसने आपको दिखाया था, इसलिए अगर इस बीच किसी ने push किया तो GitHub वे commit merge करने के बजाय मना कर देता है जो आपने देखे नहीं।
  • New pull request from … (मौजूदा branch चाहिए): title, description, Base branch और Head branch, Create as draft और labels, फिर Create pull request।

आप क्या नहीं कर सकते, और क्यों

  • Review submit करना (approve या changes request), किसी लाइन पर comment करना, या pull request का diff पढ़ना: reviews दिखते हैं पर सिर्फ़ पढ़ने के लिए, और Files paths सूचीबद्ध करता है पर उन्हें खोलता नहीं।अभी नहीं
  • Pull request बनाते समय reviewers चुनना।अभी नहीं
  • Pull request दोबारा खोलना, उसका title या description एडिट करना, auto-merge चालू करना या उसकी branch अपडेट करना।अभी नहीं
  • GitLab merge request, Bitbucket pull request या GitHub Enterprise इस्तेमाल करना: सिर्फ़ github.com की repositories पढ़ी जाती हैं।जानबूझकर

Issues

आप क्या कर सकते हैं

  • Open, My issues (आपको assign किए गए), Closed या All से फ़िल्टर करें।
  • सूची पढ़ें (स्थिति, नंबर, comments की गिनती, author, labels) और किसी एक को खोलकर उसका body, तारीख़ें, assignees, labels, milestone, comments और comment बॉक्स देखें।
  • Close issue उसे completed के रूप में बंद करता है। Create issue में title, description और labels लगते हैं।

आप क्या नहीं कर सकते, और क्यों

  • Issue बनाते समय milestone या assignees चुनना, किसी को दोबारा खोलना, एडिट करना, बाद में label लगाना या खोजना।अभी नहीं

CI

आप क्या कर सकते हैं

  • कोई pull request खोलें, फिर CI टैब: उसके head commit की checks (GitHub Actions runs, दूसरे ऐप्स की checks और classic statuses) एक सारांश के नीचे, जैसे All checks passed, Some checks failed या Checks in progress।

आप क्या नहीं कर सकते, और क्यों

  • पहले pull request खोले बिना CI देखना (टैब कहता है Select a PR to see its CI status), logs पढ़ना, या कोई run दोबारा चलाना या रद्द करना।अभी नहीं
अलग से, जब आप कोई प्रोजेक्ट चुनते हैं तो PocketCode उसके origin का नवीनतम GitHub Actions, GitLab CI या Bitbucket Pipelines run एक बार पढ़कर Backend Manager की status फ़ीड में रख देता है। इसके लिए वह सर्विस कनेक्टेड होनी चाहिए और यह अपने आप रीफ़्रेश नहीं होता।

Alerts

आप क्या कर सकते हैं

  • Alerts खोलें: आपकी वे GitHub notifications जिनमें आप शामिल हैं। हर पंक्ति में उसके प्रकार का आइकन (review requested, approved, changes requested, merge, comment, assigned, mention, CI passed या failed, release), title और repo · reason होता है।
  • किसी न पढ़े हुए को पढ़ा हुआ करने के लिए टैप करें, या Mark all read। कुछ न बचे तो You're all caught up लिखा आता है।

आप क्या नहीं कर सकते, और क्यों

  • Notification के पीछे का pull request या issue खोलना: टैप करना उसे सिर्फ़ पढ़ा हुआ चिह्नित करता है।अभी नहीं
  • Fine-grained टोकन से notifications देखना: GitHub उन्हें सिर्फ़ classic टोकन या OAuth sign-in को दिखाता है, और शीट यह बताती भी है।थर्ड पार्टी

Local History

Local History आपके फ़ोन पर किसी फ़ाइल के पुराने वर्शन रखता है, बिना Git, बिना नेटवर्क और बिना अकाउंट के। यह मुफ़्त है। इसे कमांड पैलेट से खोलें: Local History…।

यह क्या रखता है

आप क्या कर सकते हैं

  • हर सफल सेव के बाद एक वर्शन सेव होता है, और सिर्फ़ तब जब टेक्स्ट पिछले सेव किए वर्शन से अलग हो। यह प्रोजेक्ट की फ़ाइलों के लिए और प्रोजेक्ट के बाहर से खोली गई फ़ाइलों के लिए भी काम करता है।
  • यह हर फ़ाइल के लिए 50 वर्शन और कुल 50 MB तक रखता है, compressed नापकर। कुल सीमा पार होने पर किसी भी फ़ाइल के सबसे पुराने वर्शन पहले जाते हैं। समय के आधार पर कोई expiry नहीं है।
  • वर्शन PocketCode के private स्टोरेज में रहते हैं, आपके प्रोजेक्ट के अंदर कभी नहीं, इसलिए वे Git changes के रूप में कभी नहीं दिखते। फ़ाइल का नाम बदलने या उसे ले जाने पर उसकी history साथ चलती है।

आप क्या नहीं कर सकते, और क्यों

  • बड़ी फ़ाइलों के वर्शन रखना: एडिटर 512 KiB, 10,000 लाइनों या 2,000 अक्षरों की लाइन वाली फ़ाइलें अपने light mode में खोलता है, और वे सेव नहीं होतीं।जानबूझकर
  • सीमाएँ बदलना, या किसी वर्शन को pin या label करना।जानबूझकर

देखें और restore करें

  1. 1फ़ाइल खोलें और Local History… चुनें। सबटाइटल बताता है कि कितने वर्शन हैं, जैसे 12 versions।
  2. 2हर पंक्ति दिखाती है कि वह कब सेव हुआ और उसका आकार। किसी को टैप करके उस वर्शन और मौजूदा टेक्स्ट का अंतर देखें।
  3. 3Copy this version उसका टेक्स्ट कॉपी करता है। Restore this version उसे एडिटर में एक ऐसे edit के रूप में डालता है जिसे undo किया जा सकता है। आप सेव करें तब तक डिस्क पर कुछ नहीं लिखा जाता।

आप क्या नहीं कर सकते, और क्यों

  • दो पुराने वर्शन की आपस में तुलना करना: उनकी तुलना हमेशा मौजूदा टेक्स्ट से होती है।अभी नहीं
खाली सूची पर No versions yet लिखा आता है: No saved versions yet. They appear the next time you save a change.

Compare with…

कमांड पैलेट खोलें और खुली फ़ाइल का किसी और चीज़ से diff देखने के लिए Compare with… चुनें। नतीजा सिर्फ़ पढ़ने के लिए होता है।

चुनें किससे तुलना करनी है

आप क्या कर सकते हैं

  • Base चुनें: On disk (The saved version of this file), HEAD (The last git commit), Clipboard (The copied text) या Another open tab।
  • जो base उपलब्ध नहीं होता वह वजह बताता है: No Git repository, The clipboard is empty या No other tabs are open।
  • Diff का शीर्षक file ↔ base होता है; Swap दोनों तरफ़ की अदला-बदली करता है।

आप क्या नहीं कर सकते, और क्यों

  • Diff से एडिट करना या उसे दो कॉलम में देखना: यह बदली हुई लाइनों की एक एकीकृत सूची है।जानबूझकर
HEAD base आख़िरी commit की तुलना डिस्क पर मौजूद फ़ाइल से करता है, इसलिए जो बदलाव आपने सेव नहीं किए वे शामिल नहीं होते।

Free और Pro

Git के अपने कोई plan गेट नहीं हैं। कोई Git क्रिया, GitHub फ़ीचर, Local History, Compare with… या टर्मिनल का Git Panel Pro के पीछे बंद नहीं है, और plan repositories, branch, commit या क्रियाओं पर कोई सीमा नहीं लगाता। इसके आसपास की दो सीमाएँ plan पर निर्भर करती हैं।

फ़ीचरFreePro
Source Control, stash, blame, file history, branch की तुलनाशामिलशामिल
Interactive rebase, cherry-pick, conflict resolverशामिलशामिल
GitHub pull request, issue, CI और alertsशामिलशामिल
Local Historyशामिल: हर फ़ाइल के 50 वर्शन, कुल 50 MBवही
टर्मिनल में Git Panel, प्रोजेक्ट कार्ड की Git शीट, clone और publishशामिलशामिल
आपके अपने प्रोजेक्ट (नया, import, फ़ोल्डर खोलना, GitLab या Bitbucket से clone)1। सैंपल प्रोजेक्ट गिने नहीं जातेकोई सीमा नहीं
हर provider पर कनेक्टेड अकाउंट (GitHub, GitLab, Bitbucket…)1कोई सीमा नहीं
दूसरा प्रोजेक्ट और किसी provider का दूसरा अकाउंट ही Git से जुड़ी वे दो चीज़ें हैं जो Pro माँगती हैं। पूरी तालिका यहाँ है: प्लान और मूल्य।

प्राइवेसी और सुरक्षा

  • टोकन फ़ोन पर ही रहता है। Sign in with a code से मिला टोकन Android Keystore से encrypted करके सेव होता है, हर PocketCode अकाउंट और हर provider अकाउंट के लिए अलग-अलग। Sign out करने से वह delete नहीं होता; ऐप बस किसी दूसरे अकाउंट के स्टोर पर चला जाता है।
  • टोकन कहाँ जाता है। Git उसे सिर्फ़ github.com, gitlab.com और bitbucket.org को भेजता है, ठीक उसी होस्ट से मिलाकर: किसी और होस्ट पर मौजूद remote को कोई credentials नहीं मिलते। GitHub PRs & Issues शीट उसे आपके फ़ोन से सीधे api.github.com को भेजती है।
  • GitHub से login करना अलग बात है। अगर आप PocketCode में ही GitHub से sign in करते हैं, तो वह GitHub टोकन PocketCode के सर्वर पर भी सेव होता है, और डिवाइस पर GitHub key के रूप में (वह Copilot के काम आता है और, विकल्प के तौर पर, clone के)। Push, pull और GitHub शीट जो टोकन इस्तेमाल करते हैं वह Connected Services वाला है, जो सिर्फ़ डिवाइस पर रखा जाता है।
  • Hooks कभी नहीं चलते। Git hooks और filters execute नहीं होते, और जब आप कोई प्रोजेक्ट import करते हैं (ZIP, template, फ़ोल्डर) तो उसके .git/config से वह सब हटा दिया जाता है जो कोई कमांड चला सके और उसके hooks खाली कर दिए जाते हैं। यह एक सुरक्षा संबंधी निर्णय है।
  • Local History डिवाइस पर ही रहता है, ऐप के private स्टोरेज में और प्रोजेक्ट के बाहर, इसलिए वह आपके Git changes का हिस्सा नहीं है।
  • प्रोजेक्ट ZIP में आपकी history शामिल होती है। प्रोजेक्ट कार्ड पर Export में .git फ़ोल्डर शामिल होता है, इसलिए आपने जो भी commit किया है वह फ़ाइल के साथ चला जाता है।
  • Commit क्या उजागर करता है। हर commit में repository के लिए सेट किया गया नाम और ईमेल होता है (या जब आप Projects से commit करते हैं तो आपके PocketCode अकाउंट का)। जो भी repository पढ़ सकता है उसे वे दिखते हैं। Commit signed नहीं होते।

सीमाएँ

क्या काम नहीं करता, ताकि वह आपको चौंकाए नहीं। बैज वजह बताता है।

  • कोई SSH remote नहीं। git@… और ssh:// पते समर्थित नहीं हैं; repository का HTTPS पता इस्तेमाल करें। PocketCode कोशिश करने से पहले ही यह बता देता है।जानबूझकर
  • Credentials सिर्फ़ तीन होस्ट को जाते हैं: github.com, gitlab.com और bitbucket.org। GitHub Enterprise, self-hosted GitLab, Gitea, Codeberg या Azure DevOps पर मौजूद remote को कोई credentials नहीं मिलते, इसलिए वहाँ की private repositories विफल होती हैं।जानबूझकर
  • Pull request, issue, CI और alerts सिर्फ़ GitHub.com के लिए हैं।जानबूझकर
  • Git LFS नहीं, submodule नहीं, commit signing (GPG या SSH) नहीं। LFS फ़ाइलें छोटे टेक्स्ट pointer के रूप में रहती हैं, clone submodule नहीं लाते, और commit signed नहीं होते।अभी नहीं
  • Git hooks कभी नहीं चलते, और import की गई repositories के hooks delete कर दिए जाते हैं।जानबूझकर
  • लोकल टर्मिनल में git प्रोग्राम नहीं है। उसका Git Panel बिल्ट-इन इंजन इस्तेमाल करता है, जो git से कम काम करता है। SSH पर होस्ट का अपना git इस्तेमाल होता है।जानबूझकर
  • सिर्फ़ लोकल branch merge, compare और rebase की सूचियों में दिखती हैं। आप remote branch से लोकल branch नहीं बना सकते, और कुछ भी branch को delete या rename नहीं करता।अभी नहीं
  • Source Control कोई repository शुरू नहीं करता, कुछ fetch नहीं करता, और branch बना या बदल नहीं सकता, amend, discard, tag या remotes एडिट नहीं कर सकता। Projects और टर्मिनल इसमें से ज़्यादातर कर देते हैं।अभी नहीं
  • Guided conflict resolution सिर्फ़ merge और rebase के लिए है। Merge डायलॉग और interactive rebase के पास है; conflict वाला pull, apply किया गया stash या cherry-pick markers छोड़ देता है जिन्हें आप ख़ुद एडिट करते हैं।अभी नहीं
  • Stash: नई फ़ाइलें शामिल नहीं होतीं, और Pop हमेशा सबसे नई entry लेता है।अभी नहीं
  • Rebase commit का क्रम नहीं बदल सकता और Edit इस्तेमाल नहीं कर सकता।जानबूझकर
  • Rebase और cherry-pick सिर्फ़ GitHub शीट से खुलते हैं, और सिर्फ़ तब जब origin github.com पर हो।अभी नहीं
  • Cherry-pick: hash हाथ से टाइप करना पड़ता है, कई hash का क्रम सख़्ती से तय नहीं होता, New commit आपका टाइप किया hash दिखाता है, और conflicts के लिए कोई resolver नहीं है।अभी नहीं
  • Pull request के reviews submit नहीं किए जा सकते, लाइन पर comments नहीं लिखे जा सकते और pull request का diff नहीं पढ़ा जा सकता। कुछ बनाते समय reviewers, assignees और milestones नहीं चुने जा सकते।अभी नहीं
  • GitHub की सूचियाँ 300 आइटम पर रुकती हैं; notifications 50-50 के छह पेज में लोड होती हैं।जानबूझकर
  • Alerts के लिए ऐसा टोकन चाहिए जिसे GitHub notifications पढ़ने देता है: fine-grained टोकन मना कर दिए जाते हैं।थर्ड पार्टी
  • GitHub की request सीमा: जब वह पूरी हो जाती है तो शीट कुछ मिनट बाद फिर कोशिश करने को कहती है।थर्ड पार्टी
  • Sign in with a code तभी काम करता है जब GitHub ने PocketCode के OAuth ऐप के लिए device flow चालू किया हो; वरना शीट कहती है कि GitHub इसे नहीं दे रहा।थर्ड पार्टी
  • Clone, fetch, pull, push, publish और GitHub पर सब कुछ के लिए कनेक्शन चाहिए। बाक़ी सब ऑफ़लाइन चलता है।नेटवर्क ज़रूरी
  • टर्मिनल का Git Panel: लोकल में Diff नहीं, stash message नहीं, किसी एक फ़ाइल को discard करना नहीं, merge, rebase, tags या blame नहीं।अभी नहीं
  • Projects: branch delete या rename करना नहीं, mixed reset नहीं, commit से फ़ाइल restore करना नहीं।अभी नहीं
  • Local History: हर फ़ाइल के 50 वर्शन और कुल 50 MB, समय के आधार पर कोई expiry नहीं, और light mode वाली फ़ाइलों (बड़ी फ़ाइलों) के लिए कुछ सेव नहीं होता।जानबूझकर

समस्या समाधान

हर शीर्षक वही message है जो ऐप दिखाता है। जहाँ ऐप कुछ नहीं दिखाता, वहाँ शीर्षक स्थिति का वर्णन करता है। GitHub शीट में बैनर पहले बताता है कि क्या विफल हुआ, फिर क्यों।

GitHub कनेक्ट करना

“The code expired before it was approved. Ask GitHub for a new one.”

आपने लगभग 15 मिनट से ज़्यादा लिए। नया कोड पाने के लिए Try again टैप करें, फिर उसे approve करें।

“The request was rejected on GitHub. Nothing was saved.”

GitHub के पेज पर approval ठुकरा दिया गया, इसलिए कुछ कनेक्ट नहीं हुआ। Try again टैप करें और इस बार approve करें।

“GitHub isn't offering the code sign-in right now. Paste a token instead — it works exactly the same.”

कोड का अनुरोध विफल हुआ। हो सकता है GitHub ने PocketCode के OAuth ऐप के लिए code sign-in चालू न किया हो, जो GitHub की सेटिंग पर निर्भर है, आपके फ़ोन पर नहीं; अनुरोध पहुँच न पाए (जैसे कनेक्शन न होने पर) तब भी यही संदेश दिखता है। पहले अपना कनेक्शन जाँचें, फिर बाद में कोशिश करें।

“GitHub didn't finish the sign-in. Try again, or paste a token instead.”

Sign-in बिना टोकन के ख़त्म हो गया। Try again टैप करें और नया कोड approve करें।

Projects से clone, push और pull

“This remote uses SSH, which is not supported. Use the HTTPS address of the repository.”

PocketCode सिर्फ़ HTTPS पर remote से बात करता है। Repository को उसके https://… पते से जोड़ें; Clone सूची से clone की गई repository पहले से वही इस्तेमाल करती है।

“This project has no remote yet. Link one in Git settings first.”

प्रोजेक्ट कार्ड पर Git खोलें और Link a repository I already have या Create on GitHub and connect इस्तेमाल करें; या Publish इस्तेमाल करें।

“No account connected for GitHub. Connect one in Settings to upload or download.”

पहले अकाउंट कनेक्ट करें: Settings → Integrations → Connected Services।

“GitHub rejected the credentials. Reconnect the account in Settings.”

GitHub अब सेव किया हुआ टोकन स्वीकार नहीं करता, जैसे कि वह expire हो गया हो या revoke कर दिया गया हो। अकाउंट को Connected Services में फिर से कनेक्ट करें।

“Could not reach GitHub. Check your connection and try again.”

Clone, fetch, pull और push के लिए कनेक्शन चाहिए। लोकल काम के लिए नहीं।

“The remote rejected the upload. Download the remote changes first, then upload again.”

Remote पर ऐसे commit हैं जो आपके पास नहीं हैं। Download changes टैप करें, फिर दोबारा Upload changes।

“Your branch and the remote have both changed.”

पहले remote के बदलाव download करें, फिर दोबारा upload करें: Download changes, फिर Upload changes।

“This project and the remote have no shared history.”

इसका आम मतलब है कि remote जोड़ने से पहले फ़ोल्डर में पहले से commit थे। खाली फ़ोल्डर में clone करें, या कोई दूसरा remote जोड़ें।

“The same lines changed on both sides.”

प्रभावित फ़ाइलें खोलें, जो वर्शन चाहिए उसे रखें और फिर कोशिश करें। Pull के लिए conflict resolver नहीं है; एडिटर से शुरू किए गए merge के लिए Merge डायलॉग में है (Conflicts देखें)।

GitHub PRs & Issues

“The "origin" remote is not on GitHub (…).”

शीट सिर्फ़ github.com के साथ काम करती है। कोष्ठक में वह होस्ट है जो PocketCode को origin में मिला।

“This project has no "origin" remote. Add a GitHub remote to see its pull requests and issues.”

प्रोजेक्ट कार्ड पर Git → Link a repository I already have, या Publish इस्तेमाल करें।

“Connect your GitHub account in Services to see the pull requests and issues of owner/repo.”

No GitHub account connected स्क्रीन पर Connect GitHub account टैप करें, या Settings → Integrations → Connected Services पर जाएँ।

“GitHub rejected the token. Reconnect your GitHub account in Services.”

सेव किया हुआ टोकन ठुकरा दिया गया। अकाउंट को Connected Services में फिर से कनेक्ट करें।

“The connected account doesn't have permission for this: …”

अकाउंट repository पढ़ सकता है पर वह क्रिया नहीं कर सकता। वजह कोलन के बाद आती है।

“Not found. If the repository is private, the connected account may not have access to it.”

जाँचें कि कनेक्टेड अकाउंट वही है जो GitHub पर उस repository को खोल सकता है।

“GitHub rejected the data: …”

GitHub ने जो भेजा गया उसे स्वीकार नहीं किया। वजह कोलन के बाद आती है।

“GitHub can't do it right now: …”

मौजूदा हालात में GitHub ने क्रिया से इनकार कर दिया। वजह कोलन के बाद आती है; अगर आपके खोलने के बाद pull request बदल गया है, तो उसे दोबारा खोलकर फिर कोशिश करें।

“GitHub's request limit was reached. Try again in … min.”

जितने मिनट लिखे हैं उतना इंतज़ार करें। पूरी स्क्रीन का शीर्षक GitHub rate-limited requests है; समय बीतने पर Retry टैप करें।

“GitHub is having problems (HTTP …). Try again later.”

GitHub ने ही error लौटाया। आपके फ़ोन में कुछ गड़बड़ नहीं है।

“Couldn't reach GitHub. Check your connection.”

GitHub शीट को कनेक्शन चाहिए; Git के बाक़ी हिस्से को नहीं।

“GitHub only shows notifications to a classic token or an OAuth sign-in with the "notifications" scope; fine-grained tokens can't read them.”

सिर्फ़ Alerts टैब पर असर पड़ता है; PRs, Issues और CI काम करते रहते हैं।

“The pull request was created, but its reviewers or labels couldn't be added”

आपका pull request GitHub पर मौजूद है; सिर्फ़ अतिरिक्त चीज़ें विफल हुईं। उन्हें जोड़ने के लिए उसे GitHub पर खोलें।

Interactive rebase

“You are not on a branch (detached HEAD). Switch to a branch first.”

किसी branch पर जाएँ (Projects → Git → Branch, या टर्मिनल का Git Panel) और फिर से शुरू करें।

“There are uncommitted changes: …”

उन्हें commit करें, या Stash my changes before starting चालू करें।

“There is already a merge or rebase in progress in this repository.”

पहले उसे पूरा करें या abort करें। Rebase के लिए शीट में Continue, Skip this commit और Abort हैं।

“The rebase would overwrite files that are not tracked: …. Move or commit them first. Nothing was changed.”

Message में सूचीबद्ध फ़ाइलें हटाएँ या commit करें, फिर दोबारा शुरू करें।

“The branch changed since the list was loaded. Load it again.”

योजना लोड होने के बाद branch आगे बढ़ गई। उसे दोबारा लोड करने के लिए Interactive rebase… फिर खोलें।

“Git could not apply … so it undid the rebase. The branch is as it was.”

कुछ नहीं खोया। जिस commit का नाम message में है वह target branch पर लागू नहीं हो सका।

“After resolving, this commit is empty. Skip it to carry on.”

आपके resolution के बाद लागू करने को कुछ नहीं बचा। Skip this commit टैप करें।

“The first commit you keep cannot be Squash or Fixup: there is no earlier commit to meld it into.”

जो पहला commit आप रखते हैं उसे Pick या Reword दें।

“You are dropping every commit. Keep at least one.”

कम से कम एक commit को Drop से हटाकर कुछ और करें।

“There is no rebase backup for this branch.”

Restore backup सिर्फ़ ऐसी branch पर काम करता है जिसे PocketCode ने rebase किया हो और जिसका सेव किया सिरा अब भी मौजूद हो।

एडिटर और टर्मिनल में

एडिटर में “Push failed: …”, “Pull failed: …” या “Commit failed: …”

कोलन के बाद का message कारण है। Push और pull को आपका जुड़ा हुआ अकाउंट चाहिए; एडिटर कभी साइन-इन नहीं खोलता। Projects (Upload changes / Download changes) और टर्मिनल का Git Panel वही क्रियाएँ चलाते हैं और error अपने शब्दों में दिखाते हैं।

“Merge has conflicts in: …”

Merge conflicts पर रुक गया। Merge फिर खोलें: डायलॉग फ़ाइलें सूचीबद्ध करता है और हर एक को हल करने या Abort Merge करने देता है (Conflicts देखें)।

Source Control No changes detected कहता है पर मैंने फ़ाइलें बदली हैं

या तो working tree साफ़ है या प्रोजेक्ट अभी repository नहीं है। Projects → Git में Not tracked yet का मतलब है कि आपको Start tracking this project करना होगा।

“No Git repository here”

टर्मिनल के Git Panel को आपके काम करने वाले फ़ोल्डर या आपके workspace के अंदर उसके ऊपर के फ़ोल्डरों में .git नहीं मिला। Initialize repository टैप करें।

“Git: …”

वजह आगे आती है। Push और pull को आपका कनेक्टेड अकाउंट चाहिए; पैनल खुद sign-in नहीं खोलता।