Git的基本操作
配置
- 常用:
- name
- email 表示是追溯到具体那个用户对代码的修改
# 配置全局用户名git config --global user.name "Your Name"# 配置全局用户邮箱git config --global user.email "[email protected]"# 配置全局颜色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
常用文件命令
- 重置文件
# 恢复文件至最近一次的提交git restore <filename># 取消暂存状态git restore --staged<filename>
- 删除文件
# 删除文件gitrm<filename>#强制删除gitrm<filename>-f
- 移动文件
# 移动文件gitmv<filename><newfilename>
分支
git在存文件时,每一次代码代码的提交都会创建一个与之对应的节点,git就是通过一个一个的节点来记录代码的状态的,类似链表,每一个分支像指针一样,指向一个分支节点,并且可以访问到其之后的节点。节点会构成一个树状结构,树状结构就意味着这个树会存在分支,默认情况下仓库只有一个分支,命名为master,在使用gi时,可以创建多个分支,分支与分支之间相互独立,在一个分支上修改代码不会影响其他的分支。
# 创建分支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:
git remote add origin https://github.com/.....
# git remote add <remote name> <url>git branch -M main
# 修改分支的名字的为maingit push -u origin main
# git push 将代码上传服务器上
将本地库上传gitee:
git remote add gitee https://gitee.com/ymhold/vue-course.git
git push -u gitee main
远程库的常用操作的命令
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) ,分离头指针的状态下也可以操作操作代码,但是这些操作不会出现 在任何的分支上,所以注意不要再分离头指针的状态下来操作仓库。 如果非得要回到后边的节点对代码进行操作,则可以选择创建分支后再操作
git switch -c<分支名><提交id>
- 可以为提交记录设置标签,设置标签以后,可以通过标签快速的识别出不同的开发节点:标签是用来标记代码版本,可以理解成是一个代码的快照,可以用来标记代码的版本,可以用来进行代码的版本控制,可以用来进行代码的备份,可以用来进行代码的共享。
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文件中的每一行都表示一个需要忽略的文件或文件夹
# 忽略所有.a文件
*.a
# 但跟踪所有的lib.a,即便你在前面忽略了!lib.a
# 只忽略当前目录下的TODO文件,而不忽略subdir/TODO
/TODO
# 忽略build/目录下的所有文件
build/
# 忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt
版权归原作者 想和我重名? 所有, 如有侵权,请联系我们删除。