如何保存,但不跟踪GitHub上的文件?

时间:2015-09-16 03:14:12

标签: git github

我有一个共享初始化脚本,其中包含我希望与我的团队共享的特定于用户的内容作为模板,但并不是每个人都会继续使用他们的说法,自己的电子邮件地址进行更新。

  echo "myname" > testfile
  git add testfile
  git commit -m "Add a user-specific file"
  git push push origin master

  echo "testfile" >> .gitignore
  git add .gitignore
  git commit -m "Ignore user-specific file"

  git rm --cached testfile
  # Showing that testfile is staged as deleted!

2 个答案:

答案 0 :(得分:2)

我有一个非常相似的问题,我有一些"易于构建"我想在树中提供的shell脚本,我希望人们可能会改变,但我不希望他们在工作时提交更改。

我在项目中解决这个问题的方法是使用git update-index --assume-unchanged来保护构建脚本(在适当的时候)。

我在存储库的根目录中创建了两个bash脚本git_assume_build_scripts_unchanged.shgit_undo_assume_build_scripts_unchanged.sh,它们看起来像这样:

git_assume_build_scripts_unchanged.sh

#!/bin/bash

set -e

# Cause git to assume that all build scripts are unchanged, so that you can use "git add ." syntax to commit
# without committing local changes to the build scripts

git update-index --assume-unchanged *build*.sh
git update-index --assume-unchanged Toolchain-*.cmake
git update-index --assume-unchanged set_*_env_vars.sh

git_undo_assume_build_scripts_unchanged.sh

#!/bin/bash

set -e

# Cause git to assume that all build scripts are unchanged, so that you can use "git add ." syntax to commit
# without committing local changes to the build scripts

git update-index --no-assume-unchanged *build*.sh
git update-index --no-assume-unchanged Toolchain-*.cmake
git update-index --no-assume-unchanged set_*_env_vars.sh

这个想法是,如果有人需要修改本地计算机的构建脚本,或修改cmake工具链文件或类似文件,他们就会运行第一个脚本。 git update-index --assume-unchanged导致git标记文件,因此如果它们在索引中被更改,即使它们被跟踪,git也不会检测到这些更改,并且在使用git add .时不会暂存这些更改或类似。

如果有人需要撤消更改,他们可以使用undo脚本。

答案 1 :(得分:0)

你可能正在寻找的是:

git update-index --assume-unchanged <file>

然后,当你想要与之相反时,你可以这样做:

git update-index --no-assume-unchanged <file>

这将保留repo上的文件与最后一个版本之前 - 保持文件不变。

希望有所帮助,

干杯