将Git仓库回退到指定的提交
- 使用
git reset
如果想要回退到某个提交,并且不保留之后的提交(会丢失更改)
git reset --hard <commit-hash>
- 使用
git revert
如果想要保留提交历史,创建一个新的提交来反转指定的提交(对单个生效)
git revert <commit-hash>
- 使用
git checkout
(适用于分支)
临时查看某个提交
git checkout <commit-hash>
- 注意:这会处于“游离头”状态,建议在确认后创建新分支
git checkout -b new-branch-name
注意事项
- 在使用
git reset --hard
时要小心,因为这会丢失所有未保存的更改。 - 在团队合作中,使用
git revert
更加安全,因为它不会改变提交历史。
删除本地分支并同步远程
要删除本地分支并同步到远程仓库:首先删除本地分支,然后删除远程分支
1. 删除本地分支
可以使用 git branch
命令来列出所有分支,然后使用 git branch -d <branch_name>
或 git branch -D <branch_name>
来删除本地分支。
-d
选项用于删除已经合并到当前分支的分支。-D
选项用于强制删除尚未合并的分支(请注意大写 “D”)。
例如,要删除名为 feature-branch
的本地分支,可以执行:
git branch -d feature-branch
或者,如果该分支尚未合并,则使用:
git branch -D feature-branch
2. 删除远程分支
在删除了本地分支后,需要删除远程仓库中的对应分支。可以通过 git push
命令的 :<branch_name>
语法来实现。
例如,要删除名为 feature-branch
的远程分支,可以执行:
git push origin :feature-branch
或者可以使用更简洁的 git push
选项 -delete
(在某些 Git 版本中可用):
git push origin --delete feature-branch
显示仓库引用列表/测试仓库是否存在
git ls-remote http://xxx.git
查看git本地信息
git config --list
# 查看用户名和邮箱
git config user.name
git config user.email
更新仓库remote链接
git remote set-url origin http://xxxxx.git
拉取全部信息
git fetch -a
切换到上一个分支
git checkout -
内容比较
比较工作区和暂存区不同
git diff
比较两个 commit 之间的文件变动
git diff <commit-id> <commit-id>
查看所有分支
git ls-remote --heads ssh://git@10.254.180.148:20495/PZCPHPT.ZDHBS/auto_upgrade_script.git
克隆最近一次提交
git clone --depth=1 ssh://git@10.254.180.148:20495/PZCPHPT.ZDHBS/auto_upgrade_script.git
配置用户名、邮箱
配置当前项目
git config user.name "chengyh"
git config user.email "977599667@qq.com"
查看当前配置
git config --list
配置全局设置
git config --global user.name chyuhung
git config --global user.email 977599667@qq.com
查看全局配置
git config --global --list
取消全局配置
git config --global --unset user.name
git config --global --unset user.email
回到远程仓库状态
硬重置本地,将当前分支重置到远程仓库中 origin
的 dev
分支的最新提交
git reset --hard origin/dev
大仓库拉取
拉取最近一次
1、拉取指定分支
git clone -b dev ssh://git@xxxx/xxxx/auto_deploy_script.git
2、指定分支并只拉取最近一次提交
git clone -b dev --depth=1 ssh://git@xxxx/xxxx/auto_upgrade_script.git
新建空仓库拉取
1、本地直接新建对应仓库
mkdir <repo名称>
2、初始化git仓库(即新建.git/)
git init
3、配置remote origin
git remote add origin <repo地址>
4、新建待拉取对应分支(默认为master)
git checkout -b <对应分支名>
5、拉取特定分支
git pull origin <对应分支名>
分支合并
1、切换到特定分支并拉取最新代码,完成相关代码修改提交
git checkout feature-compmgmt1015
git pull
2、切换到主分支,拉取最新代码
git checkout dev
git pull
3、合并代码到主分支
git merge feature-compmgmt1015
# 解决有合并冲突的文件
# git restore <非我们改动的文件>
# git add . && git commit -m '解决有合并冲突的文件'
git push
4、查看git日志
git log
5、恢复文件
git restore --staged .
git restore .
6、显示指定commit修改内容
git show 685b7067992b4ee1230fe38cc1c9dec2beb60e55
git status
合并冲突,放弃合并
放弃合并
git merge --abort
并重置本地分支到远程状态
git reset --hard origin/主分支名称
分支跟踪
设置本地dev分支跟踪远程dev分支
$ git remote -v
origin ssh://git@xxxx/xxxx/auto_upgrade_script.git (fetch)
origin ssh://git@xxxx/xxxx/auto_upgrade_script.git (push)
$ git checkout dev
Switched to branch 'dev'
$ git branch --set-upstream-to=origin/dev dev
branch 'dev' set up to track 'origin/dev'.
暂存
git stash
用于暂时保存当前工作目录的修改(包括暂存区和未暂存的修改)
基本用法
- 暂存当前修改
git stash
这将保存所有未提交的修改并将工作目录恢复到最新提交的状态。
- 查看已保存的stash
git stash list
- 恢复最近的stash
git stash apply
应用最近一次保存的stash,但不会删除该stash。
- 恢复并删除最近的stash
git stash pop
- 恢复指定的stash
git stash apply stash@{n}
其中 n
是 git stash list
命令中显示的stash索引。
- 删除指定的stash
git stash drop stash@{n}
- 清除所有stashes
git stash clear
示例
使用 git stash
来保存当前的工作:
# 暂存当前修改
git stash
# 切换到需要修复bug的分支
git checkout bugfix-branch
# 修复bug并提交
git commit -am "Fix critical bug"
# 切换回开发新功能的分支
git checkout feature-branch
# 恢复之前的修改
git stash pop