【问题标题】:Git Backup untracked filesGit 备份未跟踪的文件
【发布时间】:2021-02-13 04:36:33
【问题描述】:

我有一个由 git 管理的个人存储库。在那里,我有一个小项目,其中包含我已经提交的跟踪文件和一些我想在不久的将来添加的未跟踪文件。

那些未跟踪的文件在我的本地计算机中。我没有备份。我想知道从我的开发分支中为未跟踪的文件创建新分支是否是一种好习惯(我有 master、develop 和我正在开发的每个功能)。

git checkout -b myuntrackedfiles develop
git add <files> (each untracked file)
git commit -m "Backup"
git push origin myuntrackedfiles.

然后,当我想合并其中一个未跟踪的文件时,我只需将它们从未跟踪的存储库复制到所需的分支

git checkout myfeature-nnn
git show myuntrackedfiles:myfile > myfile
git show myuntrackedfiles:myfile2 > myfile2
...
git commit -m "Adding untracked files"

git push origin feature-nnn

最后,我可以将它们从未跟踪的分支中删除

    git checkout myuntrackedfiles
    git reset --soft HEAD~1
    git reset HEAD myfile1
    git reset HEAD myfile2
    git commit --amend
    git push origin myuntrackedfiles

并在本地删除未跟踪的文件。

问题是:是否存在一种更好、更有效的方法来完成这个过程,或者这个方法是否足够好?

【问题讨论】:

  • 这些未跟踪的文件是什么?他们的目的是什么?
  • 源文件最终会被添加到项目中,但不是现在。 “正在进行中”的文件,但还不足以被视为提交。

标签: git github git-untracked


【解决方案1】:

Git 不是备份工具。最佳实践是提交项目运行所需的文件。请注意,这些文件不需要修改即可让其他开发人员运行或让您在不同的机器上运行。此类更改应隔离到可以在代码之外设置的配置,例如通过环境变量或应用程序在运行时可以读取的配置文件。

您应该避免提交大文件,例如应用程序使用的数据。相反,您可以使用 Drop Box、OneDrive 或 Google Drive 等工具进行备份。

【讨论】:

  • 我的场景是单一开发者。未跟踪的文件是我尚未完成以考虑提交的文件或将添加到项目但不在此阶段的文件。有时我会为一个项目提出一个想法,但这只是一个需要修改的部分。我不想丢失代码。如果它未被跟踪意味着它在本地笔记本电脑或 PC 上。 Google Drive 和 Dropbox 都不错。我曾经使用它们作为备份,因为有时我在几台机器上工作。但为此使用一个工具的想法似乎更好。
  • @RogerManich 对于任何正在进行的工作,创建一个新分支。您可以在此分支上提交未完成的文件。完成工作后,将分支合并到主分支。这更多是为了跟踪正在进行的工作,而不仅仅是备份文件,这正是 git 的用途。
  • @RogerManich 每个提交不一定是完成的功能,但它应该编译和运行。每次提交也应该通过测试。
【解决方案2】:

好吧,因为问题是未跟踪的文件...

$ git ls-files --others --exclude-standard -z |\
xargs -0 tar rvf ~/backup-untracked.zip

Source opensource.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 2015-01-11
    • 2012-01-18
    • 2022-01-01
    • 2021-03-17
    • 2011-07-09
    • 2018-07-21
    • 2017-12-30
    相关资源
    最近更新 更多