ILD

git checkout some lines of a source file
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2024-4-17 站点:Inside Linux Development

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.c
diff --git a/src/api/helper.c b/src/api/helper.c
index 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.c
diff --git a/src/api/helper.c b/src/api/helper.c
index 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.c
diff --git a/src/api/helper.c b/src/api/helper.c
index 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};


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.