RT.
使用github在Linux下配合IDE对工程进行代码备份和版本控制。
我的工作环境是LAMP+PHPstorm IDE。
1:搭建github本地工作环境
在linux下安装github,
$sudo apt-get install git
$git config --global user.name XXX 用户名
$git config --global user.email XXX 用户邮箱
2:创建github新repository
在网页版的github主页上新建一个repository,记住名称
cd进入项目的文件目录下,执行初始化命令
$git init
3:commit和push
新建文件的配置说明
$touch README
将改动提交到缓存区中
$git add -A
$git commit -m "initial commit"
push该分支到github代码库
$git push origin master
4:pull
由于我有两台电脑,一台在办公室,另外一台在宿舍。我希望能够通过github代码托管来实现我在办公室和宿舍的电脑的代码同步。
首先在每一台电脑上开始一天的工作之前,要先将本地的代码库与服务器上的代码库进行一个同步。
$git pull origin master
但是这个过程并不是总是一帆风顺,就像我的工作环境一样。
5:关于多台电脑上IDE环境配置与github之间的同步问题
我使用的是两台电脑,都是使用LAMP的服务器环境,同时都使用PHPStorm IDE进行网站开发。在办公室的电脑新建了项目并且push了之后,我回到宿舍,使用git clone这个命令将服务器上的项目拷贝到本地。
$git clone https://github.com/XXX用户名/xxx项目名.git
在宿舍的电脑上进行代码修改后,提交的时候总是会提示:
自动合并 .idea/workspace.xml
冲突(内容):合并冲突于 .idea/workspace.xml
自动合并失败,修正冲突然后提交修正的结果。
由于我并不是老手,所以这个问题捣鼓了好久,一直查到国外stack overflow这些网站,他们给出的答案还是不能够让我满意。后来发现,github有一个.gitignore的文件,通过这个文件中配置,就可以在提交commit的时候忽略来自workspace.xml的变化。
具体的原因参考这篇文章(http://stackoverflow.com/questions/11968531/what-to-gitignore-from-the-idea-folder)以及这篇(http://stackoverflow.com/questions/13764869/phpstorm-git-attempts-to-commit-workspace-xml),大概的意思是,现在主流的IDE代码编辑器都会有自己的工作区配置文件,但是这些配置文件不同的电脑上又是不同的,git如果把所有的文件都提交的话,就会导致一些无法自动merge的错误。需要人工进行处理。
$cd 项目文件目录下
$touch .gitignore
$vim .gitignore
#在该文件下新增对.idea/workspace.xml的忽略规则
.idea/workspace.xml
修改了.gitignore之后,commit一下再push上服务器,这样子服务器上就会没有了.idea/workspace.xml这个配置文件了。
然后,在公司的电脑上,我先删除掉.idea/workspace.xml这个文件。
$git rm --cached .idea/workspace.xml
$ git update-index --assume-unchanged .idea/workspace.xml
这两个方法只能够选择一种,如果先执行删除再执行忽略,会导致一个fatal error。
fatal: 路径规则 '.idea/workspace.xml' 未匹配任何文件
然后再在项目下执行git pull更新一下目录。会发现这一次是不会提示之前在宿舍电脑上出现的问题了。
同样,在本地进行push,也不会出现提交不了的错误。
error: Your local changes to the following files would be overwritten by merge:
.idea/workspace.xml
Please, commit your changes or stash them before you can merge.
Aborting
6:分支和merge
git工具的另外一个功能是,分支。可以通过创建分支来使得项目独立于master主线,开发完成后再执行merge进行合并。而在开发过程中完全不影响主线。
7:参考
a. 惊艳的教程 http://rogerdudler.github.io/git-guide/index.zh.html
b. Git配合IDE http://blog.csdn.net/mad1989/article/details/8902340
c. Git详解 http://www.open-open.com/lib/view/open1328069609436.html
d. Git操作 http://www.open-open.com/lib/view/open1325032506874.html