将Git仓库回退到指定的提交

  1. 使用 git reset

如果想要回退到某个提交,并且不保留之后的提交(会丢失更改)

git reset --hard <commit-hash>
  1. 使用 git revert

如果想要保留提交历史,创建一个新的提交来反转指定的提交(对单个生效)

git revert <commit-hash>
  1. 使用 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 用于暂时保存当前工作目录的修改(包括暂存区和未暂存的修改)

基本用法

  1. 暂存当前修改
git stash

这将保存所有未提交的修改并将工作目录恢复到最新提交的状态。

  1. 查看已保存的stash
git stash list
  1. 恢复最近的stash
git stash apply

应用最近一次保存的stash,但不会删除该stash。

  1. 恢复并删除最近的stash
git stash pop
  1. 恢复指定的stash
git stash apply stash@{n}

其中 ngit stash list 命令中显示的stash索引。

  1. 删除指定的stash
git stash drop stash@{n}
  1. 清除所有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