每个开发机上装上svn客户端,代码由svn服务器统一管理
局域网开发用svn比较方便
缺点:服务器单点故障
git是本地仓库 远程仓库(github)和本地仓库内容是一样的
git 三种使用方法:
GUI 图形界面:
创建新的库
克隆一个存在的库
打开库
bash:相当于在linux上模拟了个linux环境
git --version
tortoiseGit-.msi
git32bit安装:
SSH client
git exe path:C:\program files\git\\bin
中文汉化包
版本库又名仓库
显示隐藏的文件——工具
创建版本库:
1.GUI
2.bash
git init
3.右键=》git在这里创建版本库
生成.git 文件夹
包含.git的目录叫做工作目录也叫工作区(working Directory)
点击hello.txt=>totaise git==>添加
把文件由工作区提交到缓存区:
右键=》git-master (等同于 当乌龟=》添加=》提交)
提交后,就把hello.txt交到隐性文件.git上
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
看.git里有什么:(本地仓库下有什么)
右键=》tortoiseGit=》版本库浏览器
叹号——文件有修改 再次右键=》git-master(记得不要点击hello。txt,而是点击空白处)
看修改历史:
在文件上点tortaisegit=》显示日志
比较版本差异,选中ctrl键
删除后,空白地方=》tortoise=》还原
如果真的要删除:
空白处=》git-master
(本地删除 提交到git版本库的master上 版本库上就没有了 这叫真正删除)
删除并保留本地副本:
版本库里没有,但本地有,有个蓝色问号
总结:
(可以试试 不点击文件 点空白处 因为有很多文件的话)
删除并添加到忽略列表
忽略文件语法规范:
把.gitignore加入到本地仓库中:
点击.gitignore,乌龟=》添加
之后把所有文件提交
如果想要交换代码,要把本地仓库(repository)的内容推送到远程(remote)
SSH方式:
secure shell(安全外壳协议),专为远程登录会话和其他网络服务提供安全性的协议
基于密钥的安全机制:
私钥加密,公钥解密;公钥加密,私钥解密
一对密钥:公钥、私钥
私钥不能泄露给任何人,公钥可以分发给其他人
1.生成密钥对
git bash here:
$ssh-keygen -t rsa
密钥对生成在当前用户下面的..ssh目录下
或者是我的电脑=》c:users
没有后缀的是私钥,需要保留好
带pub的是公钥
2.把公钥告诉github:
头像=》setings=》SSH and GPG=>new SSH key
github知道我们的公钥,那就无需输入用户名和密码
3.推送
命令行:
找到本地仓库repo1
git bash here:
git remote add origin [email protected]:itcastgithub/repo1.git
(版本库 和 远程仓库 关联)
git push -u origin master
/////////////////////////////以上两行是把本地仓库推送到远程
GUI:
右键=》
点击git同步
里面的origin 是刚才用命令行建立好的链接
复制url(github上那个)
点击管理
远端:origin
URL:
Putty密:默认是乌龟使用的SSH密钥
点击网络,确认客户端是不是SSH
不是,就自己找到:C:program files/git/user/bin/ssh.exe
这样用的就是刚才的密钥对
回到远端:
Putty密:c:users/itcast/.ssh 选择id_rsa 私钥
用私钥加密,向服务器发送数据,服务器再用公钥解
点击添加 点击ok
点击推送
HTTP方式:
不需要密钥
添加/保存
ok
选择origin1
推送
克隆远程仓库到本地:
乌龟/命令行
1.$git clone url
2.点击Git克隆
推送修改的文件以及解决冲突
repo1 添加hello3.txt 点击乌龟添加、点击提交
给hello3增加新内容,之后点击提交
照例推送到github=》repo3
但是在repo1空白处点击git同步,远端选择origin1=》repo3的
然后github上repo3有hello3.txt,本地却没有
在repo3下,git同步,拉取(把远程仓库的变化更新到本地仓库)
repo1的hello.txt修改先提交,然后git同步,远端选择origin1,推送
repo3下的hello.txt也做修改,然后git提交,推送到远程 失败
因为服务端更新数据了,你这个本地仓库数据更新不是最新的
这时拉取,把远端的修改拉取到本地 失败 因为这个仓库中修改这个文件,那个仓库也修改
有冲突,手动合并
修改的代码离的很近
点击修改的文件=》乌龟=》解决冲突
空白=》提交=》推送
私有服务器:
创建一个服务器,装上git,用这个本地仓库当做远程仓库
分支:
有本地仓库,就有一个master分支
master分支是一条线,把每次的提交串成一条线
master指针指向当前最新提交点
HEAD指向master
右键乌龟=》切换/检出
创建分支
:创建新分支dev
让分支切换到dev:
对工作区的修改和提交都是针对dev,新提交一次,dev指针往前移一步,master指针不变
合并、删除:
repo1:乌龟=》切换/检出=》master
新建text,添加=》提交
修改hello3
切换dev1:
在repo1新建text、修改hello3
把dev合并到master:
先切换到master
乌龟=》合并=》分支选dev1=》确定
然后把master这个分支提交
切换/检出 里 删除分支
github:
firefox boss
chrome 小弟
回到start a project 小猫图标
repository name 仓库名=》https://github.com/fhuy/Vue-cms.git
public
create
(不用勾选下面的方框)
下载git
提交并修改:
boss希望项目在new project下开发
(new project 文件夹)
cmd=》cd E:\git\new project>git config --global user.name 'bigPoss'
new project>git config --global user.email '[email protected]'
///////////////////////////这两句顶上面git 乌龟操作 目的好像在于建本地仓库
git config -l
git init
这样就可以在当前目录下做github
将本地上的目录和github上关联
>git remote add origin https://github.com/fhuy/Vue-cms.git
///////////////////////////////本地仓库上传到远程仓库github
//////////////////////////////两者名字一致
git status
git add *
git commit -m 'first_commit'
git push -u origin master
提交到 远程分支matser
小弟搜索:
bigPoss/blockChina
fork=>小弟的github上就有了
修改后 点击commit changes
修改老大的 点击pull requests
点击 new pull requests
点击 create pull request
bigPoss这边有个pull requests1
没问题,merge pull request
confirm merge(合并)
2019.7.31 第一次修改