git - 为已删除的文件创建模式100644

时间:2017-04-10 11:03:17

标签: git

这是我的预提交钩子:

 holder.likeButton.setBackgroundColor(Color.WHITE);
 holder.likeButton.setOnClickListener(new View.OnClickListener() {
        ValueAnimator buttonColorAnim = null;

        @Override
        public void onClick(View v) {
            if(buttonColorAnim != null){
                buttonColorAnim.reverse();
                buttonColorAnim = null;
              //here i will update the database
            }else{
                final Button button = (Button) v;//here is the line I dont undestand
                buttonColorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.WHITE);

                buttonColorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator animator) {
                        // set the background color
                        button.setBackgroundColor((Integer) animator.getAnimatedValue());
                    }
                  //here i will update the database
                });

                buttonColorAnim.start();
            }
        }
    });

这是git commit的输出:

#!/bin/sh
echo "removing file.txt"
rm file.txt
exit 0

为什么它会识别file.txt?是因为它没有包含在gitignore中吗?

3 个答案:

答案 0 :(得分:1)

如果您已经将文件添加到过去的git 将跟踪,直到您告诉它不要=删除它。

.gitignore在这种情况下无法帮助您,因为它已被跟踪过。

你必须这样做:

# remove it from the index and commit it
git rm --cached <file.txt>

现在将其添加到.gitignore并提交它。

答案 1 :(得分:1)

我不确定动词是什么意思识别,但这里的主要问题是Git不会从工作树进行提交。 Git从索引提交提交。

当您git add file.txt时,会将file.txt的内容从工作树复制到索引中。如果文件file.txt之前没有出现在索引中,它现在就会出现。如果以前在索引中 ,则旧索引内容现在将替换为工作树file.txt中的任何内容。

当您运行git commit时,它会立即索引中的任何内容并将其转换为提交。在预提交钩子中,您修改工作树,但不修改索引 - 因此索引保持原样,文件进入提交。

答案 2 :(得分:1)

如果您要将文件添加到.gitignore,除非您强制将其添加到索引中,否则我想您希望将其添加到.gitignore。如果您仍希望通过pre-commit挂钩执行此操作,则应从索引中删除该文件,而不是工作树,因此请在git rm --cached --ignore-unmatch -- file.txt挂钩中使用rm file.txt而不是pre-commit从索引中删除文件(如果存在),而不是从工作树中删除它。