创建repository
可以在Github上无限制使用public repository进行源代码管理,创建一个repository很简单,不多说了。
获取代码到本地
首先要安装Git,然后使用命令把代码从Github上拷贝到本地:
git clone https://github.com/<username>/<repository_name>
如果是第一次使用,自己的repository还是空的,同样可以使用remote进行链接
git remote add origin https://github.com/username/repository_name.git
提交更新到服务器
如果我们要新增或者更新一个文件,比如test.html。我们要先确保这个test.html已经存在,然后用git add 进行添加标记,表示这个文件已经改动或者这个文件是新增文件。
git add test.html
git commit -m "代码提交信息"
如果没有commit,那么添加的文件只是放在一个暂存区。 commit后改动才算真正写到了本地,但是改动还没有上传的服务器上去。如果添加多个文件,可以用
git add *
因此,即使是commit了,新增的文件也还没有上传到Github上去。需要用push把改动上传到Github上去。 会提示你输入用户和密码
git push origin master
这个"master",是指分支的名字。默认情况下就只有"master"这个主分支。 "orgin"是在我们从Github上clone代码到本地的时候,默认的源的名字。可以理解为"orgin"就是我们当前正在工作的源代码。 上面的意思就是,把我们当前的代码("orgin")的改动推送到服务器上的"master"分支。
删除一个文件和添加一个文件的步骤类似。首先使用git rm删除一个文件,并且commit。注意,直接在目录下把文件删掉是没有用的,必须用git rm删除文件。
git rm test.html
git commit -m "代码提交信息"
然后在把改动push到服务端"git push origin master"。
从服务器获取更新
git status 是一个很有用的命令,用来查看本地repository的状态,它会显示文件的新增/修改/删除的状态。
如果服务端有更新,git status也会有相应的提示。
D:\Dev\Github\bid>git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)nothing to commit, working directory clean
上面的显示的意思就是,有一个更新还没有反应到我本地来,可能是别人往server上checkin了一点东西。 使用git pull命令拿这些更新到本地来。
D:\Dev\Github\bid>git pull
Updating abf79f6..db7b6e3
Fast-forward
routes.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
如果服务端和本地文件都做了改动,使用git pull时就会提示冲突:
D:\Dev\Github\bid>git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://github.com/*****/***
db7b6e3..211ff7f master -> origin/master
Updating db7b6e3..211ff7f
error: Your local changes to the following files would be overwritten by merge:
routes.js
Please, commit your changes or stash them before you can merge.
Aborting
这时候推荐手动检查一下文件的版本,到底需要哪个。有一个git mergetool可以帮助merge code。
使用git checkout可以丢弃掉本地的改动,然后使用git pull去拿server上的最新更新。
比如,我想丢弃一个文件的所有改动:
git checkout routes.js
然后再使用git pull,就可以拿到server上的版本的代码了。