git 基本操作
git 文档
初始化
初始化git项目
$ mkdir dome
$ cd dome
$ git init
git配置
设置git用户名 邮箱
$ git config user.name xxxxx
$ git config user.email 22286654@qq.com
git 文件操作
1、添加文件到缓存区 ( . 或 * 代表全部)
$ git add lianxi.txt
$ git add .
$ git add *
2、将 git add 暂存的文件 提交到本机git仓库
$ git commit -m "提交说明"
3、重写上次提交消息
$ git commit -v --amend
4、查看当前git提交状态
$ git status
5、git 版本 退回
$ git reset --hard // 将所有内容恢复到最后一次提交
$ git reset --hard Head~0 //回退到上次提交的版本
$ git reset --hard [版本号] //回退指定版本
6、git 状态 退回
git reset HEAD [文件或文件目录] // 将文件从缓存区退回到编辑区
git checkout -- [文件或文件目录] // 将文件退回到没有修改前
git restore [文件或文件目录] // 将文件退回到没有修改前
7、更改现有文件路径并暂存移动
$ git mv [existing-path] [new-path]
8、从项目中删除文件并暂存删除以进行提交
$ git rm [file]
git rebsae
合并分支
// 合并分支dev
$ git rebase dev
// 如果有冲突,解决冲突后 继续操作
$ git rebase --continue
修改指定提交记录
// 修改指定提交记录
$ git rebase -i <commit>
$ git rebase -i HEAD~2 // 修改后两条修改记录
// 修改最近的一条提交记录
$ git commit --amend
// 最后,指定--continue选项以继续执行rebase
$ git rebase --continue
取消rebase操作
// 当在rebase操作,指定--abort选项以取消 rebase操作
$ git rebase --abort
git 分支
查看当前分支
$ git branch
$ git branch -vv // 列出所有分支及其上游
创建分支 ( git 默认 有一个 master 分支 )
$ git branch dev // 创建一个dev分支
$ git checkout 12345678 -b newBranch //当前分支的某个commit id = 12345678,我们可以基于这个id创建本地分支
切换分支
$ git checkout dev // 切换到dev分支
$ git checkout - // 快速切换到上一个分支
“ git checkout”命令是切换分支的另一种方式,但它可能会有一些缺点。首先,“ git checkout”可能导致丢失未提交的更改。 其次,如果开发人员要创建新分支,则必须使用“ git branch”命令,这可能会耗费时间。 “Git switch”可以通过允许开发人员更有效地在分支之间切换来解决这些问题。
$ git switch dev // 切换到dev分支
$ git switch -c <新分支名字> // 快速生成新分支并切换分支
分支重命名
$ git branch -m new_name // 将当前分支重命名为 new_name
推送和重置
$ git push origin -u <new_name>
合并分支
$ git merge dev // 把当前分支与dev分支合并
删除分支
$ git branch -d dev // 删除dev分支
删除远程分支
$ git push origin --delete <old>
git Tag 标签
查看本地标签
$ git tag
$ git tag -l "v3.3.*" // 加上-l命令可以使用通配符来过滤tag
查看远程标签
$ git ls-remote --tags
$ git ls-remote --tag
给分支打标签
$ git tag <标签名>
$ git tag -a <标签名> -m "标签说明"
$ git tag v1.0.0 039bf8b -m "标签说明" // 给指定版本添加标签
查看指定Tag的详细信息
$ git show <标签名>
删除标签
$ git tag -d <标签名>
删除标签
$ git tag -d <标签名>
删除本地Tag后,再重新Push到远程的代码仓库
$ git push origin :refs/tags/<标签名>
推送Tag到远程
$ git push origin <标签名>
$ git push origin --tags //推送所有本地的tag
git 远程
上传远程仓库
$ git push <远程仓库网址> master //把分支内容上传到远程的master分支上
$ git push <远程仓库别名> master
远程仓库别名操作
$ git remote add xx <远程仓库网址> // 将远程仓库添加到本地仓库里(注意: xx为你的仓库别名,不能与已有仓库重名)
$ git remote set-url xx <仓库地址> //修改仓库对应远程仓库地址
$ git remote rename xx aa // 把远程仓库别名为xx的改为 aa
$ git remote remove aa // 将远程仓库别名为aa的在本地删除
$ git remote -v // 查看远程仓库别名对应远程仓库的地址
下载远程仓库
$ git fetch <远程仓库网址> master //把远程的master分支下载到本地
$ git pull <远程仓库网址> master //把远程的master分支下载到本地仓库并与当前的分支合并 (pull 相当于 先fetch 再merge )
$ git clone <网址> //将远程仓库下载下来(注意:多次执行会覆盖本地内容)
*** 注意:在本地提交前先pull 再push ***
git 记录日志
查看日志
$ git reflog // 查看所有提交的版本号
$ git log // 查看历史日志
$ git log --oneline // 查看简洁版日志
$ git log -p <file_name> // 显示特定文件随时间的变化
$ git log --stat -M // 显示所有提交日志,并指出任何移动的路径
$ git log branchB..branchA // 显示 branchA 上不在 branchB 上的提交
$ git diff branchB...branchA // 显示 branchA 中不在 branchB 中的内容的差异