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] 合并指定分支到当前分支



浙公网安备 33010602011771号