“我会做你所向披靡的利剑”。
一、前言
公司的git项目里,一个仓库会有好多个项目,而我想把指定的本地文件夹放到指定的远程仓库文件夹里,一开始我不想把整个仓库都拉下来,因为实在是太大了,整整4个G多,我只想传一个文件夹上去而已,然后试了很多次,还是不行,所以只能作罢,第一次搞的时候,必须把整个仓库的都pull下来,然后把我想上传的文件放到指定到项目里,再push才行。
二、实操
场景一:第一次搞这个,远程git里面已经有很多项目,而我想把本地某个文件夹放到远程项目4文件夹里面去,应该怎么做?
1、本地任意找一个空文件夹,在终端打开
【前面的git安装、生成密钥和添加SSH Key步骤就省略了,以及新建gitee仓库这些也不讲,没遇到什么问题,我用的码云做的测试,原因是GitHub上不去,然后公司gitlab也不能乱搞,不过模式都差不多,没啥大区别】
2、git init
此时我的本地文件夹会多出一个隐藏的.git文件夹
3、git remote add a123 git@gitee.com:bfz50/test1.git
关联远程仓库,仓库名随意写,没影响,比如a123,不用跟远程一样
这个地址从仓库右侧的按钮下可以看到地址
这一步没有回显
以上三步第一次做完,以后就不用做了,除非你在其他文件夹,就要再执行一次。
】
4、git pull --rebase a123 master
这一步第一次下载要好久,rebase后面的仓库名要和上一步git remote add 后面的远程名要一样,你也可以起个a123之类的,没啥所谓,但是master是分支名,不能动
此时你的本地文件夹会多了一些内容,和远程仓库上的一模一样
5、把你要传的文件(夹)放到本地文件夹你想放的位置(原本是没有的)
6、git add .
这一步没有回显,别忘了那个点(.)
7、git commit -m “场景一:上传指定文件夹”
这一步会告诉你,你的文件变动内容,上面的意思是,你加了一个文件,在项目4/新的原型文件里面
8、git push -u a123 master
再看远程仓库
文件夹已经上传成功
说明:
4,5,6,7是以后增加文件时的固定步骤,先拉取最新的,然后把你想传的文件放到对应的文件夹,然后add、commit和push。
pull的时候如果那个远程名没有写对,就会报错
应该是a123
有一点要注意的是,“以上步骤”,拉下来以后,不要动本地文件,删除和修改都不行,不然下次拉取的时候会提示
这个删改的问题等下讲,上面的步骤对你新增文件、新增文件夹是不会受影响的。
如果有人动了你远程项目4里面的文件,直接把整个文件夹删掉会怎样?
这个操作会导致你pull时本地文件夹的文件也会被删掉
pull相当于同步远程仓库里的内容。
如果有修改文件的需要呢?
此时pull将报错,所以需要先commit,然后pull。
总结下:
1、你新增文件:pull、add、commit、push
2、你改了本地文件:add、commit、pull、push
3、别人改了远程文件:pull、add、commit、push
4、你和别人同时改了同路径同一份文件,你改了本地的,他改了远端的:报错
如果新增文件时我先commit再pull会怎么样呢?如果别人没有动你的远程文件,那么是没有事情的;
如果别人删了你的远程文件,然后你不知情,本地加了文件以后,直接commit,再pull,
pull时你本地也会删,这个时候注意,这个同步相当于你删了本地文件,此时你去push是无法成功的
需要再走一次上面的第3步的流程,也就是commit,然后push。
简单来说,有人动了远程文件,你改了本地文件,但是它们不是同一份,那么你需要
先commit、pull,再commit,再push。
如果你使用的是clone下载文件下来的话,那么需要进入仓库的文件夹,然后使用
git remote
查看对应的远程名,再使用远程名代替a123。
最后,可以用sourcetree去拉取项目,其他的地方不用怎么配置,有一个地方需要注意
如果填git开头的提示这是一个无效的源路径/URL,可以填https开头的
然后输入你登陆web上的git时的账号密码即可。