github的使用
本地安装git
https://code.google.com/p/msysgit/downloads/list
生成sshkey
输入 ssh-keygen ,按enter,多按几次enter 公钥生成在 C:\Documents and Settings\xxx\.ssh 目录中,找到目录 ,里面有id_rsa.pub文件,用记事本打开,然后把里面的东西 全选复制。
有公钥和私钥
并在github上配置sshkey(目的是使本地和线上的github能互相通信)
github上新建一个项目
https://github.com/yanghaize/yourbook.git
在项目目录里执行
安装 Git 之后,你要做的第一件事情就是去配置你的名字和邮箱,因为每一次提交都需要这些信息:
git config --global user.name "bukas"
git config --global user.email "bukas@gmail.com"
首次提交代码
echo "# yourbook" >> README.md git init //初始化自己的仓库
git add . //添加文件到本地创库
git commit -m "first commit"//添加本次提交的注释
git remote add origin https://github.com/yanghaize/yourbook.git//将本地创库和git创库链接
git push -u origin master //把本地 master 分支 推送到 服务器的master分支上,如果服务器没有此分支,就 新建 此分支。这也是 在服务器上新建分支的一种方法/将本地代码上传到服务器
首先,git要求使用者必须提供自己的身份标识,为此我们需要在git bash中执行以下命令:
git config --global user.name 'aa.Tessst'
git config --global user.email fsc@sina.com
提交失败的例子:
1.error: pathspec 'composer' did not match any file(s) known to git. error: pathspec 'composer.lock' did not match any file(s) known to git. error: pathspec 'vendor' did not match any file(s) known to git. 解决方法:git rm -r --cached .
2.
![rejected] master->master(fetch first)
error:failed to push some refs to 'https://github.com/xxx/xxx.git'
最后执行git pull,然后再执行push就可以了:
原因是:刚才在网站上改了README.md文件,添加了一些项目的说明,然后使用Git客户端再次提交的时候,需要先更新服务器上的变化,然后才能提交,也就是先更新再提交。
3.
! [rejected] master -> master (non-fast-forward)(有推荐视频)
问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:
1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
$ git fetch
$ git merge
这2句命令等价于
- $ git pull
- $ git pull
可是,这时候又出现了如下的问题:
上面出现的 [branch "master"]是需要明确(.git/config)如下的内容
[branch "master"]
remote = origin
merge = refs/heads/master
这等于告诉git2件事:
1,当你处于master branch, 默认的remote就是origin。
2,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变
如果不想或者不会编辑config文件的话,可以在bush上输入如下命令行:
- $ git config branch.master.remote origin
- $ git config branch.master.merge refs/heads/master
之后再重新git pull下。最后git push你的代码吧。
我的解决方法是:
先执行git pull
然后再执行 git push --force origin master 替换原先的git push -u origin master
直接 用 git pull 将项目 从 github 上 同步 下来
有两种方法:
1、当git clone之后,直接git pull它会自动匹配一个正确的remote url
是因为在config文件中配置了以下内容:
表明:
1.git处于master这个branch下时,默认的remote就是origin;
2.当在master这个brach下,使用指定remote和merge的git pull时,使用默认的remote和merge。
建议:用第二种 方法,因为 如果 是 git clone的 项目,当 执行 git push 时,因为 在 git config里 url 是 只读方式
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git://github.com/xxx/xxx.git
//git@github.com:XXX/XXX.git 这才是 读写方式