git 常用操作整理

git 配置

# 用户名/邮箱配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

# 别名配置
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

创建版本库

  • git init 初始化 git 仓库。
  • git add <file> 添加文件。
  • git commit [file] -m <message> 提交文件。
  • git status 查看当前仓库状态。

版本回退

  • git diff [commit_id] -- [file] 查看修改了哪些内容。
  • git log [pretty=oneline] 查看提交日志。
  • git reset --hard <commit_id> 回退到某个版本,版本号不用写全。
    • git reset --hard HEAD^ 回退到上个版本,,HEAD为当前版本,HEAD^^上上个版本,HEAD~10 前10个版本。
  • git reflog 查看历史版本,以便确定要回到未来的哪个版本。

撤销修改

  • git checkout -- file 丢弃工作区修改,回到最近一次git commit或git add时的状态,前提是未放入暂存区的。
  • git reset HEAD <file>可以把暂存区的修改撤销掉
    • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
    • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
    • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

  • git rm file 删除文件,然后 commit,如果误删未提交可以使用git checkout -- file 恢复。

添加远程仓库

# 添加远程仓库
git remote add origin git@github.com:duke-james/teste.git
# push 到远程仓库,第一次推送加 -u
git push -u origin master

# 查看远程仓库信息
git remote -v

创建与合并分支

# 创建分支并跳转到指定分支,-b 表示后跳转到新分支
git checkout -b dev
# 从远程分支创建新分支
git checkout -b dev origin/dev

# 查看所有分支
git branch
# 切换分支
git checkout master
# 合并分支
git merge dev
# 删除分支
git branch -d dev

# 查看分支图
git log --graph --pretty=oneline --abbrev-commi

分支管理策略

合并分支时,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

# 合并分支,--no-ff 参数,表示禁用 Fast forward:
git merge --no-ff -m "merge with no-ff" dev

变基

# 使提交记录变成一条直线
git rebase

标签管理

# 创建标签
git tag v1.0 -m "版本发布"
# 从历史节点创建表签
git tag v0.9 f52c633 -m "版本发布"
# 查看标签信息
git show v1.0
# 删除标签,先删除本地再推送到远程
git tag -d v0.9
git push origin :refs/tags/v0.9

# 推送某个标签到远程
git push origin v1.0
# 推送所有标签到远程
git push origin --tags

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://dukec.cn/archives/2019101416555635417

Buy me a cup of coffee ☕.