IDE配合github进行工程代码备份与版本控制

RT.

使用github在Linux下配合IDE对工程进行代码备份和版本控制。

我的工作环境是LAMP+PHPstorm IDE。

1:搭建github本地工作环境

在linux下安装github,

$sudo apt-get install git

安装完成之后对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

将改动commit到HEAD中

$git commit -m "initial commit"

push该分支到github代码库

$git push origin master

4:pull

由于我有两台电脑,一台在办公室,另外一台在宿舍。我希望能够通过github代码托管来实现我在办公室和宿舍的电脑的代码同步。

首先在每一台电脑上开始一天的工作之前,要先将本地的代码库与服务器上的代码库进行一个同步。

$git pull origin master

调用这个命令实际上等同于使用两个命令一个是fetch,一个是merge。将远程服务器上的代码fetch下来然后再与本地的代码进行merge操作。

但是这个过程并不是总是一帆风顺,就像我的工作环境一样。

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停止对.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

猜你喜欢

转载自blog.csdn.net/killzero/article/details/38729919