git是一个版本控制器,主要是用来对代码进行版本管理,可以方便地查到git的不同版本和修改。目前接触到的场景包括:新建分支(很少),提交修改,分支合并等。


常用的git命令

# 使用带有hook的git时,一般的代码提交过程如下
git checkout main  # 切换到主分支
git pull  # 同步主干分支的代码
git checkout branch-name  # 切换到目标分支
git merge main # 合并主干分支
git status  # 查看当前分支的状态
git add files  # 添加文件进入暂存区
pre-commit  # 自动检查代码
git commit -m "message"  # 提交代码到当前分支工作区
git merge main  # 合并主分支的代码 可能需要处理冲突
git push


# 创建分支
git branch -- set-upsteam-to=origin/branch-name
# 或者使用下面的组合命令
git branch -b branch-name  # 创建分支
git push origin branch-name  # 将本地分支推到远程仓库

# 仓库迁移 变更地址
git remote #查看远程地址
gti remote set_url origin ADDR  # 将地址修改为ADDR

# 对没有add的文件撤回修改的文件
git checkout filename  # 取消修改的文件
# 对已经add但是没有commit的文件
git reset HEAD filename 
# 追加一次修改并合并到上一此提交
git add filename 
git commit --amend -m "note"  
# 对于已经commit的文件
git reset HEAD^  # 撤回上一次提交的代码
git reset HEAD~2 # 撤回上两次提交的代码
git reset commit_id  # 撤回commit_id 指定的代码
git reset --hard commit_id  # 放弃所有修改,回退到指定的版本
# 对于已经push的代码 需要先修改本地版本再强推上去



# stash 暂存区
git stash  # 将目前全部分修改移动到stash暂存区
git stash clear # 清楚stash暂存区
git stash drop stash@{no}  # 删除stash队列中第no个对象
git stash save "save_name"  # 保持到暂存区的同时 命名

git reset --head version_no  # 查看历史版本 version_no是版本号


git log  # 查看历史提交记录


# 查看代码变更
git diff  # 查看本地代码的全部文件的变更
git diff file-name # 查看本地指定文件的变更
git diff branch1 branch2  # 比较两个分支的差异
git diff branch1-name branch2-name  # 比较两个分支指定文件的差异


# 查看历史版本的详细修改情况
git diff --staged  # 比较暂存区与上一次commit的差距,理解为可以在add轴查看修改的内容
git show version_no # 默认展示最近一次提交的修改


# 合并其他分支的部分文件
git checkout other-branch-file current-file-name


# 撤回已经add的文件
git reset file

参考的部分链接

Git - Community (git-scm.com)