git常用命令

1 安装

python 复制代码
brew install git	(mac
sudo apt-get install git	(linux
windows: 官网下载

2 配置

python 复制代码
git config --global user.name "xxx"
git config --global user.email "xxx"

3 检查配置

python 复制代码
git config --global --list

4 生成本地ssh key

python 复制代码
ssh-keygen -t rsa -C "your email@xxx.com"

5 查看本地 ssh key

python 复制代码
cat ~/.ssh/id_rsa.pub

6 初始化-git init

python 复制代码
# 在当前目录下初始化一个 Git 仓库
git init
# 创建一个裸仓库
git init --bare
# 使用指定的模板目录初始化仓库
git init --template=<template_directory>
# 设置仓库的共享模式
git init --shared

7 克隆仓库-git clone

python 复制代码
# 克隆远端仓库到本地
git clone <git url>

# 克隆远端仓库到本地,并同时切换到指定分支 branch1
git clone <git url> -b branch1

# 克隆远端仓库到本地并指定本地仓库的文件夹名称为 my-project
git clone <git url> my-project

8 查看状态-git status

9 提交到临时仓库-git add

python 复制代码
# 将所有修改的文件都提交到暂存区
git add .

# 将修改的文件中的指定的文件 a.js 和 b.js 提交到暂存区
git add ./a.js ./b.js

# 将 js 文件夹下修改的内容提交到暂存区
git add ./js

10 提交到本地仓库-git commit

python 复制代码
# 将工作区内容提交到本地仓库,并添加提交信息xxx
git commit -m "xxx"
                            
# 合并上一次提交(用于反复修改)
git commit --amend -m 'xxx'   
                                     
# 将add和commit合为一步
git commit -am 'xxx' 

# 将工作区内容提交到本地仓库,并对上一次 commit 记录进行覆盖
git commit -m "new message" --amend

# 将工作区内容提交到本地仓库,并跳过 commit 信息填写
git commit --amend --no-edit

# 跳过校验直接提交,很多项目配置 git hooks 验证代码是否符合 eslint、husky 等规则,校验不通过无法提交
git commit --no-verify -m "commit message"

11 查看变更-git diff

python 复制代码
# 显示所有未添加至index的变更
git diff

# 显示所有已添加index但还未commit的变更
git diff --cached

12 显示分支- git branch

python 复制代码
# 显示本地分支
git branch      

# 显示所有分支
git branch -a

# 显示所有已合并到当前分支的分支
git branch --merged

# 本地分支改名
git branch --no-merged                                          

13 切换分支-git checkout

python 复制代码
# 切换到已有的本地分支 branch1
git checkout branch1

# 切换到远程分支 branch1
git checkout origin/branch1

# 基于当前本地分支创建一个新分支 branch2,并切换至 branch2
git checkout -b branch2

# 基于远程分支 branch1 创建一个新分支 branch2,并切换至 branch2
git checkout origin/branch1 -b branch2
## 当前创建的 branch2 关联的上游分支是 origin/branch1,所以 push 时需要如下命令关联到远程 branch2
git push --set-upstream origin branch2

# 撤销工作区 file 内容的修改。危险操作,谨慎使用
git checkout -- <file>

# 撤销工作区所有内容的修改。危险操作,谨慎使用
git checkout .

14 提交到远程仓库-git push

python 复制代码
# 将当前本地分支 branch1 内容推送到远程分支 origin/branch1
git push

# 若当前本地分支 branch1,没有对应的远程分支 origin/branch1,需要为推送当前分支并建立与远程上游的跟踪
git push --set-upstream origin branch1

# 强制提交
## 例如用在代码回滚后内容
git push -f

15 拉取远程仓库并合并-git pull

python 复制代码
# 若拉取并合并的远程分支和当前本地分支名称一致
git pull

# # 若拉取并合并的远程分支和当前本地分支名称不一致
git pull <远程主机名> <分支名>
## 例如当前本地分支为 branch2,要拉取并合并 origin/branch1,则执行:
git pull git@github.com:zh-lx/git-practice.git branch1

# 使用 rebase 模式进行合并
git pull --rebase

16 取消缓存-git restore

python 复制代码
# 将 a.js 文件取消缓存(取消 add 操作,不改变文件内容)
git reset --staged a.js

# 将所有文件取消缓存
git reset --staged .

17 回滚代码- git reset

python 复制代码
# 将某个版本的 commit 从本地仓库退回到工作区(取消 commit 和 add 操作,不改变文件内容)
## 默认不加 -- 参数时时 mixed
git reset --mixed <commit_sha>

# 将某个版本的 commit 从本地仓库退回到缓存区(取消 commit 操作,不取消 add,不改变文件内容)
git reset --soft <commit_sha>

# 取消某次 commit 的记录(取消 commit 和 add,且改变文件内容)
git reset --hard <commit_sha>

## 以上三种操作退回了 commit,都是退回本地仓库的 commit,没有改变远程仓库的 commit。通常再次修改后配合如下命令覆盖远程仓库的 commit:
git push -f
相关推荐
爱奥尼欧2 小时前
【Git】远程分支删了本地还在、两个分支历史不相干?两招故障排解
开发语言·git
Java后端的Ai之路2 小时前
Git冲突完整排查与实战:本地修改覆盖报错到成功推送全流程复盘
开发语言·人工智能·git·python·pop
一个心烑3 小时前
配置项目git的 SSL 证书
git·网络协议·ssl
IT从业者张某某11 小时前
【鸿蒙PC命令行适配】GitUI 移植的工程实践:双 Git 引擎(libgit2/gitoxide)的鸿蒙适配之路
git·华为·harmonyos
xinjia_ctrl14 小时前
暑假实习总结
git·后端·spring·maven·intellij-idea
Molesidy17 小时前
【Git】分别给出添加到Keil工程和IAR工程中的gitnore文件以便不跟踪编译文件的git记录
git·vscode·插件
颜颜yan_21 小时前
Git Cola 鸿蒙 PC 版适配全记录:从 Qt 桌面工具到 ArkTS 原生应用
git·qt·harmonyos
知福致福1 天前
【技术复盘】Git 分支污染与提交污染事故排查与解法
大数据·git·elasticsearch
ai安歌1 天前
Git Extensions 鸿蒙 PC 适配全记录:从 WinForms 客户端到 ArkUI 原生工作台
git·华为·harmonyos