git常见用法和核心策略

徐小夕 等级 416 0 0

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

程序员必读

Css3编码技巧

创建并提交一个版本库

课外知识: mkdir 创建目录; pwd 显示绝对路径; cat 文件名 查看文件内容 注:所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,如果要真要使用版本控制系统,就要以纯文本方式编写文件。 千万不要使用Windows自带的记事本编辑任何文本文件,原因是Microsoft开发记事本的团队,在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题.

1.核心操作

# 1.初始化仓库,.git目录默认隐藏,可以通过命令ls -ah显示
git init

# 2.把文件添加到版本库,可以一次添加多个文件,git add . 代表把所有文件全部提交
git add 文件名 文件名

# 3.把文件提交到当前分支
git commit -m '本次提交的说明'

# 4.把项目提交到(远程)仓储
git push

2.分支管理

# 1.查看远程分支
git branch -a

# 2.查看本地分支
git branch

# 3.创建并切换分支 (加-b表示创建并切换)
git checkout -b 分支名

# 4.切换回分支
git checkout 分支名

# 5.从主分支里创建新分支
git checkout master -b 新分支名

# 6.合并某分支到当前分支
git merge 分支名

# 7.删除分支
git branch -d 分支名
git branch -D 分支名 (强行删除分支)

3.解决冲突

# 情景一 提交或拉取时冲突
git stash
git pull
git stash pop

# 情景二 如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull
git reset --hard HEAD^
git pull origin master
# 注:origin master表示git的主分支

# 情景三 分支合并时冲突(当我们git merge 分支名 时)
1.git status (查看发生冲突的文)
2.然后手动合并冲突
3.git add .  (添加更改后的文件)
4.git commit -m 'xj' (提交)

4.查看ssh密钥

# 1.进入.ssh目录
cd ~/.ssh
# 2.查看id_rsa.pub文件
cat id_rsa.pub

5.克隆远程项目

git clone 远程源地址

6.回退某个操作

# 1.查看命令历史
git reflog
# 2.根据commitID撤销某个操作
git reset --hard 某个commitId

7.和远程分支建立关联

git branch --set-upstream-to=origin/远程分支的名字 本地分支名

8.删除文件

# 删除版本库中的文件
git rm filename
# 恢复工作区中误删的文件
git checkout -- filename
# 注:git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

9.远程仓储

# 1.创建sshkey密钥
ssh-keygen -t rsa -C "youremail@example.com"
# 2.在远程仓库中添加ssh公钥
# 3.关联远程库
git remote add origin git@server-name:path/repo-name.git
# 4.第一次推送master分支的所有内容,此后只需要使用git push origin master即可推送最新修改
git push -u origin master

10.多人协作

# 1.查看远程仓储的详细信息
git remote -v
# 2.推送本地分支到远程仓库,
  #1.如果发生冲突,用git pull试图合并,如果发生冲突则解决冲突,再进行推送
  #2.如果git pull后提示no tracking information(没有追踪信息),则进行第四项,建立关联,之后pull,有冲突再合并
git push origin 本地分支名
# 3.在本地创建和远程分支对应的分支
git checkout -b 本地分支 origin/远程分支名
# 4.建立本地分支和远程分支的关联
git branch --set-upstream 本地分支名 origin/远程分支名

11.分支策略

1.master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
2.干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
3.每个人都有自己的分支,时不时地往dev分支上合并就可以了

补充

# git fetch和git pull的区别
与git pull相比git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。

# 查看仓库当前的状态
git status

// 查看提交日志
git log

# 回退版本,在git中用HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上个版本
git reset --hard HEAD^ 或
git reset --hard 3628164 (数字代表log里commit后面的id,只需要填前几位就可以)

# 窗口关闭后回退版本(git reflog用来记录你的每一次命令)
git reflog

# 工作区和暂存区
工作区就是你建立的能看见的目录,.git即为git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支

# 撤销修改
1.直接丢弃工作区的修改,用命令git checkout -- file
2.修改添加到了暂存区,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作

更多推荐

收藏
评论区

相关推荐

git常见用法和核心策略
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。 (http://build800.com/2018/02/12/gitStudy/%E7%A8%8B%E5%BA%8F%E5%91%98
golang 不翻墙安装golang.org/x/net
下载安装golang.org/x/net其实网上有很多的文章,但总的归来是有两种: 方法一: 为了使包的导入方式不变,我们需要在src目录下面构造目录结构 $mkdir p $GOPATH/src/golang.org/x/ $cd $GOPATH/src/golang.org/x/ $git clone https://git
快速实现在linux系统上安装Git
一.git介绍 Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便
git常用命令
关注公众号QXF069 克隆版本:git clone  path路径 <directory  若默认则是文件的名字。 查看远程版本库的地址   git remote v | verbose 将本地版本库和远程URL关联起来 git remote add t branch <name(origin) <Repository U
Git + Docker 多环境自动化部署
日常项目开发过程中,一般都有多套环境,比如开发、测试和生产。各个环境部署的代码版本不一致,手动一个个来部署效率低且容易出错。如果项目采用了敏捷开发方式,可能每天需要部署几十次。手动方式更加不可行,因此必须要把多环境的部署工作自动化。本文将介绍在笔者参与项目中实际推行的一种方案,供大家参考。 整体方案 整体方案(https://imghe
Virtual DOM 的原理与实现
只贴代码 不解释过程 勿喷 ; 环境搭建1.克隆$ git clone https://github.com/cvgellhorn/webpackboilerplate.git$ npm install $ npm install @babel/plugintransformreactjsx savedev2.配
聊聊golang的DDD项目结构
序本文主要研究一下golang的DDD项目结构interfacesfoodappserver/interfacesinterfaces git:(master) tree.|____fileupload| |____fileformat.go| |____fileupload.go|____food_handler.go|__
一个没法商用,但是好玩有趣的 Python 手绘图形库!
https://github.com/chenjiandongx/cutecharts今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts。和 Matplotlib 、pyecharts 等常见的图表不同,使用这个包可以生成下面这种看起来像手绘的各种图表,在一些场景下使用效果可能会更好。GitHub 地址:https://git
GIT常用命令
1、初始化本地Git存储库 language git init2、创建远程存储库的本地副本 language git clone ssh://git@github.com/[username]/[repositoryname].git3、检查状态 language git status4、将文件添加到暂存区 language git add [fil
Git基础命令教程
Git学习 git 之前,我们需要先明白一个概念,版本控制! 版本控制 什么是版本控制版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 实现跨区域多人协同开发 追踪和记载一个或者多个文件的历史记录 组织和保护你的源代码和文档 统计工作量
Git避免每次都要输入密码,SSH公钥的生成和绑定
设置本机绑定 SSH 公钥,实现免密码登录 在我们平时写完代码提交的时候,每次都要输入账号和密码,很烦很烦 ,浪费时间,这篇文章的目的就是为了让大家变的更加轻松配置 SSH 公钥实现免密提交: 生成公钥 sshkeygen t rsa 然后在C:\Users\ASUS\.ssh路径下找到idrsa.pub文件将里面的内容复制(ASUS 是我当前用户的用户名
最方便的git教程使用大全,让你玩转git!!!
本篇是介绍廖雪峰老师官方网站中Git教程的学习笔记我感觉可以学到很多东西,可以使你简单上手,也可以供你复习时候使用。每个开发都可以从master上克隆一个本地版本库,就算没有网络,也可以提交代码到本地仓库、查看log、创建项目分支等等每个版本库都可以创建无限个分支,分支是个完整的目录,且这个目录拥有完整的实际文件 一、安装网上搜一下安装教程,这里就不介绍了安
关于根据颜色刷选图像内容的问题
在CSDN本人博文《OpenCVPython图像处理:用inRange刷选图像中指定颜色对象案例》(请点击文章底部最下方的“阅读原文”跳转CSDN阅读原文)中介绍了根据颜色刷选图像内容相关的概念及实现,介绍了通过使用inRange在HSV颜色空间中识别制定颜色的图像内容,文中概要介绍了HSV颜色空间中进行制定颜色对象识别的要点,使用的inRange函数的语法
git 本地代码提交到远程仓库
git 将本地代码添加到远程仓库 1. 本地初始化使用git init进行初始化可以使用ls a就可以看到.git文件 2.创建远程仓库点击复制仓库地址 3. 连接远程仓库shell git remote add origin https://gitee.com/test/test.git 4. 将远程仓库的文件pull到本地git pull rebase
git基本操作
一、Git下载安装1、git官网:https://gitscm.com/2、官网下载较慢也可以去找国内镜像:https://npm.taobao.org/mirrors/gitforwindows/3、安装完成后鼠标右键出现以下标志代表安装完成:二、git上传代码到远程仓库(以coding为例)1、在磁盘本地创建一个git仓库,如下图创建一个文件夹gitcs