
如果文件夹名中有大写字母,使用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里都有。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)