代码之家  ›  专栏  ›  技术社区  ›  Siggi

使用git移动文件时丢失历史记录

git
  •  1
  • Siggi  · 技术社区  · 2 年前

    在阅读了一个问题的答案后 question 在这里的“移动git跟踪的文件”中,如果移动git正在跟踪的文件,历史记录不应受到影响。 然而,这不是我的经验,那么我做错了什么?这是我的控制台日志

    C:\scripts\Python\Cyren>mkdir archive
        
    C:\scripts\Python\Cyren>dir
     Volume in drive C has no label.
     Volume Serial Number is 7C59-18A2
    
     Directory of C:\scripts\Python\Cyren
    
    08-May-22  22:44    <DIR>          .
    08-May-22  22:44    <DIR>          ..
    08-May-22  22:43    <DIR>          archive
    31-Mar-22  19:11             1,878 categories.csv
    31-Mar-22  17:57             1,886 categories.txt
    30-Mar-22  21:19            14,557 categories.xlsx
    29-Apr-22  16:23            19,274 CyrenDopplerAPI.py
    06-May-22  12:35            14,585 CyrenDopplerEnv.py
    29-Apr-22  16:16            17,672 CyrenSample.py
    
    C:\scripts\Python\Cyren>git log CyrenDopplerAPI.py
    commit 4f440a2c132053ebe9c76a16e90abc1dd845d262
    Author: Siggi@Reba <siggi@supergeek.us>
    Date:   Thu May 5 15:38:58 2022 +0000
    
        rename
    
    C:\scripts\Python\Cyren>git mv CyrenDopplerAPI.py archive
    
    C:\scripts\Python\Cyren>dir
     Volume in drive C has no label.
     Volume Serial Number is 7C59-18A2
    
     Directory of C:\scripts\Python\Cyren
    
    08-May-22  22:48    <DIR>          .
    08-May-22  22:48    <DIR>          ..
    08-May-22  22:48    <DIR>          archive
    31-Mar-22  19:11             1,878 categories.csv
    31-Mar-22  17:57             1,886 categories.txt
    30-Mar-22  21:19            14,557 categories.xlsx
    06-May-22  12:35            14,585 CyrenDopplerEnv.py
    05-May-22  18:24               109 Infile.txt
    06-May-22  12:35    <DIR>          Logs
                   5 File(s)         33,015 bytes
                   4 Dir(s)  484,630,781,952 bytes free
    
    C:\scripts\Python\Cyren>git status
    On branch master
    Your branch is up to date with 'origin/master'.
    
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            renamed:    CyrenDopplerAPI.py -> archive/CyrenDopplerAPI.py
            renamed:    CyrenSample.py -> archive/CyrenSample.py
    C:\scripts\Python\Cyren>git commit -m "cleanup and archiving"
    [master 1240039] cleanup and archiving
     2 files changed, 0 insertions(+), 0 deletions(-)
     rename Cyren/{ => archive}/CyrenDopplerAPI.py (100%)
     rename Cyren/{ => archive}/CyrenSample.py (100%)
    
    C:\scripts\Python\Cyren>git status
    On branch master
    Your branch is ahead of 'origin/master' by 1 commit.
      (use "git push" to publish your local commits)
    
    nothing to commit, working tree clean
    
    C:\scripts\Python\Cyren>git push
    Enumerating objects: 6, done.
    Counting objects: 100% (6/6), done.
    Delta compression using up to 8 threads
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 454 bytes | 454.00 KiB/s, done.
    Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
    remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
    To https://github.com/siggib007/python.git
       e85489f..1240039  master -> master
    
    C:\scripts\Python\Cyren>git log archive\CyrenDopplerAPI.py
    commit 1240039a7e93993027f22979908ee4a9837a5474 (HEAD -> master, origin/master)
    Author: Siggi@Reba <siggi@supergeek.us>
    Date:   Sun May 8 22:49:03 2022 +0000
    
        cleanup and archiving
    

    这个 git log 在搬家前什么都没显示。我认为这意味着它被删除了。

    顺便说一句,这里是相应的github回购协议的链接 https://github.com/siggib007/python/tree/master/Cyren

    此外,这不是一个孤立的事件,这是我的consolelog复制了一个问题,我已经注意到了几次。

    1 回复  |  直到 2 年前
        1
  •  1
  •   John Kugelman Michael Hodel    2 年前

    使用 git log --follow 跟踪重命名。

    --follow
    

    继续列出重命名后的文件历史记录(仅适用于单个文件)。

    通过设置 log.follow 配置选项 true :

    log.follow
    

    如果 符合事实的 , git log 就好像 --follow 选项是在给出单个选项时使用的。这与 --跟随 ,也就是说,它不能用于跟踪多个文件,并且在非线性历史记录上也不能很好地工作。

    要将其设置为运行:

    $ git config --global log.follow true