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:远程仓库
工作流程

  1. 在工作目录中添加,修改文件
  2. 将需要进行版本管理的文件放入暂存区 git add .
  3. 将暂存区的文件提交到Git仓库 git commit
  4. 推到远程仓库: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

使用码云

  1. 注册,登陆

  2. 设置本机绑定ssh公钥,实现免密登陆

    #进入 C:\Users\Administrator\.ssh
    #生成公钥
    ssh-keygen
    #在.ssh下就有了id_rsa和id_rsa.pub
    
  3. 将公钥信息public key添加到 码云账户中,复制id_rsa.pub中内容到账户

  4. 使用码云创建自己的仓库

  5. 克隆到本地

    git clone [url]
    

idea中git

  1. 新建项目,绑定git

    • 将我们在git远程上创建的仓库clone到本地后的下面这些文件拷贝到idea新建的项目下

  2. 修改文件,使用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] 合并指定分支到当前分支

posted @   jpy  阅读(3)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示