git 常用指令和操作
git 常用操作
代码仓库
创建仓库
- 建立/初始化仓库:
git init - 拉取远程仓库到本地:
git clone
添加文件到仓库
- 添加文件到暂存区
- 添加单个文件:
git add - 添加所有文件:
git add . - 会忽略的文件:
.gitignore中指定的文件和空目录
- 添加单个文件:
- 提交到本地仓库
git commit - 查看工作状态
git status - 对比工作区文件
git diff
基本仓库配置
配置全局用户名和邮箱:
git config --global user.name "[name]"
git config --global user.email "[email]"
配置当前仓库用户名和邮箱:
git config user.name "[name]"
git config user.email "[email]"
代码版本/提交切换
查看过去版本/提交
git log
简介版:git log --oneline
回退版本/提交
- 回退到当前最新提交:
git reset --hard HEAD - 回退到上次提交:
git reset --hard HEAD^ - 回退到上 n 次提交:
git reset --hard HEAD~n - 回退到某次提交:
git reset --hard commitid
重返未来版本
- 查看历史提交以及被回退的提交:
git reflog(该记录有时效,且只在本地) - 回到未来版本:
git reset --hard commitid
撤销修改
- 工作区文件撤销(没有提交到暂存区/没有
git add):git checkout -- fileName - 暂存区文件撤销:
- 将暂存区文件撤销到工作区:
git reset HEAD filename - 撤销修改:
git checkout -- filename
- 将暂存区文件撤销到工作区:
- 提交到了版本库:回退到之前未修改的版本
删除文件
- 从版本库中删除文件:
git rm filename - 从版本库中删除文件,但本地不删除该文件:
git rm --cached filename
暂存修改
- 暂存工作现场:
git stash - 恢复工作现场:
- 恢复:
git stash apply - 删除:
git stash drop - 恢复 + 删除:
git stash pop
- 恢复:
忽略文件
通过 git 仓库下的 .gitignore 文件屏蔽某些中间文件/生成文件或者其他不需要的文件
分支操作
创建与合并分支
- 创建分支
- 仅创建:
git branch 分支名 - 创建并切换:
git checkout -b 分支名
- 仅创建:
- 切换分支:
git checkout 分支名 - 合并分支:
- 合并某分支到当前分支:
git merge 分支名 - 合并分支时禁用 fast forward:
git merge --no-ff 分支名
- 合并某分支到当前分支:
- 删除分支:
- 删除本地分支:
- 删除未合并分支:
git branch -D 分支名 - 删除已合并分支:
git branch -d 分支名
- 删除未合并分支:
- 删除远程分支:
git push origin -d 分支名- or
git push <远程仓库名> -d 分支名 - 删除远程分支建议采用图形界面操作
- 删除本地分支:
- 查看分支
- 查看当前分支:
git branch - 查看所有分支信息:
git branch -a
- 查看当前分支:
多人协作
- 查看远程库信息
- 详细:
git remote -v - 不详细:
git remote
- 详细:
- 更新/推送远程库:
- 更新远程库信息:
git fetch - 将远程库最新修改更新到本地:
git pull - 将本地修改推送到远程库:
git pushorgit push origin 分支名
- 更新远程库信息:
- 本地分支与远程分支交互:
- 使用远程分支 A 创建本地分支:
git checkout -b A origin/A - 将本地分支与远程分支相关联:
git branch -set-upstream A origin/A
- 使用远程分支 A 创建本地分支:
多人协作提示
建议开发遵循或参照 git 标准工作流,比如 git flow、github flow 或者 gitlab flow。
代码版本 tag
查看 tag
- 本地 tag:
git tag - 远程 tag:
git tag -r
操作 tag
- 添加 tag:
- 给当前版本添加 tag:
git tag 标签名 - 给历史版本添加 tag:
git tag 标签名 commitid
- 给当前版本添加 tag:
- 删除 tag:
- 删除本地标签:
git tag -d 标签名 - 删除远程标签:
git push origin -d 标签名
- 删除本地标签:
- 推送到远程仓库:
- 提交某个 tag:
git push origin 标签名 - 推送所有未提交 tag:
git push origin --tags
- 提交某个 tag:
- 更新到本地:
git pull origin --tags