git
2022/4/4 23:49:11
本文主要是介绍git,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、git的基本概念
workingspace 工作区:平时存放项目或是代码的地方。 stage/index 暂存区:用于临时存放改动,只是一个文件(存在于版本库),保存即将提交到文件列表信息,简而言之暂存区保存的是映射关系。详细描述 repository 仓库区:安全存放数据的位置,这里有提交的所有版本的数据。(HEAD指向最新放入仓库的版本) remote 远程仓库:托管代码的服务器,用于项目的远程数据交换。 本地中的 .git 文件夹下为git的版本库,一般不需要随意改动,只通过命令来操作。二、git工作区文件状态以及设置文件忽略
# 从网络上克隆一个git库 git clone [url] # 在本地当前目录下初始化一个git库 git init # 查看文件状态 git status [filename] #查看某个文件状态 git status # 查看所有文件状态
- untracked:未跟踪状态,文件在git项目文件夹中,但并没有加入到git库,不参与版本控制。通过git add将状态变为staged。
- unmodify:文件入库但未修改,即版本库中的文件快照内容与工作区完全一致。如果此时被修改,则状态变为modified,如果使用git rm移出版本库,则成为unstracked状态
- modified:文件已经修改但未进行其他操作。如果使用git add可进入暂存区staged状态,使用git checkout则丢弃修改,返回到unmodify状态。(git checkout从库中取出文件,覆盖当前修改)
- staged:执行git commit则将修改同步到库中,这时库中的文件和工作区的文件又变为一致,文件状态为unmodify状态。执行git reset HEAD filename取消暂存,文件为modified状态。
设置文件忽略 将不加入版本控制的文件设置成忽略,在根目录下创建‘.gitignore'文件,以下为添加忽略规则:
- 空行或以#开头的行将被忽略。
- 可以使用linux通配符。
- 如果名称前有(!),表示意外规则,不被忽略。
- 如果名称前有一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称后有一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件。
三、配置用户名和密码
# 生成连接远程(github或是码云等)的密钥 ssh-keygen -t rsa -C "email@example.com"
注:登陆github之后,点击右上角下拉菜单---点击setting---在左侧导航栏点击SSH and GPG keys---点击New SSH keys---title根据情况自己填写,key为复制本地的公钥内容。(windows下公钥保存路径默认为C:\Users\xxx\.ssh)
四、使用git命令管理版本
git add <filename> # 添加文件到缓存区 git add . # 添加所有文件到缓存区 git commit -m <message> # 提交一次变更到本地git仓库 git log #查看变更日志 git reset <filename> # 将某文件从暂存区退回 git reset <commitID> --hard # 将版本变更为指定版本,并且不保留变更 git reset <commitID> --soft # 将版本变更为指定版本,并且保留变更(staged) git reset <commitID> --mixed # 将版本变更为某个版本,并且保留变更(modified) 注:commitID由git log命令获得的前七位哈希值 git checkout -b <name> <template> # name:新分支名 template:模板名 git branch # 查看所有分支 git checkout <branchName> # 切换分支 git merge <branchName> # 合并当前分支和指定分支的变更 git push # 将当前分支推送至远端 git push --set-upstream origin <branchName> # 将当前分支推送至远端并设置远端为上流分支 git fetch # 拉取远端仓库分支 git checkout -b <name> origin <template> # 以远端分支为模板创建新分支 git rebase # 将新分支创建之后提交之前,两分支同时发生的改变按照时间顺序排列参考: 关于git暂存区的理解 关于工作区,版本库和暂存区的关系和本地的存储位置 linux通配符 rebase和merge的区别
这篇关于git的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03Springboot企业级开发资料入门教程
- 2025-01-03SpringBoot企业级开发资料入门教程
- 2025-01-03Springboot微服务资料入门教程
- 2025-01-03Springboot项目开发资料:新手入门教程
- 2025-01-03Springboot项目开发资料:新手入门指南
- 2025-01-03SpringCloud Alibaba资料入门教程
- 2025-01-03SpringCloud Alibaba资料详解与入门教程
- 2025-01-03SpringCloud微服务资料入门教程
- 2025-01-03单元化架构最佳实践指南!
- 2025-01-03SpringCloud项目开发资料入门教程