यह सिर्फ Windows पर Git और BitBucket से शुरू होने वाले लोगों के लिए लिखना और जो Bash से परिचित नहीं हैं (क्योंकि यह एक सामान्य समस्या और उच्च रैंकिंग वाला Google परिणाम है जब प्रश्न के भीतर त्रुटि संदेश की खोज होती है)।
जो लोग कोई आपत्ति नहीं है के लिए HTTPS और त्वरित सुधार के लिए देख रहे हैं, जो, के तहत निर्देशों के लिए इस सवाल का जवाब के नीचे करने के लिए स्क्रॉल के लिए The Lazy
वास्तविक समस्या को हल करने के इच्छुक लोगों के लिए, नीचे दिए गए निर्देशों का पालन करें:
एसएसएच मुद्दे को जल्द से जल्द ठीक करना
यह VonC द्वारा लिंक किए गए URL से प्राप्त निर्देशों का एक समूह है। यह संभव के रूप में लचीला और रसीला होने के लिए संशोधित किया गया था।
यदि आपने पहले से नहीं किया है तो अपनी वैश्विक जानकारी सेट करें:
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
ओपनएसएसएच के लिए जाँच करें:
$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...
कुछ ऐसा ही देखा?
- हाँ: जारी रखें।
- नहीं: LAZY अनुभाग के लिए छोड़ें या VONC से जुड़े लेख का अनुसरण करें।
देखें कि क्या आपने पहले ही कुंजियाँ बना ली हैं:
$ ls -a ~/.ssh/id_*
यदि दो फाइलें हैं, तो आप अगले चरण को छोड़ सकते हैं।
$ ssh-keygen
चूक के रूप में सब कुछ छोड़ दें, एक पासफ़्रेज़ दर्ज करें। अब आपको इस आदेश के साथ परिणाम देखना चाहिए:
$ ls -a ~/.ssh/id_*
मौजूदा कॉन्फ़िग फ़ाइल की जाँच करें:
$ ls -a ~/.ssh/config
यदि आपको कोई परिणाम मिलता है, तो गलत जानकारी के लिए इस फ़ाइल की जाँच करें। यदि कोई फ़ाइल मौजूद नहीं है, तो निम्न कार्य करें:
$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config
सामग्री की पुष्टि करें:
$ cat ~/.ssh/config
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa
- "IdentityFile" से पहले एकल स्थान की आवश्यकता है।
हर बार जब आप GitBash चलाते हैं, तो आप SSH एजेंट शुरू कर रहे हैं:
$ cat ~/.bashrc
- यदि आप किसी फ़ंक्शन को कहते हैं
start_agent
, तो यह चरण पूरा हो चुका है।
- यदि कोई फ़ाइल नहीं है, तो जारी रखें।
- यदि कोई ऐसी फ़ाइल है जिसमें यह फ़ंक्शन नहीं है, तो आप एक चिपचिपी स्थिति में हैं। यह शायद इसे सुरक्षित करने के लिए सुरक्षित है (नीचे दिए गए निर्देशों का उपयोग करके) लेकिन यह नहीं हो सकता है! यदि अनिश्चित है, तो नीचे दिए गए निर्देशों का पालन करने से पहले अपने .bashrc का बैकअप बनाएं या LAZY सेक्शन के लिए आगे जाएं ।
अपनी .bashrc फ़ाइल बनाने के लिए GitBash में निम्न दर्ज करें:
$ echo "SSH_ENV=$HOME/.ssh/environment" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "# start the ssh-agent" >> ~/.bashrc
$ echo "function start_agent {" >> ~/.bashrc
$ echo " echo \"Initializing new SSH agent...\"" >> ~/.bashrc
$ echo " # spawn ssh-agent" >> ~/.bashrc
$ echo " /usr/bin/ssh-agent | sed 's/^echo/#echo/' > \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo " echo succeeded" >> ~/.bashrc
$ echo " chmod 600 \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo " . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo " /usr/bin/ssh-add" >> ~/.bashrc
$ echo "}" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "if [ -f \"\${SSH_ENV}\" ]; then" >> ~/.bashrc
$ echo " . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo " ps -ef | grep \${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {" >> ~/.bashrc
$ echo " start_agent;" >> ~/.bashrc
$ echo " }" >> ~/.bashrc
$ echo "else" >> ~/.bashrc
$ echo " start_agent;" >> ~/.bashrc
$ echo "fi" >> ~/.bashrc
सत्यापित करें कि फ़ाइल सफलतापूर्वक बनाई गई थी (आपका "केवल जहाँ आपका" नाम दिखाई देता है) अलग होना चाहिए:
$ cat ~/.bashrc
SSH_ENV=/c/Users/yourusername/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
- GitBash को बंद करें और इसे फिर से खोलें।
- आपको अपने पासफ़्रेज़ के लिए (एसएसएच फ़ाइल जो आपने पहले उत्पन्न की थी) के लिए कहा जाना चाहिए।
- यदि कोई संकेत नहीं है, तो आपने या तो पासफ़्रेज़ सेट नहीं किया है या GitBash .bashrc स्क्रिप्ट नहीं चला रहा है (जो कि अजीब होगा इसलिए इसकी सामग्री की समीक्षा करने पर विचार करें!)। यदि आप इसे Mac (OS X) पर चला रहे हैं,
.bashrc
तो डिफ़ॉल्ट रूप से निष्पादित नहीं होता है - .bash_profile
है। इसे ठीक करने के लिए, इस स्निपेट को अपने पास रखें .bash_profile
:[[ -s ~/.bashrc ]] && source ~/.bashrc
यदि आपने पासफ़्रेज़ दर्ज नहीं किया है, तो GitBash शुरू करते समय आपको कुछ ऐसा दिखाई देगा:
Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)
और निम्नलिखित परिणाम लौटाना चाहिए:
$ ssh-add -l
हालाँकि, यदि आपको निम्न से मिलता है ssh-add -l
:
Could not open a connection to your authentication agent.
यह SSH एजेंट और आपके .bashrc का कारण नहीं बन पाया।
यदि, GitBash शुरू करते समय, आप इसे देखते हैं:
Initializing new SSH agent...
sh.exe": : No such file or directory
इसका मतलब है कि आप फ़ाइल से गूँजते समय $ a से बचना भूल गए (यानी चर का विस्तार किया गया)। इसे हल करने के लिए अपने .bashrc को पुनः बनाएं।
सत्यापित करें कि एजेंट चल रहा है और आपकी चाबियाँ जोड़ी जा चुकी हैं:
$ ssh-add -l
इसके समान कुछ लौटाना चाहिए:
2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)
अपनी सार्वजनिक कुंजी प्राप्त करने के लिए निम्नलिखित कमांड चलाएँ:
$ cat ~/.ssh/id_rsa.pub
(यह "ssh-rsa ......" से शुरू होने वाली किसी चीज़ को वापस करना चाहिए।
- GitBash विंडो आइकन पर क्लिक करें
- संपादित करें पर क्लिक करें
- Mark पर क्लिक करें
- अपने माउस (अग्रणी
ssh-rsa
बिट और अनुगामी == youremail@yourdomain.com
बिट सहित) का उपयोग करते हुए सार्वजनिक कुंजी को हाइलाइट करें
- खिड़की पर राइट-क्लिक करें (एक प्रतिलिपि करता है)
- नोटपैड में अपनी सार्वजनिक कुंजी चिपकाएँ।
- सभी नई सूची को हटा दें जैसे कि यह केवल एक पंक्ति है।
CTRL+A
फिर CTRL+C
सार्वजनिक कुंजी को अपने क्लिपबोर्ड पर कॉपी करने के लिए दबाएँ ।
निम्न चरणों का पालन करके अपनी निजी कुंजी को BitBucket के साथ कॉन्फ़िगर करें:
- अपना ब्राउज़र खोलें और BitBucket.org साइट पर जाएँ
- BitBucket.org पर लॉगइन करें
- अपने अवतार पर क्लिक करें (शीर्ष-दाएं)
- खाता प्रबंधित करें पर क्लिक करें
- SSH कुंजी (बाएं हाथ के मेनू पर सुरक्षा के तहत) पर क्लिक करें
- Add Key पर क्लिक करें
Global Public Key
लेबल के लिए दर्ज करें
- आपके द्वारा कॉपी की गई सार्वजनिक कुंजी को नोटपैड से चिपकाएं
एक Global Public Key
प्रविष्टि अब आपकी चाबियों की सूची में दिखाई देनी चाहिए।
- GitBash पर लौटें
- अपनी परियोजना युक्त निर्देशिका में सीडी
- अपनी उत्पत्ति को SSH भिन्नता में बदलें (ऐसा नहीं होगा यदि आप LAZY चरणों के लिए भागे हों )
अपने उपाय देखें:
$ git remote -v
SSH url पर स्विच करें:
$ git remote set-url origin git@bitbucket.org:youraccount/yourproject.git
कार्य क्रम में चीजों की जाँच करें:
$ git remote show origin
आपको कुछ इस तरह से देखना चाहिए:
Warning: Permanently added the RSA host key for IP address '...' to the list of known hosts.
* remote origin
Fetch URL: git@bitbucket.org:youruser/yourproject.git
Push URL: git@bitbucket.org:youruser/yourproject.git
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
किया हुआ!
आप SSH के बजाय HTTPS का उपयोग करने का विकल्प चुन सकते हैं। दूरस्थ संचालन के दौरान आपको अपना पासवर्ड टाइप करना होगा (इसे एक बार टाइप करने के बाद इसे अस्थायी रूप से कैश किया जाता है)। यहां बताया गया है कि आप HTTPS को कैसे कॉन्फ़िगर कर सकते हैं:
LAZY के लिए
आपको VONC द्वारा बताए गए SSH मुद्दे को ठीक करना चाहिए; हालाँकि, यदि आप जल्दबाज़ी करने की जल्दबाज़ी में हैं और आपके पास अभी नया सार्वजनिक कुंजी उत्पन्न करने के लिए उपकरण / समय / ज्ञान नहीं है, तो अपने मूल को HTTPS विकल्प में सेट करें:
> https://accountname@bitbucket.org/accountname/reponame.git
एक GUI टूल का उपयोग करना जैसे कि TortoiseGit या कमांड लाइन टूल ।
यहाँ इस वैकल्पिक मूल URL का प्रलेखन है।
यदि कोई मौजूद नहीं है, तो एक मूल जोड़ने के लिए कमांड लाइन:
git remote add origin https://accountname@bitbucket.org/accountname/reponame.git
मौजूदा मूल को बदलने के लिए कमांड लाइन:
git remote set-url origin https://accountname@bitbucket.org/accountname/reponame.git
नोट: आपका खाता नाम आपका ईमेल नहीं है।
आप अपनी वैश्विक जानकारी भी सेट करना चाह सकते हैं:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
फिर अपने पुश को फिर से आज़माएं (दोबारा करने की ज़रूरत नहीं)
git push origin master