常用的Git命令
基础知识
- HEAD: 默认是本地已commit的最新commit_id
- origion/master: 默认是远程已push的最新commit_id
分支
本地分支:
新建:
- 远程不存在: git branch ${branch_name}
- 远程存在: git checkout -b ${branch_name} origin/${branch_name}
切换:
- git checkout ${branch_name}
查看:
- 列出本地所有分支: git branch
- 列出当前分支: git branch 会在当前分支前加星号.
修改:
删除:(需要切换到其他分支, 不能在当前分支下删除当前分支)
- 未跟踪远程分支: git branch -d ${branch_name}
- 已跟踪远程分支:
- git branch -d ${branch_name} //删除本地分支
- git push origin –delete ${branch_name} //删除远程分支
远程分支:
推送:
- 远程分支不存在(则新建): git push origin ${branch_name}
- 远程分支存在: git push
新建:
查看:
- 远程仓库具体地址: git remote -v
- 远程分支列表: git branch -a; git branch -r
删除
- 仅删除远程分支:
- git branch -d -r origin/${branch_name}
- git push origin :${branch_name}
- 删除本地+远程:
- git branch -d ${branch_name} //删除本地分支
- git push origin –delete ${branch_name} //删除远程分支
本地&远程关联关系:
查看:
git branch -vv
添加绑定:
- 远程分支已存在:
git branch --set-upstream ${branch_name} origin/${branch_name}
- 远程分支未存在:
git push -u origin ${branch_name}
删除:
- 仅删除绑定关系, 本地与远程分支都不删除: git branch –unset-upstream
- 仅删除远程分支: git branch -d -r origin/${remote_branch}
commit
查看
- 当前分支: git log
- 指定分支: git log ${branch_name}
变更
未stage的变更:
- 添加至stage: git add
- 添加至stash: git stash save “comments”
- 查看diff具体内容: git diff
- 丢弃(覆盖本地变更): git checkout .
- 删除本地(未加入.gitigonre的文件): git clean -f
- 删除本地目录: git clean -fd
- 删除本地(已经加入.gitigonre的文件): git clean -fX
已stage, 未commit的变更:
- 添加至本地repo: git commit -m “comments”
- 查看diff具体内容: git diff HEAD
- 丢弃
- 变更内容退回至unstage: git reset HEAD .
- 变更内容退回至彻底丢弃: git reset –hard HEAD .
已commit, 未push的变更:
- push: git push
- 查看diff具体内容:
- git log // 拿到commit_id
- git diff origin/master commit_id
- 丢弃:
- 变更内容退回至unstage: git reset commit_id
- 变更内容退回至彻底丢弃: git reset –hard commit_id
已push的变更:
- 查看diff具体内容: git diff commit_a commit_b 或者 git show commit_no
- 丢弃:
stash的详细变更信息
- 查看stash列表: git stash list
- 将stash的内容进行unstage: git pop stash_id
- 查看stash具体内容(而不pop出来): git stash show -p stash_id
将stash内容删除
git stash drop stash_id
问题排查&修复
SSL
LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
git config --global --unset http.proxy
常用技巧
- 压缩commit
- resolve conflicts
- cherry-pick