Git的基本操作
配置
- 常用:
-
- name
-
- email
表示是追溯到具体那个用户对代码的修改
- email
bash
# 配置全局用户名
git config --global user.name "Your Name"
# 配置全局用户邮箱
git config --global user.email "email@example.com"
# 配置全局颜色
git config --global color.ui true
# 配置全局编辑器
git config --global core.editor vim
# 配置全局合并工具
git config --global merge.tool vimdiff
# 配置全局合并工具提示
git config --global mergetool.prompt false
# 配置全局缓存凭证
git config --global credential.helper cache
# 配置全局缓存时间
git config --global credential.helper 'cache --timeout=3600'
# 配置全局推送默认方式
git config --global push.default simple
使用Git:
- 查看当前仓库状态:
*git status
- 初始化仓库:
*git init
文件状态
git中的文件有两种状态: 未跟踪 和已跟踪
--> 文件状态:
- 未跟踪:表示文件未被git所管理,没有加入到git仓库中。
- 已跟踪:表示文件已被git所管理,并且已经加入到git仓库中。
未跟踪指文件没有被git所管理,已跟踪指文件已被
git管理。已跟踪的文件又有三种状态: 未修改、修改和暂存
暂存,表示文件修改已经保存,但是尚未提交到git仓库。
未修改,表示磁盘中的文件和git仓库中文件相同,没有修改。
已修改,表示磁盘中文件已被修改,和git仓库中文件不同。
可以通过git status
来查看文件的状态
基本文件操作
- 添加文件到git仓库:
git add <filename>
git add .
- 提交文件到git仓库:
git commit -m "message"
- 查看文件修改记录:
git log
刚刚添加到文件夹中的文件,是未跟踪的状态
未跟踪-->暂存 :将文件切换到在暂存状态:git add <filename>
(只是暂存并未入库到git仓库中)
git add *
:将所有已修改(未跟踪)的文件暂存
暂存-->未修改 :将文件切换到在未修改状态:git commit -m "注释"
(将暂存文件入库)
git commit -a -m "注释"
:将所有已修改(未跟踪)的文件暂存并提交到git仓库中
未修改-->已修改 :直接修改文件内容会自动触发
- 总结步骤:每当有文件修改后,需要提交仓库时:
- 先将文件添加到暂存区:
git add <filename>
- 再将文件提交到仓库:
git commit -m "注释"
查看刚刚一系列操作文件的修改日志:git log
常用文件命令
- 重置文件
bash
# 恢复文件至最近一次的提交
git restore <filename>
# 取消暂存状态
git restore --staged <filename>
- 删除文件
bash
# 删除文件
git rm <filename>
#强制删除
git rm <filename> -f
- 移动文件
bash
# 移动文件
git mv <filename> <newfilename>
分支
git在存文件时,每一次代码代码的提交都会创建一个与之对应的节点,git就是通过一个一个的节点来记录代码的状态的,类似链表,每一个分支像指针一样,指向一个分支节点,并且可以访问到其之后的节点。节点会构成一个树状结构,树状结构就意味着这个树会存在分支,默认情况下仓库只有一个分支,命名为master,在使用gi时,可以创建多个分支,分支与分支之间相互独立,在一个分支上修改代码不会影响其他的分支。
bash
# 创建分支
git branch <branch name>
# 切换分支
git switch <branch name>
# 创建并切换分支
git switch -c <branch name>
# 删除分支
git branch -d <branch name>
# 查看分支
git branch
# 合并分支
git merge <branch name>
c1 表示第一次提交,c2 是第二次,...每次提交都会在 "头节点"插入新的节点。
从c1开始,默认主分支master下创建一个新节点,又提交的三次到到c4节点,然后在master 节点创建新的分支update ,在update分支下,又提交两次到c6节点,重新回到master分支,再次创建新分支bug1,在bug1分支下又提交了两次,产生了两个新节点c7,c8
在开发过程中,我们经常需要创建分支,然后进行开发,开发完成后,再将分支合并到主分支中,这样就可以保证主分支的代码是最新的。
远程仓库(remote)
远程仓库是用来存储代码的,可以理解成是一个远程的版本库,可以用来存储代码,可以用来进行代码的版本控制,可以用来进行代码的备份,可以用来进行代码的共享。
将本地库上传git:
bash
git remote add origin https://github.com/.....
# git remote add <remote name> <url>
git branch -M main
# 修改分支的名字的为main
git push -u origin main
# git push 将代码上传服务器上
将本地库上传gitee:
bash
git remote add gitee https://gitee.com/ymhold/vue-course.git
git push -u gitee main
远程库的常用操作的命令
bash
git remote # 列出当前的关联的远程库
git remote add <远程库名> <ur1> # 关联远程仓库
git remote remove <远程库名> # 除远程库
git push -u <远程库名> <本地分支名> # 向远程库推送代码,并和当前分支关联
git push <远程库> <本地分支>:<远程分支> #将本地仓库分支推送到远程仓库的指定分支
git clone <ur1> # 从远程库下载代码
git push # 如果本地的版本低于远程库,push认是推不上去
git fetch # 要想推送成功,必须先确保本地库和远程库的版本一致,fetch它会从远程仓库下敕所有代码,
#但是它不会将代码和当前分支自动合并,使用fetch拉取代码后,必须要手动对代码进行合并
git pull # 从服务器上拉取代码并自动合并
注意: 推送代码之前,一定要先从远程库中拉取最新的代码,为保证版本一致
tag标签
- 当头指计没有执行某个分支的头部,这种状态我们称为分离头指(HEAD detached) ,分离头指针的状态下也可以操作操作代码,但是这些操作不会出现
在任何的分支上,所以注意不要再分离头指针的状态下来操作仓库。
如果非得要回到后边的节点对代码进行操作,则可以选择创建分支后再操作
bash
git switch -c<分支名><提交id>
- 可以为提交记录设置标签,设置标签以后,可以通过标签快速的识别出不同的开发节点:
标签是用来标记代码版本,可以理解成是一个代码的快照,可以用来标记代码的版本,可以用来进行代码的版本控制,可以用来进行代码的备份,可以用来进行代码的共享。
bash
git tag <tag name> # 给当前节点创建标签
git tag # 查看标签
git tag -a <tag name> -m "message" # 创建带有说明的标签
git show <tag name> # 查看标签信息
git tag <tag name> <节点ID> #为某一节点创建标签
git push 远程仓库 标签名 # 推送标签到远程仓库
git push 远程仓库 --tags # 推送所有标签到远程仓库
git tag -d 标签名 # 删除本地标签
git push 远程仓库 --delete 标签名 # 删除远程标签
.gitignore (忽略监视)
.gitignore文件用来忽略不需要的文件,可以用来忽略一些不需要该文件夹里用git来监视管理的文件或文件夹,例如node_modules文件夹,或者一些配置文件,或者一些临时文件等等。
.gitignore文件中的每一行都表示一个需要忽略的文件或文件夹
bash
# 忽略所有.a文件
*.a
# 但跟踪所有的lib.a,即便你在前面忽略了
!lib.a
# 只忽略当前目录下的TODO文件,而不忽略subdir/TODO
/TODO
# 忽略build/目录下的所有文件
build/
# 忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt