Git常见命令和操作 首先我们需要了解几个基本概念工作区、暂存区、本地仓库和远端仓库。一般来说当我们使用git clone拉取远端代码时比如拉取远端的aaa分支Git 会在本地创建一个同名的本地分支aaa并将该分支的代码checkout到本地仓库工作区。接下来你可以在该工作区修改代码比如编辑xxx.c文件。修改完成后使用git add命令将修改的文件添加到暂存区表示这些改动已准备好提交。然后使用git commit命令将暂存区中的改动提交到本地仓库即保存为一个新的提交记录。此时修改已经保存在本地仓库但远端仓库中的代码尚未更新。若要将本地的提交同步到远端仓库需要执行git push命令将本地分支的提交推送到远端仓库对应的分支。以上是git的基本使用下面一些常见的日常使用命令1、查看本地分支、切换分支、创建、删除分支等操作# 查看本地分支 git branch # 查看远端分支 git branch -r # 查看本地和远端所有分支 git branch -a # 切换分支Git 2.23 之前 git checkout 分支名 # 切换分支Git 2.23 及以后 git switch 分支名 # 创建新分支仅创建不切换 git branch 新分支名 # 创建新分支并切换Git 2.23 之前 git checkout -b 新分支名 # 创建新分支并切换Git 2.23 及以后 git switch -c 新分支名 # 删除已合并的本地分支 git branch -d 分支名 # 强制删除本地分支未合并也删除 git branch -D 分支名 # 查看当前所在分支 git branch --show-current2、使用git add将工作区修改保存到暂存区但想改回来。候注意 我们修改了代码 add了一份代码到暂存区 相当于是两份。 # 把add后暂存区的东西清了但本地的修改还在。 git restore --staged . #把本地的清除但add的东西还在。 git restore . #上面两个的命令加起来 git restore --staged --worktree . 例如我们改了xxx.c后将他add到了暂存区如果我们想直接删掉这个同时本地也把他删了直接运行第三个。如果我们是对这个文件还需要修改运行第一个命令修改后可以再add。3 、commit回退操作git reset --soft HEAD~1 //把最近一次提交的内容撤销到暂存区保留改动取消提交 git reset --mixed HEAD~1 //与下一条作用相同 git reset HEAD~1 //把最近一次提交的内容撤销到工作区保留改动取消提交和暂存 git reset --hard HEAD~1 //彻底撤销提交且 丢弃改动 谨慎使用 提交到东西会直接删除4、想拉取最新代码在最新代码上修改你本地代码已经 clone 下来了但远端仓库有别人提交了新的改动所以你本地的代码不是最新的。如果你直接修改并提交可能会遇到问题。比如别人修改了a文件并推送到了远端而你修改的是b文件但你本地的a文件还是旧版本没有更新过。如果你不先拉取远端最新代码直接推送就可能导致远端的a文件改动被覆盖造成代码冲突或丢失别人提交的内容。因此在修改代码并提交之前应该先使用git fetchgit rebase或git merge将远端的最新改动同步合并到本地。这样才能保证你本地的代码是基于最新版本进行修改避免覆盖或冲突然后再提交和推送。git fetch origin git checkout master git rebase origin/master # 或 git merge origin/master # 进行代码修改后 git add . git commit -m 修改说明 git push origin master5、你在feature分支做了一半修改突然需要切换到master处理紧急问题但不想提交不完整的改动可以先git stash保存修改。# 保存当前工作区和暂存区的改动工作区恢复干净 git stash # 保存时添加描述信息 git stash save 描述信息 # 查看所有保存的 stash 列表 git stash list # 恢复最近一次保存的改动但不删除 stash 记录 git stash apply # 恢复最近一次保存的改动并从 stash 列表删除该记录 git stash pop # 删除指定的 stash比如删除第3个 stash git stash drop stash{2} # 删除所有 stash 记录 git stash clear# 当前在 feature 分支有未提交的修改 git status # On branch feature # Changes not staged for commit: # modified: xxx.c # 先把修改保存到 stash工作区恢复干净 git stash # 查看 stash 列表 git stash list # stash{0}: WIP on feature: 1234567 Commit message # 切换到 master 分支处理紧急问题 git checkout master # 处理完成切回 feature 分支 git checkout feature # 恢复之前保存的修改stash 改动仍保留 git stash apply # 如果确认改动恢复成功可以删除对应 stash git stash drop stash{0} # 或者直接用 pop一步恢复并删除 stash git stash pop6 代码已经push到远端发现还需要修改例如注释没删、commit信息有问题修改后重新push并覆盖掉远端上次提交的信息git add 文件 # 修改上一次提交包括提交信息也可改 git commit --amend -m 这次提交的信息 # 强制推送到远端覆盖之前的提交 git push --force