Git

详细命令及解释

官方文档


以下 仓库 指版本库 ( respository )

本地和远程

命令 解释
git config --global user.name <用户名>
git config --global user.email <邮箱>
设置你本地全局用户名和邮箱,不加参数为查看
git config user.name <用户名>
git config user.email <邮箱>
设置你当前仓库的用户名和邮箱,不加参数为查看
git init 在当前目录下初始化一个空的仓库
git remote add origin <远程仓库地址> 设置远程仓库地址,即设置origin的值
git remote -v 查看远程仓库的信息,即查看origin的值
git remote rm origin 移除远程仓库地址,即删除origin
git config --list 查看当前和全局的所有配置
git config --system --list 查看全局(计算机)配置
git config --global --list 查看全局(计算机当前登录用户)配置
git config --local --list 查看本仓库配置

暂存、提交和推送

命令 解释
git add <xxx/.> 将xxx或所有文件添加到暂存区
git commit -m "<comment>" 将暂存区的文件提交到本地仓库
git commit --amend -m "comment" 修改最近一次提交的备注信息
git status 查看本地工作区、暂存区中文件的修改状态
git push origin 将本地仓库的变更内容推送到远程仓库
git push -u origin 推送,并将origin设为默认主机,之后simple推送可以省略origin
git log
git log --oneline
git reflog
git log --oneline -3
查看日志
查看日志,按行显示
查看操作记录
按行查看3行日志

比较差异和回退代码

命令 解释
git diff 比较工作区与暂存区的差异
git diff <分支名> 比较工作区与仓储区(指定分支)的差异 ( 添加--stat参数,输出差异文件列表 )
git diff <commit id> 比较工作区与仓储区(指定版本)的差异 ( 添加--stat参数,输出差异文件列表 )
git diff --cached 比较暂存区与仓储区的差异
git diff <文件路径>
git diff <commit id> <文件路径>
比较工作区与仓储区指定路径、指定版本号、指定文件的差异
git diff master origin/master 比较本地仓库与远程仓库的主分支
git reset <文件路径 或 .> 重置某文件到仓储区最新版本
git reset <commit id> 重置到指定版本(此时工作区并未回退)
git reset <commit id> --hard 重置到指定版本(!同时回退工作区)
git checkout <文件路径 或 .> 将指定的文件从暂存区拉回工作区,如果没有暂存则指向仓储区
git push -f 将本地仓储区强制推送到远程,使远程仓库版本与本地强制同步

分支

命令 解释
git branch 查看本地所有分支
git branch -r 查看远程所有分支
git branch -a 查看所有分支(本地和远程)
git branch <分支名> 创建分支
git checkout <分支名> 切换到某个分支
git branch -d <分支名> 删除某个分支
git push origin --delete <分支名> 删除某个远程分支
git merge <分支名> 将某个分支合并到当前分支上
git branch -vv 查看本地和远程分支的对应关系
git branch --set-upstream-to=origin/<远程分支名> <本地分支名> 设置本地和远程分支的对应关系

贮藏

命令 解释
git stash 贮藏
git stash push -m <message> <path> 贮藏,贮藏消息及文件
git stash list 查看贮藏列表
git stash apply 应用顶部第一个贮藏(不删除该贮藏)
git stash apply stash@{<number>} 应用指定顺序的贮藏(不删除该贮藏)
git stash pop 应用顶部第一个贮藏,并删除该贮藏
git stash pop stash@{<number>} 应用指定顺序的贮藏,且删除该贮藏
git stash drop 直接删除顶部第一个贮藏(!警告,你将失去该贮藏)
git stash drop stash@{<number>} 直接删除指定顺序的贮藏(!警告,你将失去该贮藏)

SSH

关于 git 的 ssh (Secure Shell) (安全外壳协议)
通常我们在本地生成公钥和私钥;然后在 git 远程版本库账户中添加该公钥。这样,在每次pull和push的时候,就会解密比对远程存储的公钥与本地的私钥,以验证身份的合法性。

// 通常,公钥、私钥都存储在 .ssh 文件夹中。
// 我们在生成它们之前,不妨先检查一下,它们是否已经存在。
ls ~/.ssh -l

// 如果输出为空,表明当前不存在公钥、私钥
// 这时,我们可以生成公钥、私钥
ssh-keygen
// 该命令将会生成公钥、私钥。在生成时,需要作一些配置,默认即可。

// 当我们生成公钥、私钥之后,或者公钥、私钥已经存在时,"ls ~/.ssh -l"命令将会输出:
-rw-r--r-- 1 John 197121 1675 七月 12  2017 id_rsa
-rw-r--r-- 1 John 197121  405 七月 12  2017 id_rsa.pub
-rw-r--r-- 1 John 197121 2778 四月 24 22:19 known_hosts

// 其中 id_rsa 为私钥; id_rsa.pub 为公钥; kuown_hosts 中保存了你所绑定的所有远程版本库地址
// 你可以通过以下命令查看公钥,然后拷贝它
cat ~/.ssh/id_rsa.pub

LF&CRLF

配置 含义
git config --global core.autocrlf true 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf false 提交检出均不转换
git config --global core.autocrlf input 提交时转换为LF,检出时不转换
git config --global core.safecrlf true 拒绝提交包含混合换行符的文件
git config --global core.safecrlf false 允许提交包含混合换行符的文件
git config --global core.safecrlf warn 提交包含混合换行符的文件时给出警告

其他

一般地,如果我们不需要git跟踪某个文件或文件夹的话,我们只需在.gitignore文件中标记下来即可;
特别地,如果一个文件已经被跟踪了,我再想取消跟踪它,该怎么办呢?

git update-index --assume-unchanged [file_path]

在本地标记该文件为 <未更改的状态> (取消跟踪该文件)
mark files as "not changing"

git update-index --no-assume-unchanged [file_path]

清除上面对该文件的标记,重新跟踪该文件
clear assumed-unchanged bit

git ls-files -v | grep '^h\ '

如果使用以上方式标记的文件多了,可以使用此命令查看具体哪些文件被标记了。

git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8

解決git log日志乱码问题

posted @ 2021-09-01 11:53  海焰  阅读(61)  评论(0编辑  收藏  举报