Git工作机制:
工作区->git add->暂存区(不生成版本)->git commit->本地库(生成版本)->git push->远程库(git hub,gitee,gitlab)
本地库的代码版本只有本机看到,一旦push到远程库,则所有访问远程库的人都能看到版本
默认安装后
进入本机的某个文件夹路径下,右键,会有Git GUI here和Git bash here两个菜单项,分别是Git的图形界面和命令行界面,命令行界面使用的是linux命令。
随便进入一个文件夹,右键点git bash here后即进入当前目录。
分支管理:
默认初始化git本地库后,生成主线分支默认名为master,可以在master分支基础上生成多个分支,或者任意分支上再生成分支,方便多线任务并行开发,最后merge代码到master上,合并所有代码。
代码冲突:两个分支代码冲突(同一个文件两个分支都修改了),同时合并会conflict
此时在合并分支阶段修改代码,手动解决冲突,然后使用git add 文件名+git commit -m "xxx",commit后不跟文件名。然后可解决冲突,merge成功
概念:
head指针,一直指向当前所在的分支。当前分支是master,head就代表master,当前是hotfix分支,head就代表hotfix分支。
链接远程库两种方式,https和ssh
Git命令简介:
设置签名:
git config user.name xxx
git config user.email xxx@xxx
git config -global user.name xxx
git config -global user.email xxx@xxx
注:不带global参数的是本地库级别的签名,带global参数则是系统级别的签名,两者设置一个即可,如果都设置则就近用本地库级别签名,如果都不设置则不能提交git
本地库常用命令:
git --version 查看当前git版本,可以用来验证git安装成功。
git init 初始化git本地库,会多.git隐藏文件夹
git status 查看当前本地库状态
git add filename添加文件到暂存区 此时git开始追踪此文件,但是没有形成历史版本
git rm -cache filename 从暂存区删除文件
git commit -m "first commit" fliename 提交本地库 -m是自定义版本信息
git reflog 查看log,有版本号 版本信息
git log 查看详细log,多了提交人 提交日期等。
git reset -hard versioncode,回到某个版本
git branch -v 查看分支
git branch 分支名 :创建分支
git branch -d [分支名]: 删除分支 如果分支还没合并则会有错误提示
git branch -D [分支名]:强删除分支,忽略未合并提示
git checkout 分支名:切换分支
git merge 分支名:把指定分支合并到当前分支上,所以在运行此命令前,要先把分支切换到目的端分支上。合并分支后会把指定分支改动的内容加到目的端分支上。
远程托管中心操作相关命令:
git remote -v 查看远程库别名
git remote add 远程库别名 远程库http链接: 给远程库创建别名,一旦创建成功,则会产生两个,给fetch和push都取了别名
本地库与远程库:
git push 远程库名 本地库分支名: 推送本地分支到远程库
git clone 远程库地址: 从远程库克隆岛本地库。 clone做三件事:1,拉取代码,2 初始化本地库,3创建别名origin
git pull 远程库名 本地库分支名:从远程库拉取改动,更新到本地库 ,git pull = git fetch + git merge, git pull -rebase = git fetch+git rebase
ssh-keygen -t rss -C 远程库账号邮箱:三次回车后生成远程库ssh key到本地c:\users\本地账号名\.ssh中 pub公钥,另一个是私钥,要把公钥内容添加到远程库.-》ssh中
远程库与远程库之间:
fork: 另一个远程库叉代码到自己的远程库,类似复制一份
pull request:申请把远程库代码拉取到另一个远程库
merge: 把提交pull request的远程库merge到远程库
xxx.ignore文件:
扩展名为.ignore的文件中内容可以设置被git忽略的文件,文件内容,直接写*.txt、**/foldername等希望忽略的文件文件名即可。
创建.ignore后文件放在任意位置均可,需要在.git/config文件中添加:
[core]
excludesfile="c:/xxx.ignore"添加此引用。
与VS code结合后文件名颜色会有区分:
红色文件代表未被git追踪
绿色代表添加到暂存区
灰色代表忽略文件
黑色代表已经提交本地库
蓝色代表被追踪过但是被修改了