每次我尝试将单个文件推送到新分支时,都将文件夹中的所有文件混在一起。
当我使用git rm --cached -r .
从存储库中删除所有文件并再上传一次时,就可以了。但是,当我尝试将一些文件上传到另一个新分支时,它会推送新文件+上次推送的文件。
我用了这个命令:
git init
git remote add origin master
git branch test
git checkout test
git add <file>
git commit -m "blahblah"
git push origin test
当然,在此期间,我使用了git status
命令来检查当前文件,但是只显示了我想要的
答案 0 :(得分:0)
Git不推送文件。 Git推送整个提交。
提交是整个源代码树的快照: all 文件。这就是git push
传输的内容:一个或多个完整快照。
当您使用git checkout branch
时,Git会将 branch
名称转换为特定的提交,然后提取该整个提交 –文件-进入您的工作树。这就是提交的重点:它们代表了所有一起的文件集。使用文件集A在分支A上执行操作A;使用不同的文件集B在分支B上执行B事务;等等。如果文件集中存在某个错误,而该错误是某个分支B的当前提示,则提取完整的错误集,修复该错误,添加修复,然后运行git commit
说: Now分支B表示我刚刚使用这些文件的全部进行了此新提交。新提交表示执行B任务的新快照。
因此,git push
将推送您创建的所有其他Git尚未拥有的所有新快照。他们将新快照添加到“所有已创建快照”的其集合中。
请注意,push
的对立面是fetch
,而不是pull
!这个错误动词是由于Git早期犯了一个小错误,我们现在必须忍受这个错误。使用git pull
意味着先执行git fetch
,然后再运行git merge
。这是git push
不(也不能)执行的额外步骤。我们先获取,然后合并,然后推送;然后我们根据需要提取,合并并再次推送。 pull
动词将两者结合在一起,但事实证明,在这两个动作之间经常有事情要做,或者代替使用merge
。如果没有(可以立即合并),则 then git pull
更为方便。但是我建议一开始要单独学习它们。
有关此内容的更多信息,一旦您准备好,请参见What does GIT PUSH do exactly?