把新修改上传到远程仓库的二级目录
场景如下:之前把多个文件夹同时上传到一个Repo里,后来其中一个文件夹内需要添加新文件a.txt,该如何修改?
- git remote add origin [远程仓库地址]
- 如下操作
- git pull # 将远程项目拉下来
- cd [项目]
- git init
- git add ../a.txt
- git status //查看新增加的a.txt是否被add
- git commit -m "a.txt"
- git merge origin/master
- git push -u origin master
删除远程文件或文件夹
- git clone [远程仓库地址]
- git rm -r [项目名]/[待删除文件夹名] # 如果是文件,则不需要-r
- git commit -m "delete file"
- git push origin master
删除本地已经commit的文件夹
本地已经add到远程的文件夹,会存在git fetch/pull拉下来,但本地不存在的情况,原因是存在缓存里了,这里不能使用git rm -r,因此:
- git rm -r --cached dirname
然后同上。
本地上传文件,且删除远程文件
- git init
- git remote add origin master [路径]
- git fetch # 拉下远程
- git merge origin/master # 将远程与本地合并,更新本地
- git rm -r remote_folder
- git add folder
- git commit -m "add a folder, delete a remote_folder"
- git push
删除已经add了的文件
- git rm -r --cached .
git rebase
- git rebase -i [head you want to back]
- pick the head, squash other
- git push -f
- git rebase --abort 放弃rebase
今天做git rebase时发现,fixup 和 squash均能实现“将本次commit结果合并到前一次中”,而区别在于:
- fixup直接抹掉了commit
- squash则将commit合并到一个“pick”的commit里,点击该pick的commit可展开看到。
git branch dev
git checkout dev
合并成一句话: git checkout branch dev
切换远程分支
现在需求如下:我想直接把本地代码从远程分支test更新到远程分支develop:
- git checkout -b develop origin/develop
该过程包含在本地新建分支develop,并将代码更新为远程develop
删除分支:git branch -d dev
将远程分支1强制更新到远程分支2的某一个版本T(非最新)
思路是新建一个tmp分支,将ver2的某个版本回退到T,然后将ver1强制更新到T
- git checkout ver2
- git reset --hard [你想回到的版本]
- git checkout -b tmp
- git checkout ver2
- git push origin ver2:tmp
- git checkout tmp
- git pull origin tmp:tmp
- git push -f origin tmp:ver1 //此时已push到ver1的远程
- git checkout ver1
- git pull