git无法识别新增的文件

git无法识别新增的文件,第1张

h文件和cpp文件的名称一定要区分大小写。

如果文件夹名中有大写字母,使用git add -f 的时候,也要使用大写字母。

否则git不会报错,但是,sourcetree依然无法 对该文件进行版本控制。

工作目录中,新建一个文件,比如一个.h和.cpp文件。

但是,git无法识别这些文件。

用git status命令,返回目录是clean的。表明没有任何修改。说明git没有识别到这些新增加的文件。

原因:

不知道什么原因导致的。不是mercurial,也不是sourcetree。用git命令依然无法发现这些新增加的文件。

解决方法:

强行将这些文件添加到git版本控制中。

方法:

git add 1.cpp

返回无法添加,说1.cpp已经处于.gitignore中。但是iganore中明明没有忽略这些cpp文件。

解决方法:

git add -f 1.cpp

这样就可以将1.cpp添加到git的版本控制中。

如果直接git add -f 1.cpp

报错,无法找到文件1.cpp。

那么就将1.cpp的完整路径输入即可。比如D:/jingmai_git/TradePlugin/src/Trade/1.cpp就可以了。

link: http://blog.csdn.net/zhangbinsijifeng/article/details/47041913

有些时候,你想添加一个文件到Git,但发现添加不了,原因可能是这个文件被 .gitignore 忽略了:

如果你确实想添加该文件,可以用 -f 参数强制添加到Git本地版本库:

关于 -f 参数,描述如下:

-f, --force : Allow adding otherwise ignored files. 允许添加被忽略的文件。

或者你发现,可能是 .gitignore 写得有问题,需要找出来到底哪个规则写错了,可以用 git check-ignore 命令检查:

Git会告诉我们, .gitignore 的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

还有些时候,当我们编写了规则排除了部分文件时:

但是我们发现 .* 这个规则把 .gitignore 也排除了,并且 App.class 需要被添加到版本库,但是被 *.class 规则排除了。

虽然可以用 git add -f 强制添加进去,但有强迫症的童鞋还是希望不要破坏 .gitignore 规则,这个时候,可以添加两条例外规则:

把指定文件排除在 .gitignore 规则外的写法就是 ! +文件名,所以,只需把例外文件添加进去即可。

小结

Git检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

之前的忽略方案,都是适用于未跟踪文件的忽略,而对于已跟踪(track)文件的改动并不适用,好在针对这种情况,Git也提供了我们方法去忽略。

换句话说,就是添加忽略之后,修改已经提交到版本库中的文件是无法忽略的。

自己思考的方式: (稀烂哈哈)

正确的做法:

我们在配置全局忽略 .gitconfig 文件的时候,可能会看到如下配置:

那么 autocrlf = true 和 safecrlf = false 是什么意思?

LF是Linux系统下的换行符,而CRLF是windows系统下的换行符。由于我们的文件创建于Linux系统下(Git Bash中创建),而保存中windows系统中,所以文件中的行结束符,要使用windows下的CRLF格式换行,而在Git中的默认配置是自动转换。

因为在Git的忽略文件中,是一行一行的忽略规则,而 autocrlf 和 safecrlf 就是对转变换行格式的具体配置。

以上可手动配置在 .gitconfig 文件中,

使用命令行配置如下:

这样即可保证仓库中永远都是LF, 而且在Windows工作空间都是CRLF,在Mac/Linux工作空间都是LF。

以上可手动配置在 .gitconfig 文件中,

使用命令行配置如下:

你需要先将文件添加后才可以提交,如果文件没有添加成功,就无法提交上去。

你准备两份代码,一份版本控制的A,只负责commit、pull和push代码,另一份是你的工作空间B,所有代码的修改都在这一份做,每次需要提交的时候先把A制那一份的代码pull最新的下来。

然后用beyond compare这种代码比对工具,仅把你修改的代码从B比到A那一份里头,然后commit和push就绝对不会出现冲突的。

git 提供了在 repo 之间同步和传递状态的方便和低代价工具,怎么用视乎 SCM 制度或习惯,不同的团队可以设定不一样的 repo 分布和管理方案,我自己就见过几个不一样的模式,当然有些最佳实践是可以借鉴的。

比如,总的来说比较鼓励小粒度提交,不惧怕多分支和合并。

git如何删除历史提交,你非要保留那次merge并且删掉b而不是revert b么?不要轻易rebase -i历史提交,尤其是本地仓储是从服务器上sync下来的时候,本地的自己开发的还好说。。而且你就算把b删掉,历史也变成a&lt-c'&lt-d'&lt-e'<-f'(d'&lt-g'&lt-f'),commit id都变了的,真要这么搞就用这个,git rebase -p --onto a b ,git help rebase里都有。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11650375.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存