之前写过一篇博客是讲git的一些简单的操作的。对于之前的总计不到位,在这里做一个补充。
问题是如何产生的
我不知道大家有没有遇到过一个问题,先建好一个仓库,并且上传了自己的东西。后来对他们去做修改,包括文件的删除,位置的移动。当git push 之后发现,恩,没错,的确更新了,可是之前的那些依然存在你的git仓库中。不过我们知道git rm可以删除git中的一些文件,可是如果我有100个文件路径发生改变了那?100个文件在本地仓库中移除了哪。所以固执的我认为一定有一个简单粗暴的方法解决这个问题。
对于这个问题,做个测试吧
我仓库创建好之后,添加文件1,文件2,以及文件夹a,而文件夹a中包含文件b。
现在上传到我的git仓库,可以看到我的commit -m 后面的参数给的是“test”。一会我们换一个参数,以区分它们。
好了,我现在要做的事情就是把文件1,2移动到文件夹a中。之后git push 我们看看它们的效果。
如何我们可以看到文件12的路径已经发生了改变,然而在我们的git 上并没有出现相对应的路径改变。之前的两个文件12还依然与文件夹a同目录。可是这很明显不是我们想要的结果,我们需要的是git远程仓库中的文件与本地的仓库同步。
解决问题
这是我第一次遇到这个问题,问了身边很多人都没有遇到过与我类似的问题。似乎大家都是一次性创建好位置。最后的解决办法就是 用commit -m 替换为commit -am。那他们有什么区别吗
commit -m //用于提交暂存区的文件
git commit -am //用于提交跟踪过的文件
- 工作目录下面的所有文件都不外乎这两种状态:已跟踪(tracked)或未跟踪(untracked)。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新(unmodified),已修改(modified)或者已放入暂存区(staged)
原理理解了以后,来解决我们的问题吧
恩,发现,成功了!
问题解决
所以当本地仓库中的文件有大幅度的删除或者路径改变,应该使用-am而不是-m。不过也可以通过git status查看文件的状态,在考虑应该使用-m还是-am。
文章来源于本人博客http://blog.csdn.net/wen_special/article/details/72734962