Git入门
版本控制
本地版本控制
记录文件每次的更新,可以对版本做一个快照,或是记录补丁文件,适合个人用,如RCS
集中版本控制 SVN
所有的版本都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。多个人对一个服务器
用户本地只有自己以前同步的版本,不联网看不到历史版本,
分布式版本控制
所有的版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在联网时push到相应的服务器或其他用户哪里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。不会因为服务器损坏或网络问题,造成不能工作的情况
Git环境配置
如果之前安装过,重新安装时要先卸载,删除环境变量中关于git的内容
- 查看配置:git config -l
- 查看系统配置的:git config --system --list
- 本地的:git config --global --list
git相关的配置文件
- D:\Git\mingw64\etc\gitconfig,--system系统级
- C:\Users\Administrator.gitconfig,当前登陆用户,--global全局
配置用户名,邮箱
git config --global user.name="jpy" git config --global user.email="jpy"
Git基本理论
工作区域
- WorkSpace:工作区,存放代码
- Index/Stage:暂存区,临时存放你的改动,事实上只是一个文件
- Repository/Git Directory:本地仓库,其中HEAD最新翻入仓库的版本
- Remote Directory:远程仓库
工作流程
- 在工作目录中添加,修改文件
- 将需要进行版本管理的文件放入暂存区 git add .
- 将暂存区的文件提交到Git仓库 git commit
- 推到远程仓库:git push
因此git管理有三种状态:已修改(modified),已暂存(staged),已提交(commited)
Git项目搭建
创建工作目录及常用指令
本地仓库搭建
两种方法,1.创建全新仓库 2.克隆远程仓库
-
创建全新仓库
$ git init//在当前目录新建一个Git代码库
执行后,目录中多了.git目录,存放了版本等所有信息
-
克隆远程仓库
$ git clone [url]
Git文件操作
文件状态
-
Untracked:未跟踪,没有加入到git库,不参与版本控制,通过 git add 到暂存区,变为staged状态
-
Unmodify:文件已经入库,为修改。即版本库中的文件快照内容与文件夹中完全一致,这种类型文件有两种去处,1.被修改,变为Modified
2.git rm移出版本库,变为Untracked
-
Modified:文件已修改,没有进行其他操作,1.git add变成staged暂存状态 2.git checkout从库中取出文件,覆盖当前修改,变为Unmodify-
-
Staged:暂存状态,git commit将修改同步到库中,这是库中文件和本地文件变为一致,文件为Unmodify状态,执行git reset head filename
取消暂存,变为Modified
查看文件状态
git status [filename] #查看指定文件状态
git status #查看所有文件状态
git add. #添加所有文件到暂存区
git add [filename] #添加指定文件到暂存区
git commit -m #提交暂存区内容到本地仓库 -m:提交信息,提交内容的说明,注释
忽略文件
不想把某些文件加入版本控制
在主目录下建立.gitIgnore文件,此文件有如下规则
- 忽略文件中的空行或以#开始的行会被忽略
- *代表任意多个字符,?代表一个字符,[abc]代表可选字符范围,({String1,String2})代表可选的字符串
- !名称,代表不被忽略
- /名称,要忽略的文件在此目录下,而子目录中的文件不能忽略
- 名称/,要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
#为注释
*.txt #忽略所有.txt结尾的文件
!lib.txt #但lib.txt除外
/bin #忽略根目录下的bin文件
bin/ #忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略bin文件
doc/*.txt #忽略doc/123.txt,但不忽略doc/dir/456.txt
使用码云
-
注册,登陆
-
设置本机绑定ssh公钥,实现免密登陆
#进入 C:\Users\Administrator\.ssh #生成公钥 ssh-keygen #在.ssh下就有了id_rsa和id_rsa.pub
-
将公钥信息public key添加到 码云账户中,复制id_rsa.pub中内容到账户
-
使用码云创建自己的仓库
-
克隆到本地
git clone [url]
idea中git
-
新建项目,绑定git
-
将我们在git远程上创建的仓库clone到本地后的下面这些文件拷贝到idea新建的项目下
-
-
修改文件,使用idea操作git
- 添加到暂存区 git add .
- git commit m "message"
- push
git分支
master:主分支
分支命令
#所有本地分支
git branch
#所有远程分支
git branch -r
#本地分支和远程分支
git branch -a
#新建本地分支,并停留在当前分支
git branch [branchname]
#切换到已经存在的本地分支
git checkout [branchname]
#新建本地分支,并切换
git checkout -b [branchname]
#合并指定分支到当前分支
git merge [branchname]
#删除本地分支
git branch -D [branchname]
#删除远程分支
git push origin --delete [branchname]
git branch -dr [remote/branch]
#本地的 master 分支推送到 origin 主机的 master 分支
#git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master
git push origin master:master
多个分支如果并行执行,会导致代码不冲突,就会说同时存在多个版本。
web-api -a (Restfull..xxx())
web-admin -b 调用了a(修改了a的代码)
web-app -c调用了a和b的代码
如果同一个文件在合并分支是都被修改了则会引起冲突,解决方法:我们可以修改冲突文件后重新提交!选择要保留她的代码还是你的代码!
master主分支用来发布新版本,一般在新建的dev上工作,工作完成后,发布时或者dev代码稳定后可以合并到master主分支上
git merge [branchname] 合并指定分支到当前分支
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY