首页 > 其他分享 >Git简单总结

Git简单总结

时间:2023-03-08 19:34:50浏览次数:42  
标签:总结 origin git 仓库 tag Git master 简单 分支

0x01 Git理解

  • 分布式版本控制器:在个人电脑,云端都有着所有的代码。
  • 版本控制,可自由回滚,向前向后。git记录的是快照,不是整个代码的备份;每个快照之间通过指针指向来记录。
  • git大量的操作都在本地,远端一般作为发布,备份。
  • git主要分了三个空间进行管理:工作区,暂存区,版本库
  • git指令如果遗忘,可以在后面输入 --help查看详情

0x02 使用流程

1. 初始化

# 该步骤是将当前目录下的所有划归给git进行管理
git init

2. 将在工作区的文件提交到暂存区

# 单个文件
git add 文件名

# 全部文件
git add .
git add -A

3. 将在暂存区的文件提交到版本库

git commit -m "注释信息"

4. 创建tag

一般使用tag来进行版本的发布

git tag -a 名字 -m "注释信息"
	
# 推送给远程仓库
git push origin tag的名字

tag其他常用指令

# 查看有哪些tag
git tag

# 查看某个tag的详细信息
git show tag名字

# 将tag推送到远端
git push origin tag名字

#推送本地所有tag
git push origin --tags 

# 本地删除tag
git tag -d tag名字

# 删除远端tag
git push origin --delete tag名字

5. 查看版本库信息

git log

# 简洁模式
git log --oneline 

# 以图形的形式,简化查看信息,格式化的规则可以看--help里的内容
git log --graph --pretty="%t %s"

# 该指令为查看所有记录
git reflog  

6. 回滚

从版本库到工作区(已控制)

# 可通过git log 和git reflog查看版本号,可反复回滚版本
git reset --hard 版本号     

0x03 分支问题

创建每个分支的时候,实际就是复制当前分支的内容。
创建分支

git branch 分支名字

#创建分支并切换到该分支
git checkout -b 分支名字		

切换分支

git checkout 分支名字

1. 合并分支

merge

merge会基于两个分支,创建一个新的副本,会记录多余的分支提交记录
比如想合并dev和master分支,但master分支是主要分支,dev分支可删,这时就先切到master分支,再使用以下指令

git merge 分支名字
git merge dev

# 推荐以下指令,将dev分支合并进master(先切到master分支,再合并)
git merge master dev

rebase

rebase(变基)会先找记录早一点的分支,然后打补丁,然后再将另一个分支合并起来,不会产生多余的分支记录
和merge一样,想合并到哪个分支,就先切到哪个分支

git rebase 分支名字

# 推荐下面指令,将dev分支合并到master
git rebase master dev

rebase其他功能

  1. 合并提交记录
#合并当前记录和前一个记录
git rebase -i HEAD~2 

#将该id前的记录合并
git rebase -i 某个记录的id 

# 进去后,更改pick
pick 6604296 home.txt
pick ae8d6c5 com.txt
# ->
pick 6604296 home.txt
s ae8d6c5 com.txt
# 便可以合并
  1. 本地代码仓库和远程代码仓库记录合并
    和合并分支的情况是一样的,只不过这里是本地仓库和远程仓库版本不同
# 可以在下拉的时候输入
git pull --rebase origin master

# 也可以先fetch,再rebase
git fetch origin master
git rebase master origin/master

如果产生冲突,就按照提示,手动处理冲突

2. 删除分支

# 删除本地分支
git branch -d 分支名

# 删除远程分支
git push origin --delete 分支名称

0x04 远程仓库

远程仓库有很多,使用人数比较多的是github和gitlab。远程仓库,实际上就是将本地仓库的代码备份到云端。
注册账号,并新建一个空仓库,然后在本地仓库设置一个远程仓库

git remote 远程仓库别名 "url地址"

# 常见指令,将远程仓库取别名origin
git remote origin "url地址"	

将代码全部推送到远程仓库上

git push origin master

将代码下拉,首先要切换到自己的分支,假设为dev,然后下拉

# 此指令是直接从远程仓库拉到工作区
git pull origin dev

# 上面代码等于

# 将远程仓库的代码拉到本地代码库
git fetch origin dev
# 将origin/dev分支合并带本地dev分支,合并到了工作区
git meger origin/dev

0x05 gitflow工作流

https://blog.csdn.net/xingbaozhen1210/article/details/81386269
大概就是从主分支拉出几个分支,测试完成后再合并到主分支。
紧急BUG也是这样处理

遇到紧急bug:

# 先保存自己分支的当前操作(此情况针对,功能没写完,没commit,又不想多一条无用的commit记录)
git stash

# 切换到master分支
git checkout master

# 创建bug分支
git checkout -b bug

# 改完bug,合并到master分支和dev分支
# 切回到自己分支,再复原
git stash pop

1. git stash

git stash用于将当前工作区的修改暂存起来,就像堆栈一样,可以随时将某一次缓存的修改再重新应用到当前工作区。

# 存储未提交的更改
git stash
# 列出暂存
git stash list
# 清理暂存
git stash clear
git stash drop <stash_id>
# 弹出栈
git stash pop

2. gitingore

标记git不管理的文件,可以参考https://github.com/github/gitignore

0x06 PR

给其他github项目提交贡献,简称PR,和gitflow工作流差不多的步骤

  1. fork想要提交贡献的项目到自己的github仓库
  2. git clone下来,在本地修改代码
  3. git push到自己的仓库
  4. 点击pull request(和merge request操作一样,提交等待是否通过就好)

0x07 一些常用操作

1. 在本地生成密钥对

ssh-keygen
# 按照提示走,建议不需要输入密码(方便意味着降低安全性)
# 然后在远程仓库上新建密钥即可

2. 添加远程仓库

git remote add origin [email protected]:qiphon/music-thumb.git
git push origin master

3. 从https转为ssh

# 查看远程仓库连接
git remote -v

# 修改地址
git remote set-url origin ssh地址

标签:总结,origin,git,仓库,tag,Git,master,简单,分支
From: https://www.cnblogs.com/jarwu/p/17195852.html

相关文章

  • 如何恢复丢弃的 git stash 数据
    参考:https://zhuanlan.zhihu.com/p/289485671、问题不小心把缓存stash(储藏)起来的代码删除了sourcetree删除命令行删除$gitstashlist#stash@{0}:Onpin......
  • 3.8每日总结13
    今天利用两个小时的时间去解决昨天Androidstudio连不上mysql的问题,虽然还是没有解决掉,但是从中学习了很多知识。第一就是导入.jar包后要进行系统的识别不然粘贴上去......
  • 排序算法总结
    1.冒泡排序原理:数组元素两两比较,交换位置,大元素往后放,经过一轮比较后,最大的元素就会出现在最大索引处(nums[].length-1-i)。Java代码:publicclassSort01{//......
  • 查看git的用户名和密码
        参考:https://blog.csdn.net/qq_42012908/article/details/116757606......
  • 简单的主从复制
    简单的主从复制配置文件说明master:cat/etc/my.cnf[client]port=3306socket=/data/soft/mysql/mysql.sock[mysqld]user=mysqlport=3306socket=......
  • 冒泡排序(简单C++实现)
    实现代码如下://bubble_sort.cpp#include<stdio.h>voidprintArray(intarr[],intlen);//冒泡排序:最多进行n-1次排序intmain(){intarr[]={23,39,65,2......
  • ssh 远程连接方式总结
    ssh远程连接方式总结嵌入式视觉于2023-03-0619:42:13发布335收藏1分类专栏:软件安装文章标签:sshlinux服务器版权软件安装专栏收录该内容7篇文章2订阅订阅......
  • pdf.js 企业微信浏览器无法打开及简单使用
     1.官网地址http://mozilla.github.io/pdf.js/getting_started/2.下载旧版本   3.复制到项目地址中使用<a>标签<ahref="../content/pdfjs-3.4.120-dist/web......
  • Git03-git基础
    1、git命令]#git--helpusage:git[--version][--help][-C<path>][-c<name>=<value>][--exec-path[=<path>]][--html-path][--man-path][--info-......
  • STL:map映照容器的简单用法(poj 2503 Babelfish)
    STL中map映照容器由一个键值和一个映照数据组成,具有一一对应的关系。结构为:键值--映照数据       例: aaa --111             bbb--222   ......