Menulis ini untuk mereka yang baru memulai dengan Git dan BitBucket di Windows & yang tidak begitu mengenal Bash (karena ini adalah masalah umum dan hasil Google peringkat tinggi ketika mencari pesan kesalahan dalam pertanyaan).
Bagi mereka yang tidak keberatan dengan HTTPS dan yang mencari perbaikan cepat, gulir ke bawah jawaban ini untuk instruksi di bawah FOR THE LAZY
Bagi mereka yang ingin menyelesaikan masalah yang sebenarnya, ikuti instruksi di bawah ini:
Memperbaiki masalah SSH secepat mungkin
Ini adalah serangkaian instruksi yang berasal dari URL yang ditautkan oleh VonC. Itu dimodifikasi agar sekuat dan sesingkat mungkin.
Tetapkan info global Anda jika Anda belum:
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
Periksa OpenSSH:
$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...
Lihat sesuatu seperti itu?
- Ya: Lanjutkan.
- Tidak: Lewati bagian FOR THE LAZY atau ikuti artikel yang ditautkan dari VonC.
Lihat apakah Anda sudah membuat kunci:
$ ls -a ~/.ssh/id_*
Jika ada dua file, Anda dapat melewati langkah selanjutnya.
$ ssh-keygen
Biarkan semuanya sebagai default, masukkan frasa sandi. Anda sekarang akan melihat hasil dengan perintah ini:
$ ls -a ~/.ssh/id_*
Periksa file konfigurasi yang ada:
$ ls -a ~/.ssh/config
Jika Anda mendapatkan hasilnya, periksa file ini untuk informasi yang salah. Jika tidak ada file, lakukan hal berikut:
$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config
Konfirmasikan konten:
$ cat ~/.ssh/config
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa
- Ruang tunggal sebelum "IdentityFile" diperlukan.
Periksa Anda memulai agen SSH setiap kali Anda menjalankan GitBash:
$ cat ~/.bashrc
- Jika Anda melihat fungsi dipanggil
start_agent
, langkah ini telah selesai.
- Jika tidak ada file, lanjutkan.
- Jika ada file yang tidak mengandung fungsi ini, Anda berada dalam situasi yang sulit. Mungkin aman untuk menambahkannya (menggunakan instruksi di bawah) tetapi mungkin tidak! Jika tidak yakin, buat cadangan .bashrc Anda sebelum mengikuti instruksi di bawah ini atau lewati bagian FOR THE LAZY .
Masukkan yang berikut ini ke GitBash untuk membuat file .bashrc Anda:
$ 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
Verifikasi file berhasil dibuat (milik Anda hanya akan berbeda ketika "nama pengguna" muncul):
$ 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
- Tutup GitBash dan buka kembali.
- Anda harus dimintai kata sandi Anda (untuk file SSH yang Anda buat sebelumnya).
- Jika tidak ada prompt, Anda tidak menetapkan frasa sandi atau GitBash tidak menjalankan skrip .bashrc (yang akan aneh, jadi pertimbangkan untuk meninjau kontennya!). Jika Anda menjalankan ini pada Mac (OS X),
.bashrc
tidak dijalankan secara default - .bash_profile
adalah. Untuk memperbaikinya, masukkan potongan ini di .bash_profile
:[[ -s ~/.bashrc ]] && source ~/.bashrc
Jika Anda tidak memasukkan frasa sandi, Anda akan melihat sesuatu seperti ini ketika memulai GitBash:
Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)
Dan yang berikut harus mengembalikan hasil:
$ ssh-add -l
Namun, jika Anda mendapatkan yang berikut dari ssh-add -l
:
Could not open a connection to your authentication agent.
Itu tidak menelurkan agen SSH dan .bashrc Anda kemungkinan penyebabnya.
Jika, ketika memulai GitBash, Anda melihat ini:
Initializing new SSH agent...
sh.exe": : No such file or directory
Itu berarti Anda lupa untuk keluar dari $ dengan a \ ketika menggema ke file (mis. Variabel diperluas). Buat ulang .bashrc Anda untuk menyelesaikan ini.
Verifikasi agen sedang berjalan dan kunci Anda telah ditambahkan:
$ ssh-add -l
Harus mengembalikan sesuatu yang mirip dengan ini:
2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)
Jalankan perintah berikut untuk mendapatkan kunci publik Anda:
$ cat ~/.ssh/id_rsa.pub
(seharusnya mengembalikan sesuatu yang dimulai dengan "ssh-rsa ......"
- Klik ikon jendela GitBash
- Klik Edit
- Klik Tandai
- Sorot kunci publik menggunakan mouse Anda (termasuk
ssh-rsa
bit terkemuka dan == youremail@yourdomain.com
bit tambahan)
- Klik kanan jendela (melakukan salinan)
- Rekatkan kunci publik Anda ke Notepad.
- Hapus semua baris baru sehingga hanya satu baris.
- Tekan
CTRL+A
lalu CTRL+C
untuk menyalin lagi kunci publik ke clipboard Anda.
Konfigurasikan kunci pribadi Anda dengan BitBucket dengan melakukan langkah-langkah berikut:
- Buka browser Anda dan navigasikan ke situs BitBucket.org
- Masuk ke BitBucket.org
- Klik avatar Anda (kanan atas)
- Klik Kelola Akun
- Klik Kunci SSH (di bawah Keamanan pada menu sebelah kiri)
- Klik Tambahkan Kunci
- Masukkan
Global Public Key
untuk Label
- Rekatkan kunci publik yang Anda salin dari Notepad
Sebuah Global Public Key
entri sekarang harus terlihat dalam daftar kunci.
- Kembali ke GitBash
- cd ke direktori yang berisi proyek Anda
- Ubah asal Anda ke variasi SSH (itu tidak akan terjadi jika Anda menjalankan langkah UNTUK THE LAZY )
Periksa remote Anda:
$ git remote -v
Beralih ke url SSH:
$ git remote set-url origin git@bitbucket.org:youraccount/yourproject.git
Periksa hal-hal dalam urutan kerja:
$ git remote show origin
Anda harus melihat sesuatu seperti ini:
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)
DIBUAT!
Anda dapat memilih untuk menggunakan HTTPS daripada SSH. Anda akan diminta mengetikkan kata sandi selama operasi jarak jauh (di-cache sementara setelah Anda mengetiknya sekali). Inilah cara Anda dapat mengkonfigurasi HTTPS:
UNTUK LAZY
Anda harus memperbaiki masalah SSH seperti yang dijelaskan oleh VonC; namun, jika Anda terburu-buru untuk berkomitmen dan tidak memiliki alat / waktu / pengetahuan untuk menghasilkan kunci publik baru sekarang , setel asal Anda ke alternatif HTTPS:
> https://accountname@bitbucket.org/accountname/reponame.git
Menggunakan alat GUI seperti TortoiseGit atau alat baris perintah .
Berikut adalah dokumentasi dari URL asal alternatif ini.
Baris perintah untuk menambahkan asal jika tidak ada:
git remote add origin https://accountname@bitbucket.org/accountname/reponame.git
Baris perintah untuk mengubah asal yang ada:
git remote set-url origin https://accountname@bitbucket.org/accountname/reponame.git
CATATAN: nama akun Anda bukan email Anda.
Anda mungkin juga ingin mengatur info global Anda:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
Kemudian coba lagi dorongan Anda (tidak perlu komit lagi)
git push origin master