新建仓库
新建目录
mkdir learn-git
初始化仓库
git init
查看.git
ls -al
进入.git
cd .git
查看详细信息
ls -al
不要随便修改.git里的信息!!!
删除.git后就相当于没有了版本管理,是个普通的文件目录
rm -rf .git
git init 可以指定名称,如果指定了,就会在当前目录下创建一个新的目录作为git仓库
git init my-repo
工作区域和文件状态
工作区域
- 工作区
- 暂存区
- 本地仓库
文件状态
- 为跟踪
- 未修改
- 已修改
- 已暂存
添加问价和提交文件查看日志
查看仓库状态 git status
创建一个文件
echo "文件" > file.txt
查看文件
cat file.txt
检查状态
git status
//输出
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
file.txt
nothing added to commit but untracked files present (use "git add" to track)
此时file还未添加到暂存区,标红
添加到暂存区
git add file.txt
//通配符
git add *.txt
//全部添加
git add .
将暂存区文件提交到仓库
git commit -m "第一次提交"
//m后面是说明信息
查看提交记录
git log
git log --oneline //简洁的提交记录
git reset回退版本
soft保留工作和暂存
git reset --soft pp5431
//soft 后面是版本ID,通过git log查看
hard删除工作和暂存
git reset --hard id
mixed保留工作删除暂存
git reset --mixed id
回溯
git reflog
git diff查看差异
比较工作区和暂存区的差异
git diff
比较工作区和版本的差异
git diff HEAD
比较暂存区和版本的差异
git diff --cached
比较两个版本的差异
git diff id1 id2
只查看某个文件的差异
git diff HEAD~ HEAD file3.txt
git rm 删除文件
git rm file 把文件从工作区和暂存区同时删除
git rm file1.txt
git rm -r* //递归删除某个目录下的所有子目录和文件
.gitignore
- 系统或者团建自动生成的文件
- 编译产生的中间文件和结果文件
- 运行时生成的日志文件,缓存文件,临时文件
- 涉及身份,密码,口令,密钥等敏感信息文件
添加到.gitignore
echo access.log > .gitignore
追加
echo "modified" >> other.log
分枝
git branch 查看分枝
git branch
新建分枝
git branch dev
切换分枝
//老版本
git checkout dev
//新,推荐
git switch dev
合并分枝
//将merge后的分枝合并到当前分枝
git merge dev
查看分枝流程
git log --graph --oneline --decorate --all
删除分枝
//删除已合并分枝
git branch -d dev
//强制删除分枝
git branch -D dev