码迷,mamicode.com
首页 > 其他好文 > 详细

github的使用

时间:2017-08-24 22:44:47      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:推送   公钥   back   自己的   上传   clipboard   line   没有   例子   

本地安装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句命令等价于

  1. $ git pull
  1. $ 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上输入如下命令行:

    1. $ git config branch.master.remote origin
    2. $ 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 [branch "master"] 2 remote = origin 3 merge = refs/heads/master

表明:

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 这才是 读写方式

 

 

github的使用

标签:推送   公钥   back   自己的   上传   clipboard   line   没有   例子   

原文地址:http://www.cnblogs.com/aipiaoborensheng/p/7425345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!