集中式版本控制
svn
分布式版本控制
git
在现有目录中初始化仓库
如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入
git init
设置全局账号
git config --global user.name "chaodada"
git config --global user.email "2167162990@qq.com"
新建文件夹 demo
初始项目
git init
建立局部管理账号
git config user.email “18063442990@163.com"
git config user.name “liujianchao”
假如在git
文件夹设置的全局账号
在git文件夹创建demo文件夹
如果不对demo 进行设置账号 那在提交的时候将会用全局账号
查看全局账号
git config --global user.name
git config --global user.email
查看局部账号
git config user.name
git config user.email
创建新仓库
在文件夹中直接初始化
git init
这就是一个新仓库
管理旧仓库
注意一定不要在已经初始化的仓库进行克隆 应当用一个不是仓库的文件夹 并且克隆的时候 会自动创建别人项目的文件夹
直接克隆别人的仓库
git clone https://github.com/jindasong/lazyload.git
查看当前项目的状态
git status
放到小推车
如果有新文件 可以反复执行
git add 文件名
一次 add 多个文件的方法 多个文件用 空格 隔开
git add file_1 file_2 file_3
或者直接 add .
将全部对的文件都加入
当add .
的时候 会导致全部文件添加到小推车 如果想排除一些文件 可以创建 .gitignore
文件 定义排除项目
比如排除所有jpg
*.jpg
另外比如排除所有jpg 除了a.jpg
*.jpg
!a.jpg
忽略文件夹
/demo-1
忽略某个文件夹下的某个文件
/demo-1/index.php
或者某个文件夹下的某个类型的文件
/demo-1/*.php
限制某个文件夹 以及子文件夹的某个类型的文件
/demo-1/**/*.php
提交文件夹的方法
git add 文件夹名
新文件
创建一个新文件
假如还没写完就放到运输车了 想取消 第一次可以这样取消在运输车
git rm --cached 文件
保存一份到仓库
然后 假如文件做了改动 放到了运输车后悔了 想取消放到运输车
git reset HEAD 文件名
这时候是改动完了的文件 只是没夹到运输车
此时想改回之前的版本
git checkout 文件名
这时候就回到改动之前的版本 ( 也就是第一次保存到仓库的文件)
退回任意版本
git reset --hard 5a24fa9db2354c8d9251d9575e4abbf1f9441985
修改版本库文件的名字
git mv 现在的名字 新名字
提交到仓库
git commit -m '测试学习第一次提交'
修改描述
日志并不会添加一个新的 只会修改原来的
git commit —-amend
删除
大多数情况下 删除版本库的文件 本地也会删除
git rm a.txt
只删除版本库中的 本地不会删除
git rm —cached a.txt
查看提交记录
git log
查看最近一次提交记录
git log -1
两次
git log -2
查看记录之间的文件变动信息
git log -p
--oneline 这个参数可以省略一些没用的信息
# 一般这样用
git log -p -1 --oneline 查询最近一次的提交记录
想看那些文件发生了变化
git log --name-only
配置 GIt 别名
使用
git config –global alias
比如 我想用 st 代表 status,name我们可以这样设置。
git config --global alias.st status
以后只需要输入git st,即可查看当前 git 仓库的状态
或者在配置文件配置
mac 在用户的根目录 ls -a
默认分支 master 稳定版
创建新的分支
git branch 分支名
将当前指针 切换到 其他分支
git checkout 分支名
创建分支并切换
git checkout -b 分支名
合并分支 注意应当是 切换到 master 之后 在执行合并分支
git merge 分支名
合并分支 提示 分支冲突 那就进入这个文件 自己选择 要哪些 直接保存 然后重新提交
显示出 没有 与主分支 合并的分支
git branch --no-merged
显示出 已经合并到 主分支的 分支 (包含主分支)
git branch --merged
删除分支
删除本地分支:
git branch -d 分支名
删除未合并的分支
git branch -D 分支名
// 方法一:将删除的本地分支推到远程(要删除的远程分支在本地有映射)
git push origin :branchName
// 方法二:直接删除远程分支(要删除的远程分支不在本地)
git push origin --delete branchName
查看本地分支
git branch
查看本地及远程所有分支:
git branch -a 或 git branch --all
当你在一个分支 仓库中写了东西 然后 add 放到的小车中 但是这时候 想要 切换其他的分支 只时候直接切换时 切换不出去的
因为 文件没有提交 但是文件现在没写完 提交不太合理
这时候用 文件暂存
文件暂存命令
git stash save“暂存名子 自定义 方便多个暂存区分”
查看暂存列表
git stash list
列表内容 stash@{0}
是暂存标识
stash@{0}: WIP on index: 343dffc index分支第一次提交
恢复暂存区 恢复之后暂存还是存在 需要自己删除
git stash apply 暂存标识
删除暂存区
git stash drop 暂存标识
显示最新一次的暂存
git show stash@{0}
应用最新的暂存状态 并且删除暂存
git stash pop
tag 标签
类似于版本号 v1.0 v2.0 v3.0
查看标签列表
git tag
添加标签
git tag v1.0
git 打包项目
win
git archive master --prefix=‘压缩包内部文件夹名字’ --forma=zip>压缩包名字.zip
mac
git archive master --forma=zip>压缩包名字.zip
打包所有文件
打包master分支的所有文件:
git archive --format=zip --output master.zip master
其中,输出格式为zip,输出文件为master.zip。git支持zip和tar两种输出格式。
打包当前分支当前HEAD的所有文件:
git archive --format=zip --output head.zip HEAD
打包v1.2标签的所有文件:
git archive --format=zip --output v1.2.zip v1.2
打包更改的文件
打包更改文件的原理是:
用git
diff
找出文件列表;
用打包命令打包。
也就是说,只要能用找出文件列表,就可以git
打包出来。
打包最后修改的文件
先通过git
diff
找到最新版本修改过的文件,再压缩打包这些文件:
git archive --format=zip -o update.zip HEAD $(git diff --name-only HEAD^)
打包最后两个版本修改的文件
总共也是2个版本:
git archive --format=zip -o update.zip HEAD $(git diff --name-only HEAD~2)
打包两个分支之间差别的文件
git archive --format=zip -o update.zip HEAD $(git diff --name-only master fix-error)
如上,打包master和fix-error分支差异的文件。
问题说明
假如在11:00 创建主分支 11:10创建 index 分支 index 分支会带着这十分钟之内处理过的 主分支记录
index分支 一直操作到 11:20
在同时主分支也在操作
这时候我想要合并分支 应当 先进入index分支 执行
git rebase master
为什么要这样做呢 因为 拿11.10 之前的 记录创建了index 然后 在这个基础上修改了index
然后在11:10 到11:20 也没闲着
这时候 合并分支 就会产生冲突 解决办法就是进入 index分支 将起点变成主分支的最新点 然后再 进行合并
这样就能解决
合并产生新的 master
合并操作会有 master管理员 来操作
如果档主分支 master 在一次保存中 创建了一个新分支 然后主分支 有不断的 进行更新
合并产生新的 master
合并操作会有 master管理员 来操作
rebase 改变子分支的基础点 就可以解决这个问题
链接github
远程连接法
第一设置key
第二github 创建项目
第三获取项目ssh git@github.com:chaodada/demo.git
第四本地克隆项目 git clone git@github.com:chaodada/demo.git
最后
git push
本地连接法
在本地创建项目
然后链接
git remote add origin git@github.com:chaodada/demo2.git
查看是否连接
git remote -v
将本地对的 推送到远程
git push -u origin master
查看所有分支 包含远程分支
git branch -a
本地创建完分支 推送到远程 让远程也创建分支
git push --set-upstream origin index
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可:
git push origin v1.5
如果要一次推送所有本地新增的标签上去,可以使用 --tags 选项:
git push origin --tags
克隆分支之后 请求 将指定分支克隆到本地
git pull origin 分支:分支
远程分支合并 大概意思就是 本地合并完成 然后推送到 远程分支
建议本地合并时候 先git pull master将本地主分支 更新到最新 然后将其他分支进行 git rebase master 然后执行合并操作 然后推送到云端
删除远程分支 本地分支不会删除
git push origin --delete index