手记

Git 使用指南

基础配置

作用范围

配置生效范围从小到大有三种,分别是 localglobalsystem

参数 作用范围
local 对某个仓库生效
global 对当前用户所有仓库生效
system 对系统所有登录的用户生效

常用配置

# 查看配置
git config --global --list

# 编辑配置
git config -e [--global]

# 设置提交代码时的用户信息
git config --global user.name '[name]'
git config --global user.email '[email address]'

解决中文乱码

# 解决中文乱码问题 git status
git config --global core.quotepath false
# 解决中文乱码问题 gitk
git config --global gui.encoding utf-8

关闭 TLS/SSL 验证(本地部署时常用)

# To disable TLS/SSL verification for a single git command
git -c http.sslVerify=false clone https://example.com/path/to/git

# If the repository is completely under your control, you can try:
git config --global http.sslVerify false

开启代理

# 只对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

# 取消代理
git config --global --unset http.https://github.com.proxy

创建公钥

# 生成ssh_key密钥
ssh-keygen -t rsa -C "your_email@example.com"
# 生成ssh_key密钥(ED25519 算法)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 将生成的公钥推送至服务器
ssh-copy-id root@192.168.8.95
# windows复制生成的公钥
clip < ~/.ssh/
# mac复制生成的公钥
pbcopy < ~/.ssh/
# Linux复制生成的公钥
xclip -sel clip < ~/.ssh/

常用命令

获取帮助

# 通过浏览器 查看命令
git help --web [command]

初始化

# 初始化仓库
git init

单个文件增删改

# 讲工作区的文件添加到暂存区
git add [file]
# 讲工作区所有已经被git管控的文件提交到暂存区
git add -u
# 讲已被git管理的文件移除git管理
git rm [file]

# 变更文件名
git mv [oldFileName] [newFileName]

提交版本

# 携带描述提交文件到版本历史库
git commit -m 'description'
# 讲工作区里的文件携带描述直接提交到版本历史库
git commit -am 'description'
# 提交时显示所有diff信息
git commit -v

查看日志

# 查看HEAD移动历史
git reflog

# 查看日志
git log

# 查看该分支的日志
git log [branch]

# 展现[number]条日志
git log --n[number]

# 查看全部分支的全部日志
git log --all
# 图形化展示日志
git log --graph

# 仅查看日志描述
git log --oneline

# 查看简要日志,适合查看修改
git log --stat
# 查看详细日志,适合做代码review
git log -p

查看改动内容

工作区比较暂存区:git add 提交内容 git diff

暂存区比较版本历史库上一条提交:git commit 提交内容 git diff --cached

工作区比较版本历史库上一条提交:git commit -a 提交内容 git diff HEAD

# 比较工作区和暂存区
git diff

# 比较暂存区和上一条提交
git diff --staged
# 比较暂存区和HEAD的差异
git diff --cached

# 比较工作目录和上一条提交
git diff HEAD

# 比较HEAD和HEAD的前n个
git diff HEAD [HEAD-number]
# 比较HEAD和HEAD的父亲
git diff HEAD HEAD^
# 比较HEAD和HEAD父亲的父亲
git diff HEAD HEAD^^

查看提交改动内容

# 查看当前 commit
git show
# 查看任意一个 commit
git show HASH

分支操作

# 创建/切换分支
git checkout new
# 创建并跳转到该分支
git checkout new -b

# 查看本地全部分支
git branch -v
# 查看全部分支
git branch -av
# 删除分支
git branch -d new
# 强制删除分支
git branch -D new

# 查看远程仓库地址
git remote -v

变基

# 变基
git rebase

了解命令

# 查看对象类型,(输入一段标识符,查看他是个什么)
git cat-file -t

场景应用

设置远端存储

# 查看远端仓库
git remote -v

# 查看远端分支
git branch -r

# 设置远端仓库
git remote add origin git@github.com:BingMG/java-program.git

# 设置多个远端仓库
git remote add github git@github.com:BingMG/java-program.git

# 上传代码到远端分支
git push github

# 删除远端仓库
git remote remove github

# 设置多个远端仓库且同时上传
git remote set-url --add origin git@github.com:BingMG/java-program.git

Github新建仓库命令

# …or create a new repository on the command line
echo "# java-program" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:BingMG/java-program.git
git push -u origin main

# …or push an existing repository from the command line
git remote add origin git@github.com:BingMG/java-program.git
git branch -M main
git push -u origin main

本地与远端分支的联动

# 本地创建分支
git checkout -b new
# 远端创建分支并推送
git push origin new
# 删除远端分支
git push origin --delete new

# 先跳出将要删除的本地分支
git checkout master
# 删除本地分支(删除远端分支之前)
git branch -d new
# 删除本地分支(删除远端分支之后)
git branch -D new

变更工作环境

# 保存工作环境
git stash
# 保存工作环境,包括git未管控的文件也添加到git管控
git stash -u

# 查看隐藏环境中保存的列表
git stash list
# 查看隐藏环境中保存的具体信息
git stash show

# 恢复隐藏环境
git stash pop

清除本地代码

# 清除暂存区的全部修改
git reset
# 清除工作区的全部修改
git checkout .

# 清除未被管控的文件,-n为预演模式
git clean -n

# 返回到某个节点, 保留修改到工作区。
git reset --soft HASH
# 返回到某个节点,不保留修改。
git reset --hard HASH

代码写错了

无脑方案

# 安全操作,反转上上次的提交内容,形成commit,待推送至远端
git revert HEAD^

本地提交还原

# 将需要修改的文件添加到git管控
git add .
# 修改本地最近一次提交的提交信息
git commit --amend

远端提交还原

危险操作,适用单人单分支未被主分支合并场景。

# 本地修改完成之后,强制将本地版本库覆盖到远端
git push origin branch -f

将已提交的文件移除git管理

需要先更新 .gitignore文件,可通过命令行的方式直接更新

# 通过命令直接添加至git忽略文件,注意路径和内容
echo 'add file'>>.gitignore

执行移除操作

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

根据用户获取输出行数

获取Wisom用户的输出,若需要查找其他人,更换用户名

git log --author="Wisdom" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
0人推荐
随时随地看视频
慕课网APP