git的基本用法
git是什么:分布式版本管理系统
初始化配置
配置用户名和邮箱
1 | git config --global user.name "用户名" |
保存用户名和密码
1 | git config --global credential.helper store |
查看用户名和密码,还能看ssl验证等信息
1 | git config --global --list |
创建仓库
这里我用命令先切换到D盘,再新建一个learn-git
目录,然后切换到新建目录
1 | D: |
然后初始化仓库
1 | git init |
我这里用的终端是powershell,可以用下面命令查到隐藏的.git
文件,windows用不了linux命令就很难受😅
1 | ls -force |
也可以直接克隆github上的仓库来创建仓库
1 | git clone url |
添加和管理文件
git status
命令可以查看状态,如分支,master等
这里我们先创建一个file1.txt
文件作为演示,并随便写点内容进去,可以直接用文件资源管理器,下面的是linux命令
1 | echo "这是第一个文件" > file1.txt |
查看内容
1 | cat file1.txt |
此时文件处于未跟踪状态,用下面命令将文件加入缓冲区(暂存区)
1 | git add file1.txt |
查看状态时文件会由红转绿
将暂存区文件提交至仓库,提交完之后查看状态会发现文件已经不见了
1 | git commit -m "第一次提交" |
-m
参数是用来写提交信息的,如果没有这个参数,会默认进入vim界面写描述信息,在vim中i
键进入编辑模式,esc
退出编辑模式,:wq
保存文件只会提交暂存区文件,工作区文件不会提交
小技巧:git命令可以使用通配符一次性提交,如git add *.txt
一次性添加所有txt文件 git add .
添加当前文件夹 能不能结合更多正则表达式看看后期能不能发现更多用法
1 | git log |
此命令可以查看提交日志
回退版本
git reset --soft
回退版本并保留工作区和暂存区的内容
git reset --hard
回退版本并丢弃工作区和暂存区内容
git reset --mixed
回退版本并丢弃暂存区内容保留工作区内容,此命令为git reset
的默认命令
使用时在参数后面加上要返回的版本id,在日志可以查看版本id
git diff查看差异
修改之前的file1.txt文件会并输入git diff
会返回以下信息
1 | diff --git a/file1.txt b/file1.txt |
此时内容还没有添加到暂存区,使用git add.
添加
git rm 删除文件
正常可以用系统命令删除本地工作区文件再添加到暂存区,再提交,但这太麻烦了,用git rm
可以直接删除工作区和暂存区的文件,然后再用git commit
提交
.gitignore文件
把不想提交到版本库的文件名添加至.gitignore
文件就不会出现在版本库
在vscode中使用git
这个是真方便,也是我现在用的最多的,配置完ssh key,关联上远程仓库后,进入vscode的源代码管理界面,点提交
就能commit到版本库,同步推送
就是同步到github,用vscode查看差异也比git diff
直观
分支操作
git branch
用于创建新的分支,现在默认分支是main
,原本是master
,听说涉及到种族歧视,所以改了🤦♂️
git checkout
切换分支,此命令也能恢复文件,若文件名和分支名一样可能出现歧义,所以有了git switch
命令专门用于切换分支
git merge branch-name
合并分支
git branch -d branch-name
删除已合并分支
git branch -D branch-name
强制删除分支
解决合并冲突
若同一位置,不同分支进行了不同修改合并时就会发生冲突,手动进行修改再提交就行
git rebase
将分支嫁接的意思
如在main分支使用git rebase dev
命令就是将main分支变基到dev分支上,最后的结果都是一条直线,而之前的git merge
命令只是合并,没有变基
git flow工作流模型
-
main:主线
-
hotfix:bug修复
-
release:版本发布
-
develop:开发分支