一、工作区和暂存区
工作区:我们直接编辑的地方,比如使idea打开文件直接操作
暂存区:数据暂时存放的地方,是工作区与版本库之间数据交流的纽带
版本库:存放已经提交的数据,push的时候就是将这区域中的数据push到远程仓库的。
git add xxx 该命令只能将文件从工作区提交到暂存区
git commit -m …只能将文件从暂存区提交到版本库中
二、Git基本操作
文件夹中有一个隐藏的.gti文件夹,这个文件夹就是一个git仓库,git仓库不可嵌套,即有隐藏文件.git的文件夹不可以嵌套
1.创建版本库
创建或指定一个文件夹
2.初始化版本库
git init 在指定的文件夹中执行初始化命令,是该文件夹成为一个git仓库
3.添加文件到版本库中
就是使用git把文件管理起来,通过git add命令,在通过git commit命令提交到版本库;可以多次add后统一commit
git add xxxfile
git commit -m “说明”
4.status和diff命令
命令 | 介绍 |
---|---|
status | 查看当前库到状态 |
diff | 查看文件的变化的【工作区和版本库】 |
5.版本回退
log命令
git log 查看文件的历史版本,该命令显示的日志会很多
git log --pretty=oneline 单行显示日志
版本回退
git reset --hard HEAD^ 回退到上一个版本
git reset --hard 版本号 回退到指定的版本
该方式也可以在返回退到最新版本,只不过git log日志中是没有最新日志版本号记录的。所以可以提前保存下来,也可以通过如下命令查看所有文件日志
git reflog xxxfile 可以查看所有版本日志,log只展示回退版本之前的日志
三、撤销管理
1.还未提交到暂存区
git restore filename 可以通过如下命令实现回退(git checkout好像不行)
2.提交到了暂存区
git restore --staged filename 使用该命令将文件回退到工作区
3.提交到了版本库
git reset --hard HEAD^ 直接回退到上个版本
git reset --hard 版本号 回退到指定版本号
四、删除管理
操作和添加文件差不多,也是通过回退来实现
GitHub远程仓库
1.创建SSH Key
ssh-keygen -t ras -C “mymail@163.com”
在用户根目录下生成了id_rsa和id_rsa.pub两个文件
2.登录GitHub
配置SSH:我的->setting->SSH and GPG keys
3.创建远程仓库
1、通过create new repository创建仓库,仓库名称,描述信息,共开等…
4.关联远程仓库
1、在本地创建一个仓库和远程仓库关联
2、直接在本地已经存在的仓库中关联远程仓库
git remote add origin git@gtihub.com:ffdd
3、导入其他仓库
5.推送文件到远程仓库
git push -u origin master
6.克隆远程仓库
一个文件夹中有一个隐藏的.git文件,这个文件夹就是一个仓库,注意不要在文件夹中继续创建仓库
git clone git@github.com:xxx
五、分支管理
1.创建分支
git branch 查看分支
git branch 分支名称 创建分支
git checkout 分支名称 切换分支
git checkout -b 分支名称 创建分支并直接切换到分支
2.分支操作
分支上的相关操作是独立的,其他分支是看不到的。其他分支需要看到,则需要合并分支;切换到要合并的分支上,然后merge
git merge 分支名称
git push --set-upstream origin 分支名称 本地分支推送到远程仓库
3.分支删除
git branch -d 分支名称 删除本地分支
git push origin --delete 分支名称 删除远程分支
4.解决冲突
冲突文件说明:
<<<<<<HEAD
xxxxxx 这是前一个分支内容
=======
bbbbb 这是合进来的分支内容
>>>>> 分支名称
等号上下两处就是冲突的内容,冲突后直接编辑冲突的文件即可;
5.分支操作和查看
master分支:该是主分支,不在上面进行开发,分支内容非常稳定
dev分支:一个新需求的开发分支,来自master,由项目经理管理
michoel分支:子需求1分支,每天开发后提交到本分支,由项目经理并合并到dev分支中
bob分支:子需求2分支,来自dev分支,每天开发完提交到本分之,由项目经理合并到dev分支
查看分支日志:
git log --graph --pretty=oneline
六、Bug分支
针对突发任务,可以保存当前分支的工作状态,去处理临时任务,处理完成后回来继续工作;
git stash 存储当前状态
git stash list 查看存储的状态列表
git stash apply 恢复之前的状态
七、多人协作
1.分支推送
git pull 拉取分支最新代码
git push 代码推送到远程分支
git push origin 分支名称 推动本地分支到远程仓库,如果远程仓库分支不存在则会自动创建这个分支
本地创建分支,然后和远程指定分支关联
git checkout -b '分支名称‘ 本地创建并切换到改分支上
git branch --set-upstream-to==origin/本地分名称 远程分支名称
2.冲突解决
git pull 拉取代码,这时候肯能会冲突,然后解决冲突,和之前解决冲突方式一样
git push origin 分支名称 推送代码到远程分支
八、标签管理
对于一些里程碑式的代码版本,需要记下来,此时可以使用标签,来给项目打标签;同时标签也可以
1.创建标签
git tag -a 标签名 -m “说明” 给当前代码打标签
git tag 查看本地标签列表
git log --pretty=oneline --abbrev-commit 查看提交日志和对应的标签
git tag 标签 版本号 给指定版本号代码打标签
2.查看指定标签代码
git reset --hard 标签 根据标签查看对应版本代码
3.标签远程仓库推送和获取
git push origin --tags 将本地标签全部推送到远程仓库
git pull 拉取远程分支的tags
4.标签删除
git tag -d 标签名
git push origin :refs/tags/标签名
这时候其他本地分支的标签不可以删除,需要手动删除
九、常用命令总结
十一、远程仓库ssh与http协议互转
git remote rm origin 删除远程仓库原有协议链接
git remote add origin http://xxxxx或者ssh的链接地址
然后pull代码或者push代码,这时候可能需要用命或密码; 用户名在git的log中查看,密码就是你访问内网的密码;
本地分枝没有关联远程分枝会报如下错误:
There is no tracking information for the current branch.
解决方式:与远程分枝建立关联关系
git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字