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

原文地址:https://www.cnblogs.com/carlo/p/4921074.html