git checkout一个文件的时候,可以把文件恢复到某个版本,但是我们有时候,改了一个文件,比如删除了一个函数,添加了另外一个函数,我们想把删除的函数加回来,这时候,如果直接checkout,那么新加的函数会被删除。
当前改动:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40  | $ git diff api/helper.cdiff --git a/src/api/helper.c b/src/api/helper.cindex fe4bf5b..f12060c 100644--- a/src/api/helper.c+++ b/src/api/helper.c@@ -171,19 +171,6 @@ const char *find_kv(struct key_val *kv, const char *key)        return NULL; }-const char *ts_str()-{-       static char ts[24];-       struct timespec sp;-       uint64_t v;-       clock_gettime(CLOCK_REALTIME, &sp);-       v = sp.tv_sec;-       v *= 1000;-       v += sp.tv_nsec / 1000000;-       sprintf(ts, "%" PRIu64, v);-       return ts;-}- int upper_hex(const char *in, int len, char *out, int sz) {        int i;@@ -480,6 +467,17 @@ int ts()        return (int)ts.tv_sec; }+int64_t tsms()+{+       struct timespec sp;+       int64_t v;+       clock_gettime(CLOCK_REALTIME, &sp);+       v = sp.tv_sec;+       v *= 1000;+       v += sp.tv_nsec / 1000000;+       return v;+}+ | 
我想把ts_str()保留回来,可以使用-p选项,没处改动,都会让你选择如何处理,y是恢复,n是去掉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45  | $ git co -p api/helper.cdiff --git a/src/api/helper.c b/src/api/helper.cindex fe4bf5b..f12060c 100644--- a/src/api/helper.c+++ b/src/api/helper.c@@ -171,19 +171,6 @@ const char *find_kv(struct key_val *kv, const char *key)        return NULL; }-const char *ts_str()-{-       static char ts[24];-       struct timespec sp;-       uint64_t v;-       clock_gettime(CLOCK_REALTIME, &sp);-       v = sp.tv_sec;-       v *= 1000;-       v += sp.tv_nsec / 1000000;-       sprintf(ts, "%" PRIu64, v);-       return ts;-}- int upper_hex(const char *in, int len, char *out, int sz) {        int i;(1/2) Discard this hunk from worktree [y,n,q,a,d,j,J,g,/,e,?]? y@@ -480,6 +467,17 @@ int ts()        return (int)ts.tv_sec; }+int64_t tsms()+{+       struct timespec sp;+       int64_t v;+       clock_gettime(CLOCK_REALTIME, &sp);+       v = sp.tv_sec;+       v *= 1000;+       v += sp.tv_nsec / 1000000;+       return v;+}+ int time_valid(const char *time_str, const char *format, const int period) {        struct tm tm = {0};(2/2) Discard this hunk from worktree [y,n,q,a,d,K,g,/,e,?]? n | 
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  | $ git diff api/helper.cdiff --git a/src/api/helper.c b/src/api/helper.cindex fe4bf5b..5d9c586 100644--- a/src/api/helper.c+++ b/src/api/helper.c@@ -480,6 +480,17 @@ int ts()        return (int)ts.tv_sec; }+int64_t tsms()+{+       struct timespec sp;+       int64_t v;+       clock_gettime(CLOCK_REALTIME, &sp);+       v = sp.tv_sec;+       v *= 1000;+       v += sp.tv_nsec / 1000000;+       return v;+}+ int time_valid(const char *time_str, const char *format, const int period) {        struct tm tm = {0}; |