gitee项目能用SVN拉取吗_使用Git开发维护Github开源项目的一些经验

6bacdd454c592c42c86ce046fca6b3dd.png

Github无法访问/访问慢的经验

github经常会因为一些原因抽风,无法访问,这时候,可以使用gitee同步github项目,然后从gitee拉项目。在gitee导入项目以后,项目名称后面有个同步的图标,可以随时点击与github同步。然后就可以本地git pull同步gitee的代码了。

我的经验是

# 本地origin:master->github/kimmking:master
git clone https:// github.com/kimmking/inc ubator-shardingsphere

然后添加两个远程:

git remote add gitee https:// gitee.com/kimmking/incu bator-shardingsphere
git remote add apache https://gitee.com/apache/incubator-shardingsphere

这样如果github不可用的时候,可以通过gitee操作,然后再可用的时候同步到github;

如果github慢,就更简单的,因为我们每次改动的很少,所以只要同步到了当前最新代码,我们提交commit和push的数据很少,可以git push成功。

分支开发的经验

1、可能同时有几个不同的目的想修改项目代码,所以最好每个修改都在自己的单独分支上,相互不干扰。比如修改一个issue3939,就从当前最新的代码拉一个issue3939的分支,用完pr被merge到apache/master就可以删掉。

git branch -b issue3939

修改完,提交到github并自动创建分支:

git push --set-upstream origin issue3939

2、可以自己在github上fork本项目,这样clone拉下来,默认origin:master -> 自己id:master,然后让这个分支一直跟apache:master同步。例如:

git clone https://github.com/kimmking/incubator-shardingsphere

具体做法,我是本地再添加apache的remote,然后拉到本地为amaster。

git remote add apache https://github.com/apache/incubator-shardingsphere
git fetch apache master:amaster
git checkout amaster
git branch --set-upstream-to=apache/master

每天早上先:

checkout amaster
git pull
git push -f origin amaster:master
checkout master
git pull

这时,本地和origin远程的master,就都和apache/master同步了。随时拉的分支,都是基于最新代码的,pr合并到主干冲突的可能性就最小。

3、如果我们的修改,当天没有提交和pr,建议这么同步。同时执行,

git checkout issue3939
git merge master

把最新的改动合并到我们正在操作的分支上。

一些有用命/Github令

1、git branch -vv,查看当前本地有哪些分支,已经对应的远程分支和当前最后一次提交信息:

$ git branch -vv
  amaster  33acaa6 [apache/master] Abstract visitor determine logic to a central class (#4418)
  gmaster  33acaa6 [gitee/master] Abstract visitor determine logic to a central class (#4418)
* master   33acaa6 [origin/master] Abstract visitor determine logic to a central class (#4418)

带星号的为当前分支。

查看所有分支:

$ git branch -ar
  apache/3.1.0-SNAPSHOT
  apache/4.0.0-RC3-Milestone-0.1
  apache/4.0.1
  apache/4.0.1-release
  apache/dev
  apache/dev-4.x
  apache/docs5.x
  apache/master
  apache/orchestration-5.x
  apache/proxy-with-netty-backend
  apache/sharding-parser-5.x
  apache/sharding-scaling
  apache/sharding-scaling-ui
  gitee/master
  origin/3.1.0-SNAPSHOT
  origin/4.0.0-RC3-Milestone-0.1
  origin/4.0.0-RC3-release
  origin/4.0.1
  origin/HEAD -> origin/dev
  origin/adev
  origin/amaster
  origin/dev
  origin/fix_config_path
  origin/issue3896
  origin/issue3929
  origin/master

2、git log,显示日志

如果想简单的查看,可以让每个commit只显示一行:

$ git log --oneline -10

3、git reset,回滚提交

回滚两个版本,不改变当前修改的代码:

$ git reset --soft head~2

然后可以用git status来查看有哪些变动。

这个办法可以用来压缩多次不合理的、同一个目的的提交,重新变成一次提交。

如果想让代码也改变到2个版本之前的状态,可以把soft改为hard。

如果想把当前修改都未提交的代码回滚到最后一次提交状态,也可以用:

$ git reset --hard head

如果想回滚到某一次具体的提交:

$ git reset --hard 33acaa6 

4、git fetch,拉取远程代码

拉一个具体分支:

$ git fetch apache master:kk01

同步本地仓库和所有远程分支:

$ git fetch --all

5、git-extras,特别推荐一个git命令行插件

MacOS下可以直接用brew安装;

Linux可以yum或apt-get安装。

Windows需要在git clone https://github.com/tj/git-extras

$ install.cmd "C:git" # 假设C:git 为git安装目录

具体可以参考:https://github.com/tj/git-extras/blob/master/Installation.md

然后就可以使用一些很好玩的命令了:

git summary #显示项目的统计信息,比如每个人贡献比例
git info #跟svn info一样
git pr 3939 apache #从github/apache下把pr#3939拉到本地成为一个分支,review代码特别有用
等等。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值