工作区(working directory),暂存区(staging directory),版本库(repository),可以对各个区的内容进行修改,以及通过git diff查看他们的区别。
一.基本操作
1.初始化git
git init
对应撤销操作:
rm -rf .git
2.添加文件到暂存区
git add . 或者 git add test.txt
对应撤销操作:
撤销所有文件 git reset
撤销单个文件 git reset test.txt
3.提交文件到版本库
git commit -m 'first commit'
4.指定本地仓库对应的远程仓库
git remote add origin xxxx
对应撤销操作:
删除本地指定的远程仓库 git remote remove origin
5.推送远程分支,并关联到本地分支
git push -u origin main (-u关联本地分支)
6.清除git工作区
# 删除 untracked files git clean -f # 连 untracked 的目录也一起删掉 git clean -fd # 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的) git clean -xfd # 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删 git clean -nxfd git clean -nf git clean -nfd
二.代码合并
git rabase main 合并main分支到指定分支,并且基于原分支,不会分叉
git merge main 合并main分支到指定分支,会分叉,有log
git merge --no-ff -m 'add merge info' dev 将dev合到当前分支,记录分支操作
三.代码对比
工作区代码对比:
git diff (对比上一个版本(commit))
暂存区代码对比
git diff --cached (对比上一个版本(commit))
暂存区与工作区进行对比
git diff HEAD
四.代码回退
查看历史版本库:
git log --oneline
查看历史版本库详细:
git log --oneline --graph
回退到过去某个版本:
git checkout 1d7a184
从过去某个版本回到现在:
git checkout main
彻底回到某个版本:(之前的commit log都去掉,直接以过去版本作为最新提交,作为master)
git reset --hard xxxx
查看之前已经不存在的版本:
git reflog(然后在通过上面的命令回到过去版本)
五.打tag
给当前版本打tag:
git tag v1
通过tag回到某个版本:
git checkout v1
六.转移提交
git cherry-pick dev 将最新的dev分支应用到当前分支
git cherry-pick hash1,hash2 将两个提交应用到当前分支
如果发生冲突会默认停下来:
解决冲突后使用git cherry-pick --continue继续执行
git cherry-pick --abort发生冲突后放弃合并,回到操作前的样子
git cherry-pick --quit发生冲突后退出,但不回到操作前
七.更新代码
git pull
获取远程最新的版本并merge到本地,自动合并
本地版本发生变化
git fetch
将数据拉取到本地,不会自动合并
本地版本不变