`
杨俊华
  • 浏览: 96116 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
阅读更多

 

1.登录GitHub账号,将HBase tm-5的版本做一份fork

Fork后,就相当于从原来的版本中copy一份,之后,就可以在上面做任何的改动而不影响他人了。

2. 配置GitHub

这里,需要将本地机器的ssh public key设置到GitHub的用户中。详细请看

http://help.github.com/msysgit-key-setup/

3. 我们可以参考之前讨论过的集成管理工作流的方式,由一个人统一将代码提交到“blessed”仓库中。其他多个开发人员拷贝代码库,将改动推送到他们各自独立的代码库中,并通知集成人员去获取他们的改动。

Blessed repository就是远端的代码库,有一台机器A专门负责做集成,B 和C会将自己的代码改动推送到public repository中,通知A来更新。

需要搞清楚的问题

1. 如何从GitHub上获取代码

mkdir hbase-tm5

git clone git@github.com:honeydownloader/hbase-private.git

为GitHub上远端的代码库取名为hbase-tm5.

git remote add hbase-tm5 git@github.com:honeydownloader/hbase-private.git

git fetch hbase-tm5

2. 如何对代码进行更改

假定其中有一个文件名为main.c,我们对其修改。

之后,按照这样的步骤。

1)      git add main.c

2)      git diff 并git status 查看确认修改

3)      输入开发日志。

你也可以用

git commit –a 直接提交所有修改。但是不能将新增的文件和文件夹加入进来。

3. 如何管理分支

git branch experimental  —创建实验分支experimental

git branch   ——列出所有分支

git checkout experimental  ——切换到expreimental分支

之后你就可以在该分支上工作了。

4. 如何处理冲突

如果在两个分支上都进行了修改,现在在主干道上,要合并分支到主干道(master分支)。

git merge experimental

然而,如果两个修改有冲突(对同一个文件进行了不同的修改,git会提示冲突),如:

Auto-merged main.c

CONFLICT (content): Merge conflict in main.c

Automatic merge failed; fix conflicts and then commit the result.

这里,你需要人工修改出现冲突的文件。修改好了,再提交。

在你解决了冲突之后,你可以使用如下步骤来提交:

第一步:git add filename.txt

第二步:git commit

你可以通过gitk,看到修改的整体情况。

删除分支也很简单。

git branch -d experimental

-d 表示“在分支已经合并到主干后删除分支”

-D表示“不论如何都删除分支”

5. 如何将代码推送到GitHub

git push hbase-tm5

6.  局域网内的用户之间如何协同工作。

首先,搞懂Git的代码库在局域网内是如何定位的。

这和我们scp 拷贝的方法类似。比如harry想从john的机器中拷贝代码,只需要:

git remote add johnGit john@{$JOHN_IP}:{$src_dir}

注意,需要开启ssh服务,在ubuntu下可以通过sudo apt-get install openssh-server 启动

git clone johnGit

这样,harry就获得了john 的源代码。

John做了些改动,口头通知harry,harry可以用两种方法获得改动的代码。

Harry信任John 的改动,将john的工作的tm-5分支合并到我的当前的分支上

git pull johnGit tm-5

如果Harry 不能完全信任john 的改动,可以用fetch命令先将john tm-5分支的改动提取到a分支中

git fetch johnGit tm-5:a

之后,查看当前分支和john 改动的区别

git diff a

如果确认改动正确,再做merge

git merge a

最后,删除掉a分支

所以,pull命令相当于fetch + merge

这样,harry就可以和john进行代码的获取,更新等工作了。

如何push自己的代码

harry想把代码push 到john的机器的代码仓库中(这里把john的机器作为中心代码服务器),那么首先在john的机器上要修改配置。

在john 的代码仓库中,修改: git/config

[receive]
denyCurrentBranch = ignore

这样,harry可以 git push ,将代码push 到john的机器中。

在john的机器上,不会马上看到push的结果,如果要立即看到,需要

git reset --hard

7.  协同工作之二 ,分支管理

git clone会获得远端服务器代码的所有分支。如果你仅仅想要一个分支,可以用git pull获得。

比如,harry目前没有任何john的代码。他可以这样操作。

mkdir $project_dir

cd $project_dir

git init

git remote add johnGit john@{$JOHN_IP}:{$src_dir}

git pull johnGit johnbranch:harrybranch.   这里,harry可以将john的一个分支“johnbranch”pull到本地的“harrybranch”.

由于是初始环境,git还是会在本地生成一个master分支,用git branch你会看到

harrybranch

*master

看来git 还是将master作为默认分支,你可以

git checkout harrybranch

git branch -d master

这样子,你就仅仅有一个harryBranch 分支了。

harry如果想删除远端的分支怎么办?

git push johnGit :johnBranch

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics