常用命令
初始化
初始化设置用户名和邮箱
1# 设置用户名(全局配置)
2git config --global user.name "Your Name"
3# 设置邮箱(全局配置)
4git config --global user.email "Your Email"
5
6# 查看用户名
7git config user.name
8# 查看邮箱
9git config user.email
10
11# 查看当前用户的全局git配置
12git config --global --list
创建仓库
创建一个新的本地仓库(省略 project_name
则在当前目录创建)
初始化之后会出现一个名为 .git
的隐藏文件夹,可以以此来判断当前项目是否被 git
所管理
克隆一个远程仓库
1git clone <repository_url>
查看状态
1# 【红色】还未上传至暂存区的文件、【绿色】已上传至暂存区的文件
2git status
3
4# 简洁版
5git status -s
基本操作
添加文件到暂存区
1git add <file>
2
3# 添加当前目录下所有扩展名为 `.txt` 的文件到暂存区
4git add *.txt
5
6# 递归添加所有 .txt文件(包括子目录中的)
7git add '*.txt'
8
9# 添加所有更改
10git add .
提交更改
1# 只提交暂存区中的内容,不会提交工作区中的内容
2git commit -m "message"
3
4# 提交所有已修改的文件到仓库,`-a` 自动暂存所有已跟踪的文件(即那些已经被添加到仓库中的文件)中的更改,但不包括新文件(未跟踪文件)。
5git commit -a -m "message"
6
7-am
查看提交历史
1git log
2
3# 查看简洁的提交记录
4git log --oneline
5
6# 查看分支图
7git log --graph --oneline --decorate --all
分支操作
查看所有本地分支
1# 当前分支前面会有一个 * ,-r查看远程分支,-a查看所有分支
2git branch
创建一个新分支
1git branch <branch-name>
切换到指定分支
1git checkout <branch-name>
2git switch <branch-name>
创建一个新分支,并切换到该分支
1git checkout -b <branch-name>
2
3# 创建一个新分支并立即切换到该分支,-c 是 --create 的简写
4git switch -c <branch-name>
恢复分支到某一次提交的状态
1git checkout -b <branch-name> <commitId>
删除一个已经合并的分支
1git branch -d <branch-name>
删除一个分支,不管是否合并
1git branch -D <branch-name>
给当前提交打上标签,通常用于版本发布
合并分支
merge后面的分支名称是将要被合并的分支,当前所在的分支就是合并后的目标分支。
终止合并
一般情况下,如果两个分支的修改内容没有重合的部分的话,那么Git会帮我们自动完成合并,但是如果两个分支修改了同一个文件的同一行代码,Git就不知道应该保留哪个分支的修改内容了,也就产生了冲突,这个时候就需要我们手动来解决冲突。
1# 终止合并
2git merge --abort
远程操作
查看远程仓库
1# 查看当前仓库所对应的远程仓库的别名和地址
2git remote -v
添加远程仓库
1git remote add origin <repository_url>
推动到远程仓库
1git push origin <branch_name>
从远程仓库拉取更新
在执行完 git pull
命令之后,Git会自动为我们执行一次合并操作,如果远程仓库中的修改内容和本地仓库中的修改内容没有冲突的话,那么合并操作就会成功。否则,合并操作就会由于冲突而失败,这个时候就需要手动来解决一下冲突。
1git pull origin <branch_name>
查看
1git status
2
3git log
4
5git diff
回退版本
在日常开发的时候,经常会需要撤销之前的一些修改内容或者回退到之前的某一个版本,此时就可以使用 git reset
命令
git reset
命令有三种主要模式,它们分别是 --soft
、--hard
、--mixed
。这些模式影响 Git的暂存区和工作区目录,以及当前分支的 HEAD指针。
--soft
:表示回退到某一个版本(重置HEAD到指定的提交),并且保留工作区和暂存区的所有修改内容
--hard
:表示回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容。【谨慎使用】
--mixed
:【默认模式】介于 soft 和 hard 这两个参数之间,它表示回退到某一个版本,并且只保留工作区的修改内容,而丢弃暂存区的修改内容。
模式 |
工作区 |
暂存区 |
git reset --soft |
✅ |
✅ |
git reset --hard |
❌ |
❌ |
git reset --mixed |
✅ |
❌ |
1# 软
2git reset --soft
3# 硬
4git reset --hard 前8位
5# 混合
6git reset --mixed
1echo 111 > file1.txt
2echo 222 > file2.txt
3echo 333 > file3.txt
4
5# 将file1提交至暂存区
6git add file1.text
7git commit -m "commit1"
8# 将file2提交至暂存区
9git add file2.text
10git commit -m "commit2"
11# 将file3提交至暂存区
12git add file3.text
13git commit -m "commit3"
14
15# 查看提交历史
16git log --oneline
1cp -rf repo repo-soft
2cp -rf repo repo-hard
3cp -rf repo repo-mixed
4
5git reset --soft xxxxxxx
6git log --oneline
7
8# 查看工作区的内容,三个文件都存在
9ls
10# 查看file3文件内容
11cat file3.txt
12# 查看暂存区的内容,三个文件都存在
13git ls-files
14#
15git status
1git reset --hard HEAD^
2# 查看提交历史,只有2次
3git log --oneline
4
5# 查看工作区的内容,发现file3不存在
6ls
7# 查看暂存区的内容,发现file3不存在
8git ls-files
1git reset HEAD^
2# 查看提交历史,只有2次
3git log --oneline
4# 查看工作区的内容,三个文件都存在
5ls
6# 查看暂存区的内容,发现file3不存在
7git ls-files
:::