git常见用法和核心策略

徐小夕 等级 682 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学习笔记一(GIT公钥私钥生成和配置)
1.准备工作 GIT下载地址:[http://www.git-scm.com/download/](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.git-scm.com%2Fdownload%2F) GIT安装:此处省略一万字。。。。 GIT-OSC地址:[http://gi
Git 和 GitHub
虽然大家使用的工具各有不同,但是相信每一个程序员都对SVN这种代码管理的工作方式很熟悉了。 今天了解一下流行的Git和Github,是因为在使用很多java开源类库时,发现很多都是使用github,例如Jenkins。 **Git (/ɡɪt/) is a distributed revision control system with an e
11月14日任务
一、安装 Git  \* 如果你已经安装好了 Git,可以忽略这一步   CentOS 安装 Git: yum install git   查看 Git 版本信息: git version   配置 Git 用户信息: git config --global user.name "woider" git config --glob
ubuntu14.10server搭建git服务器成功记录
### 安装配置git 1. 安装git和openssh。在当前用户下执行如下命令安装git和openssh: `sudo apt-get install git-core openssh-server openssh-client` git-core是git版本控制核心软件 安装openssh-serve
'git pull'和'git fetch'有什么区别?
### 问题: > _**Moderator Note:** Given that this question has already had _sixty-seven answers_ posted to it (some of them deleted), consider whether or not you are **_contributing
'git pull'和'git fetch'有什么区别?
### 问题: > _**Moderator Note:** Given that this question has already had _sixty-seven answers_ posted to it (some of them deleted), consider whether or not you are **_contributing
CentOS安装oh
安装zsh 和 oh-my-zsh ----------------- 1. 安装zsh `yum install zsh` 2. 安装git `yum install git` 3. 切换默认shell `chsh -s /bin/zsh` 4. clone from
Connection reset by [server_ip] port 22 (hexo d 部署博客出错)
### 问题 在使用 `hexo d` 部署博客和使用 Git/Github 进行 `git push -u origin master` 时遇到了以下问题: git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags origin master:master
Git 原生钩子的深度优化
前言 -- Git 是最流行的版本控制工具,和大多数版本控制工具一样,Git 也拥有钩子特性,用户可以利用钩子实现一些附加功能,在 《Pro Git v2》 中,对钩子类型,消息格式等有详细介绍: [8.3 Customizing Git - Git Hooks](https://www.oschina.net/action/GoToLink?url=ht
Git基础考试题
Git: 1.在windows上搭建git环境,成功后查看版本号 Linux安装 sudo apt-get install git -y yum install git -y windows直接安装exe 查看版本号:git version 2.git与svn的区别 (1)git是分布式的,svn是集中式的 (2)git把内容按元数据的方式
Git安装
安装 sudo apt-get install git 配置用户名和邮箱 git config --global user.name luffy git config --global user.email fraiic@163.com git config --list#查看 1.创建项目,Git
Git生成SSH公钥
一、设置Git全局用户名和邮箱配置 git config --global user.name "huhansan" git config --global user.email "huhansan@qq.com" 如果有对设置Git信息有疑惑的可以看这边篇文章:[为什么要设置Git的邮箱和用户名](https://my.oschin
Git的初始化配置和基本命令的使用
首先说下什么是Git,很多人会把Git和GitHub搞混淆。Git是一个版本控制的工具;GitHub是一个网站,只不过是基于Git的。安装Git就不累述了,自行百度。这里主要说下,初次运行Git的配置和Git基本命令的使用。 初次运行Git的配置(windows系统): 打开Git命令行输入以下命令: git config --global user.
SVN迁移GitLab
SVN迁移GitLab =========== 一、环境准备 ------ 1. 准备一台linux服务器 2. 安装git和git-svn yum install -y git yum install -y git-svn 二、导出SVN工程 --------- git svn clone http://xx
SVN迁移GitLab
SVN迁移GitLab =========== 一、环境准备 ------ 1. 准备一台linux服务器 2. 安装git和git-svn yum install -y git yum install -y git-svn 二、导出SVN工程 --------- git svn clone http://xx