Git remote 及 社区提交操作
    
注:社区提交常用的git命令和操作
    
    
    git remote 本地仓库和远程仓库 repository
   
    
    
    git remote -vt
   
查看远程仓库有几个
    
    
    git remote add
   
添加远程仓库
    本地仓库和远程仓库一般配合完成,通过
    
     git remote add [远程仓库名] 远程仓库地址
    
    来添加当前本地仓库的远程仓库,这样本地仓库会知道当
    
     git push
    
    的时候会往那个远程提交代码。
   
    如果
    
     git push
    
    不加参数,默认就是
    
     git push origin [当前分支名]
    
    之前操作,第一次从远程拉取,推送的时候
    
     git push --set-upstream origin [b分支名]
    
    ,建立了本地仓库和远程仓库的关联,以后只需要
    
     git push
    
    就可以完成本地像远程的推送了。
   
    
    
    git remote add local [本地仓库路径]
   
    
     git remote add local ~/home/code/nspace/nuttx/
    
    
    将git的远程分支设置为本地文件系统的位置,这样可以通过
    
     commit-id
    
    进行
    
     cherry-pick
    
    操作了。之前需要
    
     git fetch local
    
    保证更新了local仓库的commit-id。
   
    
    
    git remote rm [远程仓库名]
   
    
     git remote add local ~/home/code/nspace/nuttx/
    
    
    
     git remote -v
    
    
    
     git remote rm local
    
    
    
     git remote -v
    
    
    
    git fetch
   
    
    
    git fetch
   
    更新 git remote 中
    
     所有远程仓库
    
    所包含分支的最新
    
     commit-id
    
    ,将其记录到
    
     .git/FETCH_HEAD
    
    中
   
    
    
    git fetch [remote_repository]
   
    更新名称为remote_repository的远程仓库上的所有branch的最新commit-id,记录到
    
     .git/FETCH_HEAD
    
    中
   
    
    
    git fetch [remote_repository] [remote_branch_name]
   
更新名称为remote_repository的远程仓库上的remote_branch_name分支
    
    
    FETCH_HEAD
   
是一个版本链接,记录在本地的一个文件中,指向目前已经从远程仓库取下来的分支的末端版本
    
    
    ?
   
所以有时候需要使用fetch对远程仓库更新
    
    
    git cherry-pick
   
    
     git cherry-pick [commit-id]
    
    
    
    git commit
   
    
    
    git commit -s -m “xxx”
   
提交时添加签名信息
    
    
    
     git commit –amend
    
   
    修改提交
    
    
     https://www.jianshu.com/p/7d40838883af
    
   
    
    
    操作Step
   
    创建github账号,添加ssh-key,fork某个仓库(apach/nuttx为例),本地git已经配置好了前提
    
    本地从自己的github克隆fork的代码
    
    
     git clone git@github.com:username/nuttx.git
    
    
    
     cd nuttx
    
    
    
     git fetch
    
    
    
     git remote -v
    
    查看
    
    添加社区仓库到本地的远程仓库
    
    
     git remote add apache https://github.com/apache/nuttx.git
    
    
    
     git remote -v
    
    查看
    
    获取clone后的更新
    
    
     git fetch origin
    
    
    
     git fetch apache
    
    
    更新下本地及github fork的代码
    
    
     git branch
    
    
    
     git checkout master
    
    
    
     git fetch apache
    
    
    
     git rebase apache/master
    
    *** [快进master至apache/master]
    
    
     git branch -vv
    
    [*master commit-id [origin/master: ahead 628]]
    
    
     git add .
    
    
    
     git commit -s
    
    [位于分支master,领先origin/master共628个提交,使用git push来发布本地提交]
    
    
     git push origin master
    
    [本地,远程github fork的都和社区里的一样了]
    
    添加本地的代码,进行cherry-pick
    
    
     git remote add local ~/code/nspace/nuttx/
    
    
    
     git fetch local
    
    
    本地需要创建一个新的提交分支,不好在master进行
    
    
     git branch --track my_dev apach/master
    
    
    
     git checkout my_dev
    
    
    
     git cherry-pick [local本地代码里的某些提交id]
    
    把local目录下的本地开发分支里的某些commit拿出来cherry-pick过来
    
    
     git push origin my_dev
    
    提交到了自己github fork仓库下的my_dev分支里
    
    在github fork仓库下提出request
    
    
     pull request
    
    
    
    参考链接
   
 
