git

git 常用指令

git常用指令总结

Posted by MurphyChen on March 4, 2020

对 git 常用命令进行了总结,方便查询。

git 基本配置

用户信息

全局配置/修改个人用户信息和电子邮件地址

git config --global user.name "user_name"
git config --global user.email user_email

--global 是全局配置,这里指你的所有项目都会默认使用所配置的用户信息 给某个项目特定配置用户信息,请去掉 --global

查看用户信息

查看所有信息

git config --list

查看用户名/邮箱

git config user.name
git config user.email

生成本地公钥和私钥

生成本地公钥,在github创建 SSH key,从而达到一种身份认证的效果。将公钥复制到所创建的 SSH key中,从而获得了一把钥匙,只有拥有钥匙的人能提交代码到你的仓库。

输入以下命令,会让你输入密码,一般一路回车就行。

ssh-keygen -t rsa

之后会在 .ssh 文件夹里面生成一个私钥 id_rsa 和一个公钥 id_rsa.pub。

在 Windows 系统中,公钥和密钥会在 C:\Users\<your_computer_name>\.ssh 中。
在 Linux 系统中,会生成在 ~/.ssh 中,使用以下命令即可查看。

cat ~/.ssh/id_rsa.pub

文本编辑器

git 的默认文本编辑器是 Vim 或 Vi,可以根据偏好重新设置

git config --global core.editor <your_editor>

git 基本操作

git init

初始化项目,创建一个 git 本地仓库,在该目录下生成一个 .git 文件夹。

mkdir projcet
cd project
git init
ls
project/ .git/

git add

将工作区文件的改动添加到暂存/缓存区

  • 添加项目中所有修改的、新增的文件
git add .
  • 添加项目所有修改的、新增的、删除的文件
git add -A
  • 添加指定文件
1
git add <file1> <file2>

git status

查看项目内文件的提交/缓存状态

1
git status

加上参数 -s 显示状态的细节

$ git status -s
?? file5 ## 新添加的未跟踪文件
A  file3 ## 新添加到暂存区中的文件
MM file1 ## 修改过的文件
 M file2 ## 右边的 M 表示该文件被修改了但是还没放入暂存区
M  file4 ## 左边的 M 表示该文件被修改了并放入了暂存区

git commit

git 每一次提交都将记录用户名和邮箱,所以要先配好信息。 提交到版本库, -m 属性后面是本次提交的注释。 Github 里面的日志就是根据 commit 计算的。

git commit -m "message"

可以用添加 -a 属性跳过 git add这一步

git commit -a -m "message"

git push

git push 将本地库分支推送到远程库分支(github) 命令格式:git push <远程主机名> <本地分支名> <远程分支名> 远程主机名为 origin,本地分支为 master,省略远程分支名:(常用)

git push origin master

当远程库是空的(首次推送)时候,加上参数 -u,就会将本地的 master 分支和远程的 master 分支关联起来,在以后 pushpull 时就可以简化命令。

1
git push -u origi master

下次推送或拉取使用简化命令:

1
2
git pull
git push

git pull

git pull 将远程主机的 master 分支最新内容拉下来后与当前本地分支直接合并

git pull origin master

git fetch

git fetch 将远程主机的最新内容拉到本地,不进行合并

git fetch origin master

git clone

克隆远程库的项目到本地 git clone

1
2
3
4
5
6
7
8
### git diff

`git diff` 用于比较两次修改的差异

工作区 VS 暂存区
```git
git diff ## git diff无参数默认情况

暂存区 VS 版本库/Git 仓库

git diff --cached

工作区 VS 版本库

git diff HEAD

显示摘要

git diff --stat

git reset

取消已经缓存到缓存区的内容

git reset HEAD

git rm

从工作区删除

git rm <filename>

从缓存区强制删除

git rm -f <filename>

从缓存区删除但仍保留在工作区

git rm --cached <filename>

通配删除,将会递归删除当前目录下所有子目录和文件

git rm -r *

git mv

重命名一个文件

git mv <from_from> <file_to>

git remote

本地 Git 库和和远程仓库是通过 SSH 加密的,需要提前配置好 查看当前有哪些远程库

git remote
git remote -v

新增远程库

git remote add origin <project_url>
git remote add <远程仓库别名> <project_url>

删除远程库

git remote rm origin git remote rm <远程仓库别名>