git是代码版本的管理工具,git是分布式 的版本控制工具
git的工作机制
四个区域
- 工作区 :代码在本地存储的目录位置
- 暂存区 :git可以追踪的代码(工作区可以将代码添加到暂存区(add))——临时存储
- 本地库 :暂存区的代码可以提交到本地库(commit),并生成对应的版本 ——生成历史版本
- 远程库:(远程库:如github)本地区的代码可以提交到远程库(push),并生成对应的版本 ——存储在远端
只有在本地库和远程库才有版本控制 后一个版本是基于前一个版本的,所以1和3版本之间
git基础命令
- 用户签名
git config --global user.name 用户名 设置用户签名 git config --global user.email 邮箱 设置用户签名 这两条命令是为了表示身份,当你提交代码到远程库的时候可以表示你的身份 - 初始化
git init 使本地库关联git(生成.git文件) git status 查看本地库的git状态,(当前分支,commit,wait commit) - add
git add 文件名 将修改的文件添加到暂存区 git rm --catched 文件名 将文件从暂存区删除 git add . 添加所有修改的文件到暂存区 - commit
git commit -m "本次版本描述信息" 文件名 提交代码到本地库,生成相应的版本号 - 日志
git reflog 查看版本的信息 git log 查看版本的详细信息 - 版本穿梭,重置到之前的版本
git reset --hard 要重置到的版本号 (git log可以获取版本号) 版本不仅可以向前穿越,也可以向后穿越
git的分支
不同的分支上存储着不同的代码。 分支存在的意义:线上代码的运行需要维护,维护的过程需要程序员进行代码的改和编写,这种时候不可能将停止线上的运行的代码以供程序员开发。一般是线上产品放在一个分支(多为master分支),程序员则在其他分支开发,当一版产品修改好之后再将开发好后的分支代码合并到master分支上。
远端分支和本地分支
- 分支分为远端分支和本地分支,一般是一一对应的方便进行开发。
即如果远端有一个分支yang,本地就会有一个分支yang。 - master分支是主分支,所有分支的开发一般最终都会合并到主分支中(merge)
工作区分支显示
本地的分支代码可以在编译器中查看,一般head指针指向那个分支,改编译器就显示的是哪个分支的代码
分支命令
git branch 分支名 :创建分支git branch -v :查看分支git checkout 分支名 :切换分支git checkout -b 分支名 : 创建并切换到该分支git merge 分支名 :把指定分支合并到当前分支上
冲突合并
当两个分支合并的时候可能产生冲突。 冲突产生的原因: 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
当出现冲突的时候,需要:
- 手动解决冲突
- 添加文件到暂存区: git add .
- 执行提交: git commit -m “提示信息”
推送和拉取
要建立本地库和远程库的代码联系需要通过推送 (push) 和克隆(clone)拉取 (pull) 命令。
git push 远程库地址 分支名 :推送 (精确到分支) (注意这里的push命令只是推送到同名分支中,而且也建议这样做。但是如果想推送到不同名分支中,可以git push 远程库地址 本地分支名:远程分支名 )git pull 远程库地址 分支名 :拉取最新代码 (精确到分支)git clone 远程库地址 :克隆代码 clone会做如下操作:1. 拉取代码。2. 初始化本地仓库。3. 创建别名(origin)
这里的远程地址都是http的地址。
创建别名
当需要克隆的宣称仓库的地址太长的时候,我们可以为其创建一个别名方便下次拉取。 git remote -v :查看当前所有远程地址别名 git remote add 别名 远程地址 :将远程地址添加为别名 创建完别名后当克隆、拉去和提交都可以使用该别名。
补充:ssh免密登陆协议
ssh免密登陆协议需要在用户名下生成.ssh 文件。 生成方法:在需要生成的目录下,右键Git Bash Here,输入命令: ssh-keygen -t rsa -C 邮箱地址 -t rsa :是加密算法 -C 邮箱地址 :描述信息,当前面目登陆协议是为谁准备的。
生成的.ssh 文件夹有公钥和私钥,将公钥进行复制,复制到远程仓库中(不同的仓库位置可能不一样,可以自行查找)
赋值代码的时候远程仓库一般为我们提供两个地址:https地址和ssh地址,之前的克隆都是利用https的地址,如果使用ssh免密登陆之后就可以使用ssh地址进行代码的克隆。
IDE工具使用git
忽略文件
项目提交的时候需要屏蔽一些文件的提交。这些文件一般是与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。
如何忽略这些文件? 创建忽略规则文件 XXXX.ignore 酱醋是要忽略的文件名写到该文件中即可
|