怎么在github上拉取java项目_git统计每个人的代码行数


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

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

我的经验是

# 本地origin:master->github/kimmking:master
git clone https:// /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:///kimmking/incubator-shardingsphere


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


git remote add apache https:///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:///tj/git-extras


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


具体可以参考:https:///tj/git-extras/blob/master/

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

git summary #显示项目的统计信息,比如每个人贡献比例 
  
git info #跟svn info一样   
git pr 3939 apache #从github/apache下把pr#3939拉到本地成为一个分支,review代码特别有用   
等等。。。