Git 配置与常用操作

Tag:  Posted on 2020-02-17 23:00:30 Edited on 2020-04-12 19:10:43

配置

  1. ~/.gitconfig:git 的全局配置文件
  2. .git/config:git 的本地配置文件
  3. git config --global user.name "Your Name"
  4. git config --global user.email "email@example.com"
  5. git config --global color.ui true
  6. git config core.autocrlf true

常用命令

  • git diff:查看差异 -HEAD -- filename:查看工作区和版本库里面最新版本的区别
  • git log:查看日志
    • --abbrev-commit:仅显示 SHA-1 的前几个字符
    • --graph:显示 ASCII 图形表示的分支合并历史
    • --pretty=oneline:一行显示,只显示哈希值和提交说明
  • git reset:回退版本
    • --hard HEAD^:回退到上个版本
    • --hard HEAD^^:回退到上上个版本
    • --hard hash / tag:回退到指定版本
    • HEAD filename:撤销暂存区的修改,重新放回工作区(已 add 但未 commit
  • git reflog:查看历史命令
  • git status:查看状态
  • git add:把要提交的更改放到暂存区(stage)
  • git commit:把暂存区的所有更改提交到分支
    • -m:本次提交的描述
  • git branch:查看当前分支
    • branchname:创建 branch
    • -d branchname:删除 branch
    • -D branchname:强制删除 branch(如果分支上有未合并的更改且我们确定要删除该分支时)
    • --set-upstream-to=origin/dev dev:指定本地 dev 分支与远程 origin/dev 分支的链接
  • git merge:如果出现冲突,git 会将冲突的内容复制到当前分支上,且会有标记,删除或修改之后 git commit 即可
    • branchname:将指定分支合并到当前分支
    • --no-ff:禁用 Fast forward,这样即使在删除分支后也会保留分支信息
  • git checkout
    • branchname:切换 branch
    • -- filename:丢弃工作区中指定文件的修改(未 add 前)
    • -b branchname:创建并切换 branch
      • origin/dev:创建远程 origin 的 dev 分支到本地
  • git switch:(需要较新的版本)
    • -c branchname:创建并切换 branch
    • branchname:切换到已有的分支
  • git rm:将文件删除并将删除提交到暂存区(恢复的话需要两步,首先撤销暂存区操作 git reset HEAD filename,之后撤销工作区操作 git checkout -- filename)
    • -r dirname:删除文件夹
  • git push: 将 commit 推送到远程仓库
    • -u origin master:推送到 origin 的 master 分支上,并把本地的 master 分支和远程的 master 分支关联起来,用以简化以后的推送和拉取的命令
    • origin branch:推送到 origin 的 master 分支上
    • origin tagname:推送目标 tag 到远程
    • --tags:推送所有标签
  • git clone:克隆 git 仓库,支持多种协议,默认的 git:// 使用 ssh 协议,使用 https 则第一次使用需要输入账号和密码
  • git stash:将当前工作区存储起来,之后可以恢复
    • list:列出已存储的工作区
    • apply:恢复工作区
      • stash@{0} :指定要恢复的 stash
    • drop:删除 stash 的内容
    • pop:恢复并删除 stash 的内容
  • git cherry-pick
    • hash / tag:复制一个特定的 commit 到当前分支
  • git remote:查看远程库的信息
    • -v:显示更详细的远程库信息
  • git pull:从远程对应分支拉取内容
  • git rebase:整理提交历史
  • git tag:查看所有标签
    • v0.0.0:给当前最新提交的 commit 打上标签
      • hash:给目标 commit 打上标签
      • -m:指定说明文字
    • -d v0.0.0:删除标签
  • git show
    • tagname:查看标签信息

创建 SSH 密钥对

ssh-keygen -t ras -C "example@example.com" 私钥位置:~/.ssh/id_rsa 公钥位置:~/.ssh/id_rsa.pub github ssh keys gitee ssh keys

Git 同时 push 到两个远程分支

git remote add origin url_one
git remote set-url --add origin url_two

验证:git remote -v 单独 push 其中一个 remote:git push git@domain.com:username/project https://gist.github.com/bjmiller121/f93cd974ff709d2b968f https://www.jianshu.com/p/dee791260538

以上为一个 remote 有两个 url 的情况,以下为两个 remote 的情况:

git remote add github git@github.com:username/project
git remote add gitee git@gitee.com:username/project
git push github master
git push gitee master

Git 分支管理

  1. master 分支仅用来发布新版本
  2. dev 分支上平常提交代码
  3. 每个人有自己的一个分支,平时往 dev 分支上合并

参考

  1. https://www.liaoxuefeng.com/wiki/896043488029600
  2. http://www.runoob.com/w3cnote/android-tutorial-git-repo-operate.html
  3. https://git-scm.com/book/zh/v2/