文章目录
Git的使用
2024/7/26 暑假学习日记 dianfu233 第一次写md,欢迎大家交流
1.常用的Linux命令
cd : 改变目录。
cd . . 回退到上一个目录,直接cd进入默认目录
pwd : 显示当前所在的目录路径。
ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
rm: 删除一个文件, rm index.js 就会把index.js文件删除。
mkdir: 新建一个目录,就是新建一个文件夹。
rm -r : 删除一个文件夹, rm -r src 删除src目录
mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
reset 重新初始化终端/清屏。
clear 清屏。
history 查看命令历史。
help 帮助。
exit 退出。
2.初始化设置
git config --global user.name "Your Name" 配置用户名
git config --global user.email "mail@example.com" 配置邮箱
git config --global credential.helper store 存储配置
git config --global --list 查看当前配置信息
上述代码对Git进行初始化配置
3.创建仓库
git init <project-name> 创建一个新的本地仓库 (省略project-name则在当前目录创建)
git clone <url> 克隆一个远程仓库。
在命令行上创建一个新的存储库
echo "#desktop-tutorial" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:dianfu233/desktop-tutorial.git
git push -u origin main
从命令行推送现有的存储库
git remote add origin git@github.com:dianfu233/desktop-tutorial.git
git branch -M main
git push -u origin main
4.四个区域与文件状态
5.分支
git branch <分支名称> //在已有仓库的情况下仅创建新的分支,
git checkout -b <分支名称> //创建并切换到新创建的分支
git branch //分支查看
git checkout <分支名称> //切换分支
git branch -D <分支名称> //删除分支
git branch -m <原名称> <新名称> //修改分支名称
git merge <被合并的分支名称> //合并分支
P.S
HEAD默认指向指向当前所在分支提交至仓库的最新一次的 commit
HEAD~{n}
~是用来在当前提交路径上回溯的修饰符
表示当前所在的提交路径上的前 n
个提交(n >= 0)
HEAD
= HEAD~0
HEAD~
= HEAD~1
HEAD~~
= HEAD~2
HEAD{n个~}
= HEAD~n
HEAD^n
^
是用来切换父级提交路径
的修饰符。当我们始终在一个分支比如 dev
开发/提交代码时,每个 commit
都只会有一个父级提交,就是上一次提交,但当并行多个分支开发,feat1
, feat2
, feat3
,完成后 merge feat1 feat2 feat3
回 dev
分支后,此次的 merge commit
就会有多个父级提交。
总结:HEAD~1
中指的是后退的步数,HEAD^1
指的是退到第几个父提交上。
6.特殊文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
*.txt //忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt //但lib.txt除外
/temp //仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ //忽略build/目录下的所有文件
doc/*.txt //会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
7.文件的添加和提交
git add <file> //添加文件到暂存区
git commit -m "消息内容" //提交暂存区中的内容到本地仓库 -m 提交信息
8.撤销与恢复
git reset --mixed <commit-id>
重置当前分支的HEAD为之前的某个提交, 并且删除所有之后的提交。
–hard参数表示重置暂存区和工作区,
–soft参数表示不重置暂存区,不重置工作区,
–mixed参数表示重置暂存区,不重置工作区。
9.查看状态或差异
git status //查看仓库状态, 列出还未提交的新的或修改的文件。
git log --oneline //查看提交历史, --oneline表示简介模式。
git diff //查看未暂存的文件更新了哪些部分。
git diff <commit-id> <commit-id> //查看两个提交之间的差异
git diff HEAD //比较工作区和版本库的差异
git diff --cached //比较暂存区与版本库的差异