文章目录
- [新人 git 常用命令](#新人 git 常用命令)
-
- [初始化 git 仓库](#初始化 git 仓库)
- [创建文件添加 git](#创建文件添加 git)
- [提交 git 文件修改](#提交 git 文件修改)
- [查看 git 当前状态](#查看 git 当前状态)
- [查看 git 提交信息](#查看 git 提交信息)
- 查看尚未提交的修改
- 查看已经提交的修改内容
- 查看文件更改(当前工作区和最新提交版本库的区别)
- 版本回退
- [查看所有执行的 git 命令](#查看所有执行的 git 命令)
- 取消暂存区的改动,重新放回工作区
- 丢弃工作区的改动
- [全部撤销工作区的改动,也可以使用 checkout](#全部撤销工作区的改动,也可以使用 checkout)
- 将暂存区的改动文件重新放回工作区也可以使用reset
- 恢复工作区误删除的文件
- 确定提交删除操作
- 向远程仓库推送代码
- 查看远程库信息
- 删除远程库
- 关联远程仓库
- [从 git 远程仓库克隆](#从 git 远程仓库克隆)
- git查看当前所有分支信息
- git创建分支
- git切换分支
- 创建+切换
- 合并分支(合并指定分支到当前分支)
- 删除分支
- git终止当前合并操作
- [合并代码时强制禁用 Fast Forward](#合并代码时强制禁用 Fast Forward)
- stash暂存当前分支内容
- [查看stash暂存区 列表](#查看stash暂存区 列表)
- 恢复工作区内容
- 合并特定的提交到当前的分支
- [指定本地分支与远程分支的关联(以 dev 分支为例)](#指定本地分支与远程分支的关联(以 dev 分支为例))
- 拉取分支
- 在本地创建和远程关联的分支
- rebase把本地未push的分叉提交历史整理成直线
- 解决当前索引的冲突
- Git中打标签
- 查看tag
- [查看 tag 具体信息](#查看 tag 具体信息)
- 删除标签
- 推送某个标签到远程
- 一次推送所有没有推送的本地标签
- 删除远程标签
- 配置别名alias
新人 git 常用命令
初始化 git 仓库
bash
git init
创建文件添加 git
bash
git add 文件名 --添加对应的文件
git add . --添加所有的修改文件
提交 git 文件修改
bash
git commit -m "提交的备注信息" --提交所有添加的文件
查看 git 当前状态
bash
git status
查看 git 提交信息
bash
git log --查看所有信息
git log --pretty=oneline --查看的信息汇总到一行
git log 可带参数很多,例如 --graph --pretty=oneline --abbrev-commit
查看尚未提交的修改
bash
git diff
查看已经提交的修改内容
bash
git diff [commit id]
查看文件更改(当前工作区和最新提交版本库的区别)
bash
git diff HEAD -- [文件名]
版本回退
bash
git reset --hard HEAD^ --回退到上一个版本
git reset --hard HEAD~100 --回退到 100 个版本前
git reset --hard [指定的 commit id] --返回到指定的提交版本,可以是以前的,也可以是以后的
查看所有执行的 git 命令
bash
git reflog
可以以此确定当前所在的 commit id 和以前所处的 commit id
取消暂存区的改动,重新放回工作区
bash
git restore --staged [文件名]
丢弃工作区的改动
bash
git restore [文件名]
全部撤销工作区的改动,也可以使用 checkout
bash
git checkout -- [文件名]
命令中 -- 很重要,没有加 -- ,就变成了切换到同名的分支
将暂存区的改动文件重新放回工作区也可以使用reset
bash
git reset HEAD [文件名]
恢复工作区误删除的文件
bash
git restore <文件名>
git checkout -- <文件名> //删错了,但是版本库里还有,可以使用 checkout
确定提交删除操作
bash
git add/rm <文件名>
git commit -m "删除信息"
向远程仓库推送代码
bash
git push <远程库名称> <分支名>
git push -u origin <分支名>
第一次向远程仓库推送分支内容,加入-u 参数,不仅会推送本地分支内容,还会把本地分支和远程分支关联起来,在以后的推送中可以简化命令 git push origin <分知名> ,默认的远程库名称为 origin,也可以自定义,例如一个本地仓库同时关联 gitee 和 github:
bash
git remote add github git@github.com:<github远程注册名>/<远程仓库名>.git
git remote add gitee git@gitee.com:<gitee远程注册名>/<远程仓库名>.git
git remote -v
gitee git@gitee.com:<gitee远程注册名>/<远程仓库名>.git (fetch)
gitee git@gitee.com:<gitee远程注册名>/<远程仓库名>.git (push)
github git@github.com:<github远程注册名>/<远程仓库名>.git (fetch)
github git@github.com:<github远程注册名>/<远程仓库名>.git (push)
git push github master //推送 GitHub master
git push gitee master // 推送 gitee master
查看远程库信息
bash
git remote
git remote -v
删除远程库
bash
git remote rm <名称>
git remote rm origin //删除本地和远程 origin 的关联
这里删除的是本地库和远程库的绑定联系,并非真正删除远程库的内容,如确实需要远程删除,需要手动登录 GitHub 或者 Gitee,找到仓库,手动删除。
关联远程仓库
bash
git remote add origin git@server-name:path/repo-name.git
关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名
从 git 远程仓库克隆
bash
git clone <远程仓库地址>
git查看当前所有分支信息
bash
git branch
git创建分支
bash
git branch <分支名>
git切换分支
bash
git checkout <分支名>
git switch <分支名>
创建+切换
bash
git checkout -b <分支名>
git switch -c <分支名>
合并分支(合并指定分支到当前分支)
bash
git merge <分支名>
删除分支
bash
git branch -d <分支名>
git branch -D <分支名> //强行删除
git终止当前合并操作
bash
git merge --abort
合并过程中不能切换分支
合并代码时强制禁用 Fast Forward
不使用 fast forward 会产生一个新的提交,所以加参数-m 表明提交信息
bash
git merge --no-ff -m "提交信息" <分支名>
stash暂存当前分支内容
bash
git stash
查看stash暂存区 列表
bash
git stash list
恢复工作区内容
bash
git stash pop //恢复工作区内容并删除列表
git stash apply //恢复工作区内容,但是列表记录还在
git stash drop //删除 stash list 列表内容
git stash apply stash@{0} //如果 stash 列表中不止一个暂存,stash@{}中可选择恢复哪一个stash
合并特定的提交到当前的分支
bash
git cherry-pick <commit id>
指定本地分支与远程分支的关联(以 dev 分支为例)
bash
git branch --set-upstream-to=origin/dev dev
git branch --set-upstream-to <branch-name> origin/<branch-name>
拉取分支
bash
git pull
在本地创建和远程关联的分支
bash
git checkout -b branch-name origin/branch-name
rebase把本地未push的分叉提交历史整理成直线
bash
git rebase
rebase前
rebase 后
解决当前索引的冲突
当 git进行 rebase 操作后,卡在正在变基阶段,切换分支提示需要先解决当前的索引冲突 you need to resolve your current index first,解决方法
bash
git reset --merge
Git中打标签
git 的标签其实对应的是某次提交的 commit id
bash
git tag <标签名>
git tag v1.0
git默认标签打在最新 commit 的 id 上,如要指定某次 commit,可以指定 id
bash
git tag <tag name> <commit id>
git tag v0.9 3165663
还可以有其他参数,创建带有说明的标签,用-a指定标签名,-m指定说明文字
bash
git tag -a <tag name> -m "tag messsage" <commit id>
git tag -a v1.0 -m "version 1.0 released" 3165663
查看tag
bash
git tag
查看 tag 具体信息
bash
git show <tag name>
git show v1.0
删除标签
bash
git tag -d <tag name>
推送某个标签到远程
bash
git push origin <tag name>
一次推送所有没有推送的本地标签
bash
git push origin --tags
删除远程标签
bash
git push origin :refs/tags/<tag name>
配置别名alias
--global 表示全局变量,如果不加,那只针对当前的仓库起作用。
repo 等级的配置一般在.git/config 下,global 等级的一般在~/.gitconfig 或者 ~/.config/git/config下
bash
git config --global alias.st status //git st就表示git status
git config --global alias.co checkout //co表示checkout
git config --global alias.ci commit //ci表示commit
git config --global alias.br branch //br表示branch
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"