开发中常用Git命令记录

98 阅读3分钟
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 fetch fatal: 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: Bianzhi stash@{1}: On BianZhi: ConsoleLog增强

  • 恢复某个stashgit stash apply stash@{index}
  • 恢复某个stash并将其从stash列表中删除:git stash pop stash@{index}
  • 删除某个stashgit stash drop stash@{index}
  • 清空所有已保存的stashgit 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)