相信很多朋友都曾遇到过这样一个问题,想要在另一台电脑上同步你的个人项目,以便能身居‘异地’也依然能同步开发!所以我们把自己的项目同步到远程仓库,想在哪里里开发,就pull到本地改完再push到远程仓库,极其方便~
鉴于有好几次都记错了相关命令,故记于此,来日多多翻阅…
安装git和如何使用github不做讲诉…
准备工作,本地git获得github的提交权限
-
设置用户名和邮箱
git config --global user.name 'your_name'
git config --global user.email 'your_email'
-
生成SSH密匙
ssh-keygen -t rsa -C 'your_email'
,email和你设置的git邮箱一致
指令执行后会让你确定密钥保存地址和设置密码,这些不用管,全部回车就好
-
添加生成的id_rsa.pub文件中的公钥(用记事本打开全部复制)到github的setting / SSH AND GPG KEY / SSH keys
-
最后测试是否关联成功,git bash输入
ssh git@github.com
, 如果提示successfully authenticated则成功
创建本地仓库
- cd到项目目录
git init
初始化git仓库git add .
把所有项目文件添加到提交暂存区git commit -m '提交说明'
把暂存区中的内容提交到仓库
创建远程仓库
本文使用github,创建仓库步骤不赘述,仓库名(也就是项目名)
[resName]
在github中新建一个repository,复制仓库地址:
同步本地仓库到远程仓库
执行命令:
//新建一个repository时会出现下面的代码,直接复制即可
$ git remote add origin https://github.com/CongliYin/CSS.git
注意:
如果出现错误:fatal: remote origin already exists,则执行以下语句:
$ git remote rm origin
再重新执行:
$ git remote add origin https://github.com/CongliYin/CSS.git
即可成功。
最后执行命令:
$ git push origin master
如果出现错误failed to push som refs to…….,则执行以下语句,先把远程服务器github上面的文件拉先来,再push 上去。:
$ git pull origin master
如何同步更新已经存在的或folk之后的项目
项目开发时,为了方便版本管理,许多公司采用git来控制项目版本。简单介绍下:
第一步:将项目从github或者服务器上克隆下来,命令:git clone url。url为项目服务器地址或github地址,如下图所示:
第二步:未修改项目前,查看项目状态,命令:git status。如下图:
由图可以看出来,项目刚更新下来,没有文件更改。
注:查看当前状态,必须进入到项目文件中,而不是本地仓库中。
第三步:修改项目部分文件,再次看项目状态。如下图:
由图上红色文字可以看出,“README.md”被更改。
第四步:将文件修改提交到本地暂存区,命令:git add file,file 为修改文件名。如下图所示:
由图可以看出,修改文件添加到本地暂存区后,颜色变了。
注:每次修改后的文件,都必须添加到本地暂存区后,才能更新到项目上。
第五步:提交当前工作空间的修改内容,命令:git commit -m“修改”,引号里面是提交信息,自己可以填写其他内容。如下图所示:
由图可以看出,提交后再看项目状态,提示没有内容可以提交。
注:提交的时候必须用-m来输入一条提交信息,类似于svn的commit。
第六步:将项目更新到github或服务器,命令:git push。如下图:
项目上传成功。
另外,如果下次还要更新项目,直接git pull即可,因为本地空间和服务器或github的通道通过git clone已经建立。
更新远程代码到本地
查看远程分支
使用如下命令可以查看远程仓库(我这里有一个origin仓库)
$ git remote -v
origin https://github.com/suijingfeng/but_velodyne.git (fetch)
origin https://github.com/suijingfeng/but_velodyne.git (push)
git remote命令会列出每个远程库的简短名字,在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,git默认使用这个名字来标识你所克隆的原始仓库。
从远程获取最新版本到本地
使用如下命令可以在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
$ git fetch origin master:temp
remote: Counting objects: 18,done.
remote: Compressing objects: 100% (6/6),done.
remote: Total 11 。。。。
比较本地仓库与下载的temp分支
使用如下命令来比较本地代码与刚刚从远程下载下来的代码的区别:
$ git diff temp
合并temp分支到本地的master分支对比区别之后,如果觉得没有问题,可以使用如下命令进行代码合并:
$ git merge temp
删除temp分支
如果temp分支不想要保留,可以使用如下命令删除该分支:
$ git branch -d temp
如果该分支的代码之前没有merge到本地,那么删除该分支会报错,可以使用git branch -D temp强制删除该分支。
常见问题解决
1.push时报错不能覆盖远程仓库代码
事实上远程仓库是新建的,里边或许有个README.md,就再没有其他,故直接强制覆盖;-f
:强制覆盖。
git push -uf origin master
2.git remote add origin git@github.com:[githubUerName]/[resName]时报错remote origin already existsorigin别名已经存在
删除origin,然后重试。
git remote rm origin