Git常用命令及遇到的问题
专用名词
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
工作流程
基本操作
- git init
初始化
仓库 - git clone
克隆
仓库 - git status
状态
查看 红:modified 绿:new file Untracked:未追踪 暂存区无此文件 - git add .
添加
到本地暂存区 - git commit -m “xxx”
提交
到本地,xxx为注释 - git push
推送
到远程仓库 - git pull
拉取
远程仓库最新代码,可能需要解决merge冲突 - git fetch
仅
做拉取
操作,不
做合并
,合并需要自己再找其他方法,一般都用git pull - git log 查看提交
日志(版本号)
- git reset --hard 版本号
回退
到指定版本
将新项目初次推到远程仓库
- git init
- git commit -m “first commit”
- git remote add origin 仓库地址
- git push -u origin “master”
分支类操作
查看
- git branch
查看所有本地
分支 - git branch -r
查看
所有远程
分支
创建 & 切换
- git checkout -b xxx
创建并切换
分支 - git checkout xxx
切换
分支
拉取远程分支到本地
- git checkout -b 本地分支名xxx origin/远程分支名xxx 与远程分支
建立映射关系
- git fetch-origin 远程分支名xxx:本地分支名xxx 与远程分支
不建立映射关系
删除
-
git branch -d xxx
删除本地
分支 -
git push origin :xxx
删除远程
仓库分支 -
git branch -D xxx
强制删除
本地分支,即不检查当前要删除的分支是否存在未处理的状态(merge) -
git branch -delete --force xxx
同上
-
git branch --delete --remotes /
删除追踪
分支命令解释:
-
删除追踪分支,该操作并没有真正删除远程分支,而是删除的本地分支和远程分支的关联关系,即追踪分支。
通过命令行git push origin --delete branch会删除远程分支和追踪分支,不需要单独删除追踪分支,但是如果通过网页对远程分支进行删除,追踪分支是不会被删除的。
-
-
git branch | xargs git branch -d
批量删除除了当前
分支外的所有分支命令解释:
- |:道命令,用于将一串命令串联起来。前面命令的输出 作为 后面命令的输入。
- xargs:是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。同样,将-d换成-D可以强制删除。
-
git branch | grep ‘dev*’ | xargs git branch -d
删除
分支名包含指定字符
的分支命令解释:
- grep:搜索过滤命令。使用规则表达式搜索文本,并把匹配的行打印出来。
合并流程
- git checkout master
切换
到需要合并到的分支
- git pull origin master
拉取
最新代码 - git merge dev 将dev分支
合并
到master - 上述步骤如出现
冲突
,需要手动解决
- git status 查看当前
状态
- git push origin master 将合并后的代码
推送
到远程仓库
创建并切换分支
- git checkout -b your_branch 创建并切换到本地分支
- git push -u origin your_branch 将创建的分支推到远程
遇到过的问题
-
fatal: not a git repository (or any of the parent directories): .git
问题描述: 未找到git仓库
解决方法: git init 初始化
-
error: failed to push some refs to…
问题描述: 推送失败(远程仓库有更新)
解决方法: git pull 拉取最新代码