GitHub使用教程及常见错误解决
1、下载Git并安装 Git for Windows
Git-1.8.4-preview20130916.exe 按照默认步骤完成安装
2、设置SSH建立计算机与Github的链接
2.1 点击 开始菜单找到Git Bash
2.2 在git bash上运行命令 $ cd ~/.ssh 检查自己电脑上是否存在ssh keys
如果显示No such file or directory 则需要去创建一个新的ssh keys
2.3 创建新的ssh keys
运行命令:
$ ssh-keygen -t rsa -C "youemail@youemail.com" 点击回车
输入两次密码
注:在Enter passphrase 的时候,输入的密码是看不到的,其实已经输入了,输完后点击回车就可以了
这样一个新的keys就创建完成了,上面代码显示,密匙位置放在了C:/Users/用户名/.ssh/文件夹中。(.ssh文件夹可能是隐藏的,需要查看隐藏文件)
2.4 将生成的ssh keys 添加到github中
2.4.1 访问https://github.com/plans 先注册一个账号后, 点击“Account Settings” > 点击 “SSH Public Keys” > 点击 “Add SSH key”
在本机找到你创建的密匙文件id_rsa.pub ,使用记事本打开,复制里面所有的内容,粘贴到网站key的文本框中,点击Add Key 保存
2.4.2 测试设置是否正确
输入命令:$ ssh -T git@github.com
输入$ yes
输入前面自己设置的passphrase,回车,显示如下即成功(忽略警告)
3、在本地设置Git信息,设置用户名和邮箱
$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@youremail.com"
此处用户名为自己的实际姓名(自定义的),而非登录用户名
4、Git创建一个库
点击new repository,输入repository名称,勾选“Initialize this repository with a README”复选框
5、上传项目代码
5.1 先clone刚才新建的repository 到本地
在要放置的硬盘文件夹位置, 右击鼠标,点击Git Bash
输入命令: $ git clone https://github.com/jenniferhuang/myssh.git ,在本地生成了myssh文件夹
5.2 切换到这个myssh目录下(可以看到该文件夹下有README.md),并将要上传的项目拷贝到该文件夹下面
5.3 执行以下5个命令
$ git init //命令1,初始化
$ git add . //命令2
$ git commit -m '提交说明' //命令3
$ git remote add origin git@github.com:github用户名/myssh.git //命令4,为仓库添加源地址
$ git push origin master //命令5
常见错误:
1、执行命令4时,出现错误:
fatal: remote origin already exists
则执行语句:$ git remote rm origin //执行后,再重新执行命令4,就不会报错
2、执行命令5时,出现错误:
error:failed to push som refs to.......
则执行语句:$ git pull origin master //先把远程服务器github上面的文件拉下来,再输入$ git push origin master
3、将命令4写成
$ git remote add origin https://github.com/jenniferhuang/myssh.git 可能会出现错误:
unable to find remote helper for 'htts'
解决方法,改成$ git remote add origin git@github.com:jenniferhuang/myssh.git
PS: git多分支工作
git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下:
去自己的工作分支 $ git checkout work
工作 ....
提交工作分支的修改 $ git commit -a
回到主分支 $ git checkout master
获取远程最新的修改,此时不会产生冲突 $ git pull
回到工作分支 $ git checkout work
用rebase合并主干的修改,如果有冲突在此时解决 $ git rebase master
回到主分支 $ git checkout master
合并工作分支的修改,此时不会产生冲突。 $ git merge work
提交到远程主干 $ git push
这样做的好处是,远程主干上的历史永远是线性的。每个人在本地分支解决冲突,不会在主干上产生冲突。