https://github.com/git-for-windows/git/issues/1854

https://github.com/git-for-windows/git/pull/1902/files

分了2步操作,第一步是git reset,第二部是git cherry-pick --continue

https://github.com/git-for-windows/git/blob/master/CONTRIBUTING.md

根据contributing.md,clone源代码。然后切换到vs/master分支。

commit

查看commit.c中的源代码中的prepare_to_commit函数,查看call hierarchy。(SHA-1: 66104e01a6ac313a8b9991d14658ca850b53598a)

merge.c中的cmd_merge函数(1274行),调用commit.c中的cmd_commit函数,

  1. ret = cmd_commit(nargc, nargv, prefix);

commit.c中的cmd_commit函数(1584行),调用commit.c中的prepare_to_commit函数

  1. if (!prepare_to_commit(index_file, prefix,
  2. current_head, &s, &author_ident)) {
  3. rollback_index_files();
  4. return ;
  5. }

merge.c源码中1257行

  1. if (abort_current_merge) {
  2. int nargc = ;
  3. const char *nargv[] = {"reset", "--merge", NULL};
  4.  
  5. if (orig_argc != )
  6. usage_msg_opt(_("--abort expects no arguments"),
  7. builtin_merge_usage, builtin_merge_options);
  8.  
  9. if (!file_exists(git_path_merge_head(the_repository)))
  10. die(_("There is no merge to abort (MERGE_HEAD missing)."));
  11.  
  12. /* Invoke 'git reset --merge' */
  13. ret = cmd_reset(nargc, nargv, prefix);
  14. goto done;
  15. }

cherry-pick

builtin\revert.c  第224行

int cmd_cherry_pick(int argc, const char **argv, const char *prefix)

reset

builtin\reset.c  第287行

int cmd_reset(int argc, const char **argv, const char *prefix)

在merge.c中有一个地方在调用。这一块代码可以参考

  1. if (abort_current_merge) {
  2. int nargc = ;
  3. const char *nargv[] = {"reset", "--merge", NULL};
  4.  
  5. if (orig_argc != )
  6. usage_msg_opt(_("--abort expects no arguments"),
  7. builtin_merge_usage, builtin_merge_options);
  8.  
  9. if (!file_exists(git_path_merge_head(the_repository)))
  10. die(_("There is no merge to abort (MERGE_HEAD missing)."));
  11.  
  12. /* Invoke 'git reset --merge' */
  13. ret = cmd_reset(nargc, nargv, prefix);
  14. goto done;
  15. }

git源码阅读的更多相关文章

  1. ng2048源码阅读

    ng2048源码阅读 Tutorial: http://www.ng-newsletter.com/posts/building-2048-in-angularjs.html Github: http ...

  2. LevelDB(v1.3) 源码阅读之 Arena(内存管理器)

    LevelDB(v1.3) 源码阅读系列使用 LevelDB v1.3 版本的代码,可以通过如下方式下载并切换到 v1.3 版本的代码: $ git clone https://github.com/ ...

  3. LevelDB(v1.3) 源码阅读之 Slice

    LevelDB(v1.3) 源码阅读系列使用 LevelDB v1.3 版本的代码,可以通过如下方式下载并切换到 v1.3 版本的代码: $ git clone https://github.com/ ...

  4. kubernetes源码阅读及编译

    kubernetes源码阅读 工欲善其事,必先利其器.在阅读kubernetes源码时,我也先后使用过多个IDE,最终还是停留在IDEA上. 我惯用的是pycharm(IDEA的python IDE版 ...

  5. [strongswan][autoconf][automake][cento] 在CentOS上编译strongswan git源码时遇到的autoconf问题

    编译strongswan的git源码问题 1. 概述 首先,我们想要通过源码编译strongswan.当满足以下条件时,通常你会遇见此问题: 源码时通过git clone的得来的,而不是官网下载的源码 ...

  6. Settings-Sync插件源码阅读

    一.介绍 请参考官网: https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync 二.源码目录详解 Ima ...

  7. gogs 源码阅读笔记 001

    gogs 源码阅读笔记 001 gogs项目相当不错,本笔记实际是基于gogs fork版本 git-122a66f. gitea (gitea版本由来)[https://blog.gitea.io/ ...

  8. git 源码学习(init-db) 提交版本号 083c516331

    写在前面的废话: 学完git之后,还是感觉云里雾里的,于是乎,就想到了通过学习git源码,来加深git的熟练度,同时学习一下c语言编程. git源码学习,逐步分析 这篇帖子是逐步分析git源码的,将g ...

  9. Kubernetes 学习(八)Kubernetes 源码阅读之初级篇------源码及依赖下载

    0. 前言 阅读了一段时间 Golang 开源代码,准备正式阅读 Kubernetes 项目代码(工作机 Golang 版本为 Go 1.12) 参照 <k8s 源码阅读> 选择 1.13 ...

随机推荐

  1. android 打开系统相机,

    1.第一步在androidmanifest.xml中注册 <uses-permission android:name="android.permission.WRITE_EXTERNA ...

  2. Java-小技巧-002-String 转 long

    1.转化 long l = Long.parseLong([String]); 相当于 long l = Long.parseLong([String],10); long l = Long.valu ...

  3. 文件上传 - iframe上传

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. union 类型(即sum types)在golang语言中的实现

    http://www.jerf.org/iri/post/2917 Sum Types in Go posted Jun 02, 2013 in Programming, Golang, Haskel ...

  5. nginx 11个处理阶段 && nginx lua 8个处理阶段

    1. nginx 11 个处理阶段 nginx实际把请求处理流程划分为了11个阶段,这样划分的原因是将请求的执行逻辑细分,各阶段按照处理时机定义了清晰的执行语义,开发者可以很容易分辨自己需要开发的模块 ...

  6. spring boot 自定义过滤器链

    spring boot 会按照order值的大小,从大到小的顺序来依次过滤. 贴下代码: package com.osp.ucenter; import org.springframework.boo ...

  7. Centos 集群配置SSH免登陆脚本

    首先编写脚本生成集群服务器列表: hostsList.sh #!/bin/bash preIp="11.11.225." pwd="dyj2017" for i ...

  8. loadrunner怎么打印接口返回的参数

    //首先使用web_reg_save_param方法保存服务器返回的参数,如下: web_reg_save_param ("S_respond","LB=",& ...

  9. iOS 网易彩票-4设置模块一

    概述 基本上,每一款APP都有相应的设置模块.怎么设置才能更灵活和通用呢,这也是大家一直思考的.下面说说在网易彩票中,设置模块的设置思想. 基本上有三种方案: static cell(呆板,完全没有动 ...

  10. Javascript--运算符判断成绩运算

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...