查看分支状态
查看分支状态,查看本地是否有修改或未提交的文件
git status
提交本地修改
当本地有修改和未提交的时候,在我们开发时建议尽量保持团队代码最新更新,及时提交每天的更新
# 添加所有修改和添加文件,也可以添加指定文件
git add .
# 添加指定文件
git add test.txt
# 提交修改
git commit -m "备注信息"
分支
推送分支
及时推送本地提交
# 推送当前分支到已关联远程分支,如果本地分支未与远程分支关联先关联远程分支或指定推送分支
git push
# 推送当前分支到远程 master 分支
git push origin master
# 关联当前分支到远程 master 分支
git push --set-upstream origin master
拉取分支最新提交
当远程分支有其他人提交了代码,这个时候我们的提交是推送不上去的,需要先拉取最新提交合并到本地后才能推送我们的提交
# 拉取最新更新并立即合并
git pull
# 拉取最新更新使用变基方式代替合并
git pull --rebase
分支重命名
- 修改分支名称:
git branch -m [旧分支名称] [新分支名称] - 删除远程分支:
git push --delete origin [旧分支名称] - 推送新分支到仓库:
git push origin [新分支名称] - 关联远程分支:
git push --set-upstream origin [新分支名称]
远程分支
查看远程分支
- 拉取远程最新提交:
git pull - 查看本地所有远程分支:
git branch -r
删除远程分支
- 删除本地远程分支:
git branch -r -d [远程分支名称] - 推送到远程仓库:
git push origin :[分支名称] - 删除远程分支:
git push --delete origin [分支名称]
储藏工作区
当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,或本应该在dev分支开发的代码,不小心在其他分支上开发了,这时可以用git stash命令将修改的内容保存至堆栈区,然后切换到hotfix分支进行bug修复,修复完成后,再切回到dev分支,从堆栈中恢复刚刚保存的内容
# 查看储藏列表
git stash list
# 查看储藏明细(x为储藏索引),如果不指定 stash@{x} 则显示最新储藏明细
# -p 显示修改信息
git stash show stash@{x} -p
# 储藏当前工作区,并添加备注信息(备注信息可以不需要,但建议每个储藏都添加备注,以便后续查找和使用)
git stash save "v1.0-30%"
# 恢复指定储藏到工作区并删除储藏;pop:弹出并删除储藏
git stash pop stash@{x}
# 应用指定储藏到工作区
git stash apply stash@{x}
# 删除指定储藏
git stash drop stash@{x}
# 删除所有储藏
git stash clean
合并多个提交为一个提交
当我们在dev分支每天提交了很多次修改,开发完成后,需要将这次开发的功能遴选到其他分支,如提交到测试分支部署,那么这个时候我们就需要将多个提交的点合并成一个提交,然后遴选到另一个分支上去
# 查看日志记录;找到本次开发第一个提交的记录,并复制第一个提交的上一次提交版本号
git log --oneline
# 变基;如:找到第一次提交的版本号是 aaa,上一次提交的版本号是 bbb
git rebase -i bbb
丢弃修改
放弃修改操作
# 丢弃所有未提交的修改
git checkout .
git checkout -- *
# 丢弃某个未提交的文件修改
git checkout -- 文件路径
# 回退到上一个版本
git reset --hard HEAD^
# 回退到上上次版本
git reset --hard HEAD^^
git reset --hard HEAD^^^
# 回退到指定commitid的版本
git reset --hard commit_id
修改提交信息
修改提交commit备注信息
# 修改备注信息(进入vim编辑模式)
git commit --amend
# 修改保存并退出
:wq
版本回退
当不小心将错误当代码推送到远程仓库想要回撤并且不留下版本记录时
适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法
步骤
- 选中要回撤到到版本,点击重置到这次提交(命令:
git reset --soft [commit_id]),此时本地版本将会重置到该版本,并且落后于远程分支 - 最后使用命令行强制推送,将本地代码强制覆盖到远程仓库
命令
- 重置提交:
git reset [--soft|--hard] [commit_id]
--soft:该参数会将工作去的文件回退到目标版本,但是不会改变暂存区的状态--hard:该参数会直接删除掉目标HEAD之后所有的操作,且工作区和暂存区都会修改- commit_id:提交版本ID
- 强制推送:
git push --force origin [branch_name]
- branch_name:分支名称
示例
# 重置提交到 4956331
git reset --soft 4956331
# 强制推送覆盖远程 dev 分支
git push --force origin dev
提交回滚
希望将当前提交的版本回滚到这次提交之前并且保留这次提交,可以使用提交回滚
适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法
步骤
- 选中要回滚的版本,点击提交回滚,此时本地分支将会回滚到该提交之前到状态,回滚也会被当作一次提交,并且领先于远程分支
- 最后推送代码即可完成远程仓库提交记录回滚,并且保留被回滚到记录
命令
- 回滚提交:
git revert -n [commit_id]
- commit_id:提交版本ID
- 推送远程:
git push origin [branch_name]
- branch_name:分支名称
示例
标签
标签相关命令
- 查看所有标签:
git tag - 显示标签名及描述信息:
git tag -ln [tag_name] - 查看标签详细信息:
git show [tag_name] - 当前commit创建标签:
git tag -a [tag_name] -m "标签备注信息" - 指定commit创建标签:
git tag -a [tag_name] -m "标签备注信息" [commit_id] - 推送本地标签到远程仓库:
git push [remote_name] [tag_name] - 推送本地所有标签推送到远程仓库:
git push [remote_name] --tags - 删除本地标签:
git tag -d [tag_name] - 删除远程标签:
git push [remote_name] :refs/tags/[tag_name]
打标签
通常在需求开发完成后,会将提交的多个点合并成一个点,然后发布,发布完成后会将发布的点遴选到master分支,并打上版本标签
步骤
- 查看本地标签信息:
git tag -ln - 添加标签并备注信息:
git tag -a [tag_name] -m "备注信息" - 推送标签到远程仓库:
git push [remote_name] [tag_name]
提取标签
提取为zip格式,输出路径可以是相对路径,也可以是绝对路径
**命令:**git archive --format=zip —output=[path]/[name].zip [tag_name]
- path:输出路径
- name:输出名称
- tag_name:标签名
**示例:**在d盘下生成包含0.8标签内容的压缩包
git archive --format=zip --output=d:/v0.8.zip v0.8
远程仓库
查看远程仓库
命令: git remote -v
示例:git remote -v
添加远程仓库
命令: git remote add [origin_name] [origin_url]
- origin_name:远程仓库名称
- origin_url:远程仓库地址
修改远程仓库
- 先删除旧远程仓库
命令: git remote remove [origin_name] 或 git remote rm [origin_name]
- origin_name:远程仓库名称
示例: git remote remove origin
- 添加新远程仓库
示例: git remote add origin xxx.git
评论区