git学习

Git学习

创建版本库

mkdir learngit //创建空目录
cd learngit
pwd

时光机穿梭

git init
git add readme.txt   //添加文件到缓存区
git commit -m "wrote a readme file" //将缓存中的文件提交 引号表示对该过程的描述
git status           //时刻掌握仓库当前的状态

版本回退

git diff readme.txt  //查看具体修改了什么
git diff HEAD -- read.txt //查看工作区和版本库里面最新版本的区别

git log                 //可以查看提交历史,以便确定要回退到那个版本
git log --pretty=online //缩略版本
git reflog              //查看历史命令,以便确定要回到未来的那个版本
git reset --hard HEAD^  //回溯到上个版本
git reset --hard <commit id> //回溯到特定版本下,也可通过这种方式回溯到不能找到版本号,
                             //通过log 找到去commit id 即可,不需要完全输入其id

管理修改

//把readme.txt 文件在工作区的修改全部撤销,回溯到暂存区或者版本库版本
git checkout -- file 

//删除工作区和暂存区文件
git reset HEAD <file>
git checkout -- file //从版本库下载一份

删除文件

rm test.txt //删除本地文件
//从版本库中删除该文件 
git rm test.txt
git commit  -m "delete test.txt"

//如果删错了,版本库还存在
git checkout -- test.txt

远程仓库

1.创建SSH Key

ssh-keygen -t rsa -C "youremail@example.com"

2.登录GitHub->Account settings->SSH Keys->Add SSH Key
填写Title,在Key文本框里粘贴id_rsa.pub 文件内容

3.添加远程库
GitHub->Create a new repo
->在本地的learngit仓库中运行下面命令

git remote add orgin git@github.com:grain-lu/learngit.git//其中用户名和文件夹名自定义
//将本地库的所有内容推送到远程库上:
git push -u origin master//第一次推送master分支的所有内容
git push origin master   //推送最新修改

4.从远程库克隆

  1. 在github新建一个带说明文档的库
  2. 在本地
git clone git@github.com:grain-lu/gitskills.git  //用户名和文件名可编辑

分支管理

创建于合并分支

//查看分支
git branch       //查看分支
git branch <name>//创建分支

//切换分支
git checkout <name>
git switch <name>

//创建切换分支
git checkout -b <name>
//-b参数表示创建并切换相当于 
git branch dev
git checkout dev

git switch -c <name>

//合并某分支到当前分支
git merge <name>
//删除分支
git branch -d <name>

解决冲突

//在两个分支分别修改并且提交后合并会出现冲突
//在冲突文本中修改在上传即可
//代码基本同上
git log --graph //可以查看分支合并图

分支管理策略

使用--no-ff 方式合并避免提交历史混乱,基于该方法可以使得develop分支在合并后回退到合适版本
git merge --no-ff -m "merge with no-ff" dev

Bug分支
修复bug时,我们会通过创建新的bug分支来进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash 一下,然后去修复bug,修复后,再git stash pop ,回到工作现场;
在master分支上修复的bug,想要合并到当前dev分支,可以用

git  cherry-pick <commit>
//当本地文件和stash的文件冲突时,先将本地文件提交,在操作

删除Featurn

//删除存在待合并项目的分支
git branch -D <name>

多人协作

查看远程库信息,使用 git remote -v
本地新建的分支如果不推送到远程,对其他人是不可见的
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git push 抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull ,如果有冲突,要先解决冲突。

问题

首先所有当前分支的文件都要提交一下
出现拒绝合并无关的历史的错误:
git push origin branch-name --allow-unrelated-histories

Rebase

git rebase//可以把本地为push的分叉提交历史整理成直线
//rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

标签管理

创建标签

git tag<name>//打一个标签
git tag      //查看所有标签
git log --pretty=oneline --abbrev-commit//查看历史提交的id
git tag v0.9 <commit-id>//添加标签
git show <tagname>//查看标签信息
//创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released " 1094adb
用命令git show <tagname>可以看到说明文字
git tag -d v0.1 //删除标签
git push origin <tagname>//推送某个标签到远程
git push origin --tags//一次推送全部尚未推送到远程的本地标签


清除缓存

git rm -r --cached .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值