1、git pull 拉取分支
- 将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名> - 将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名> - 将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支):
git pull
2、git push 推送分支(注意:pull是远程在前本地在后,push相反)
- 将本地当前分支 推送到 远程指定分支上:
git push origin <本地分支名>:<远程分支名> - 将本地当前分支 推送到 与本地当前分支同名的远程分支上:
git push origin <本地分支名> - 将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支):
git push
3、拉取远程仓库的分支到本地
- 命令:
git checkout -b 本地分支名 origin/远程分支名名
若出现错误提示,需要先执行
git fetchfatal: Cannot update paths and switch to branch 'xxx' at the same time.
4、撤销分支的合并Merge(未同步到远程)
git log找到需要回退的分支版本,执行git reset --hard <commit-id>回退
5、版本回退
git log找到需要回退的分支版本,执行git reset --hard <commit-id>回退,执行git push -f推到远程同步
6、取消版本回退
git reflog查看命令历史,以便确定要回到未来的哪个版本,执行git reset --hard <commit-id>回退
7、基于某个分支开一个新分支,并推送到远程仓库
- 基于远程分支代码代码开一个本地分支:
git checkout -b <新分支名> <远程主机名>/<远程分支名> - 把新分支推送到远程仓库:
git push -u <远程主机名> <新分支名>(或git push <远程主机名> <远程分支名>+git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>)
8、将本地分支推送到远程,并且相关联
git push --set-upstream origin <本地分支名>或git push -u origin <本地分支名>
9、修改本地分支名称
- 当前在该分支上:
git branch -m <新分支名称> - 当前不在该分支上:
git branch -m <旧分支名称> <新分支名称>
10、git stash临时保存更改内容(无需提交),在后续可恢复
- 保存到
stash中,并添加标识:git stash save "stash的标识" - 显示所有已保存的
stash列表:git stash list
输出列表:
(stash@{index}: on [分支名]: [标识信息])stash@{0}: On BianZhi: Bianzhistash@{1}: On BianZhi: ConsoleLog增强
- 恢复某个
stash:git stash apply stash@{index} - 恢复某个
stash并将其从stash列表中删除:git stash pop stash@{index} - 删除某个
stash:git stash drop stash@{index} - 清空所有已保存的
stash:git stash clear
11、远程新建一个分支,但在编译工具搜索不出来时,可以通过以下命令更新远程分支的显示
- 第一种:
git fetch
git fetch 拉取分支,远程被删除的分支不会同步删除本地origin的分支(origin/xxxx) EG:你有个本地分支feat,然后也有本地origin/feat,假设remote新增了test分支且其他人删除了remote的feat则git fetch可以在本地产生origin/test(但没有本地分支test,这个要你checkout到test的时候才会产生),但不会删除本地的origin/feat
- 第二种:
git update origin --prune
必须带有–prune,否则跟git fetch等价。除了会拉取新分支,本地还会删除掉别人远程删除的分支 EG:按第一种的的例子,执行这个命令后可以拉取origin/test(但没有本地分支test),且删除本地的origin/feat(但不会删除你本地的分支feat)