ubuntu使用github
Ubuntu下安装Git
Ubuntu12.04 LTS默认是已经安装Git的,可以使用 git --version 测试是否安装。
如果没有安装,使用命令: sudo apt-get install git git-core 安装git
ssh认证
官网教程: https://help.github.com/articles/generating-ssh-keys/
创建公钥 ssh key
carloz@linux:~/Downloads/usr/bin$ ls -al ~/.ssh total 16 drwx------ 2 carloz carloz 4096 10月 29 17:06 . drwxr-xr-x 42 carloz carloz 4096 10月 29 16:39 .. -rw------- 1 carloz carloz 1679 10月 29 16:44 github -rw-r--r-- 1 carloz carloz 403 10月 29 16:44 github.pub carloz@linux:~/Downloads/usr/bin$ ssh-keygen -t rsa -b 4096 -C "xiaoqing_work@163.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/carloz/.ssh/id_rsa): Enter passphrase (empty for no passphrase): xiaoqing Enter same passphrase again: Your identification has been saved in /home/carloz/.ssh/id_rsa. Your public key has been saved in /home/carloz/.ssh/id_rsa.pub. The key fingerprint is: 66:b5:f4:85:37:4c:c1:7e:bf:d3:bd:c1:7a:d7:2d:f5 xiaoqing_work@163.com The key's randomart image is: +--[ RSA 4096]----+ | .o. | | +. | | o ..= | | o o o...| | S . . ..| | o . o| | +B| | o+E| | ..o+| +-----------------+ carloz@linux:~/Downloads/usr/bin$
复制公钥
carloz@linux:~/Downloads/usr/bin$ ls -al ~/.ssh total 24 drwx------ 2 carloz carloz 4096 10月 29 17:12 . drwxr-xr-x 42 carloz carloz 4096 10月 29 16:39 .. -rw------- 1 carloz carloz 1679 10月 29 16:44 github -rw-r--r-- 1 carloz carloz 403 10月 29 16:44 github.pub -rw------- 1 carloz carloz 3326 10月 29 17:12 id_rsa -rw-r--r-- 1 carloz carloz 747 10月 29 17:12 id_rsa.pub carloz@linux:~/Downloads/usr/bin$ vi ~/.ssh/id_rsa.pub carloz@linux:~/Downloads/usr/bin$ eval "$(ssh-agent -s)" Agent pid 8644 carloz@linux:~/Downloads/usr/bin$ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/carloz/.ssh/id_rsa: xiaoqing Identity added: /home/carloz/.ssh/id_rsa (/home/carloz/.ssh/id_rsa) carloz@linux:~/Downloads/usr/bin$ sudo apt-get install xclip carloz@linux:~/Downloads/usr/bin$ xclip -sel clip < ~/.ssh/id_rsa.pub
添加key到github
连接 github
carloz@linux:~/Downloads/usr/bin$ rm ~/.ssh/git* carloz@linux:~/Downloads/usr/bin$ ls -al ~/.ssh total 16 drwx------ 2 carloz carloz 4096 10月 29 17:23 . drwxr-xr-x 42 carloz carloz 4096 10月 29 16:39 .. -rw------- 1 carloz carloz 3326 10月 29 17:12 id_rsa -rw-r--r-- 1 carloz carloz 747 10月 29 17:12 id_rsa.pub
carloz@linux:~/Downloads/usr/bin$ ssh -T git@github.com The authenticity of host 'github.com (192.30.252.129)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.252.129' (RSA) to the list of known hosts. Hi carlo-z! You've successfully authenticated, but GitHub does not provide shell access. carloz@linux:~/Downloads/usr/bin$
提交代码至GitHub
cd carloz-lib-web/ carloz@linux:~/Python/carloz/carloz-lib-web$ git config --global user.name "carlo-z" carloz@linux:~/Python/carloz/carloz-lib-web$ git config --global user.email xiaoqing_work@163.com git init git add . git commit -m "add new files" git remote add origin git@github.com:carlo-z/carloz-lib-web.git git push -u origin master
carloz@linux:~/Python/carloz/carloz-lib-web$ git push origin master To git@github.com:carlo-z/carloz-lib-web.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@github.com:carlo-z/carloz-lib-web.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. carloz@linux:~/Python/carloz/carloz-lib-web$ git fetch warning: no common commits remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From github.com:carlo-z/carloz-lib-web * [new branch] master -> origin/master carloz@linux:~/Python/carloz/carloz-lib-web$
! [rejected] master -> master (non-fast-forward)
问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:
1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
git push -f
carloz@linux:~/Python/carloz/carloz-lib-web$ git push -f origin master Counting objects: 663, done. Delta compression using up to 4 threads. Compressing objects: 100% (636/636), done. Writing objects: 100% (662/662), 3.00 MiB | 23.00 KiB/s, done. Total 662 (delta 13), reused 0 (delta 0) To git@github.com:carlo-z/carloz-lib-web.git + 04e543c...e29d7a9 master -> master (forced update)
2,先把git的东西fetch到你本地然后merge后再push