风在路上 风在路上
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)

风

摸鱼
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)
  • Git

    • Git - 知识体系
    • Git - 简单提交
    • Git - SSH免密登录
    • Git - Commit常用表情
    • Git - 删除提交记录
    • GitHub - 提速
    • 常用Git操作
      • 常用Git操作
        • 分支(branch)的基本操作
        • git fetch的用法
        • git pull的用法
        • remote 命令
        • 常用命令
        • 添加
        • 删除
        • 修改
        • 修改url
        • 查看
        • remote的配置信息
  • Linux

  • Docker

  • JWT

  • 工具部署
  • Git
zdk
2022-01-06
目录

常用Git操作

Table of Contents generated with DocToc (opens new window)

  • 常用Git操作
    • 分支(branch)的基本操作
    • git fetch的用法
    • git pull的用法
    • remote 命令
      • 常用命令
        • 添加
        • 删除
        • 修改
        • 修改url
        • 查看
      • remote的配置信息

# 常用Git操作

  1. 克隆

    1.1默认克隆

    • git clone 链接;

    1.2从指定分支克隆

    • git clone -b 分支名 链接
  2. fork后发起pr,解决pr冲突,需先从上游仓库拉取代码更新到本地,再将本地更新到自己的远程仓库,再pr

    • 查看自己远程仓库的路径:git remote -v
    • 设置upstream,即上游代码库,也就是配置源仓库的路径:git remote add upstream URL(源仓库的地址)
    • 执行git status 查看本地是否有修改未提交。
    • 抓取源仓库的修改更新文件到本地:git fetch upstream
    • 切换到master分支:git checkout master (可不做)
    • 合并远程的master分支:git merge upstrem/master
    • 把本地仓库向gitlab仓库(fork到自己名下的仓库)推送修改:git push
    • 发起pr即可
  3. 解决版本冲突:

    • git pull (remote的自己设的别名) master(要拉取的分支名):将fork的源仓库代码更新到本地
    • 然后本地更新到fork仓库,fork仓库再pr到源仓库
  4. git pull 和git fetch的区别:

    • git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
    • 而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

# 分支(branch)的基本操作

  • git branch //查看本地所有分支

  • git branch -r //查看远程所有分支

  • git branch -a //查看本地和远程的所有分支

  • git branch < branchname> //新建分支

  • git branch -d < branchname> //删除本地分支

  • git branch -d -r < branchname> //删除远程分支,删除后还需推送到服务器

  • git push origin:< branchname> //删除后推送至服务器

  • git branch -m < oldbranch> < newbranch> //重命名本地分支 /** *重命名远程分支: *1、删除远程待修改分支 *2、push本地新分支到远程服务器 */

  • //git中一些选项解释:
    
    -d
    --delete:删除
    
    -D
    --delete --force的快捷键
    
    -f
    --force:强制
    
    -m
    --move:移动或重命名
    
    -M
    --move --force的快捷键
    
    -r
    --remote:远程
    
    -a
    --all:所有
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

# git fetch的用法

  1. git fetch 命令:

    $ git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地

  2. 如果只想取回特定分支的更新,可以指定分支名:

    $ git fetch <远程主机名> <分支名> //注意之间有空格

  3. 最常见的命令如取回origin 主机的master 分支:

    $ git fetch origin master

    取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:

    $ git log -p FETCH_HEAD

    可以看到返回的信息包括更新的文件名,更新的作者和时间,以及更新的代码(19行红色[删除]和绿色[新增]部分)。

    我们可以通过这些信息来判断是否产生冲突,以确定是否将更新merge到当前分支。

# git pull的用法

前面提到,git pull 的过程可以理解为:

git fetch origin master //从远程主机的master分支拉取最新内容 git merge FETCH_HEAD //将拉取下来的最新内容合并到当前所在的分支中

即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:

$ git pull <远程主机名> <远程分支名>:<本地分支名>

如果远程分支是与当前分支合并,则冒号后面的部分可以省略:

$ git pull origin next

# remote 命令

为了便于管理,Git 要求每个远程仓库必须指定一个别名。remote 命令就用于管理仓库别名的命令。

1.远程仓库指的是托管在网络上的项目仓库。

2.通过 clone 命令克隆下来的仓库,默认的别名是 origin。

3.主要涉及的操作有:增(add)、删(remove)、改(rename,set-url)、查(show , get-url)。
1
2
3
4
5

# 常用命令

命令 解释 选项
git remote add < name> < url> 添加新的远程库
git remote remove < name> 删除指定的仓库
git remote rename < old> < new> 将仓库别名重命名为 new
git remote set-url < name> < newurl> 将仓库的 url 修改为 newurl
git remote 列出所有的远程库 -v 表示查看每个库的 url
git remote show < name> 查看指定库的详细信息
git remote get-url < name> 获得指定仓库的 url

在操作时,将别名与 url 的关系理解为 Map 集合 —— 其中别名是 key,url 是 value。

# 添加

**git remote add **:添加一个远程库,同时为该远程库指定别名,使用别名指代远程库地址。

git remote add images https://github.com/birdandcliff/images.git

以后可以使用 images 代替对应的url。
使用该命令可以将本地已有的文件与远程仓库关联,从而可以将本地已有的文件提交到远程仓库中。
1
2
3
4
# 删除

使用 **git remote remove ** 移除别名对应的仓库。

$ git remote
demo
newo

$ git remote remove newo
$ git remote
demo
1
2
3
4
5
6
7
# 修改

使用 **git remote rename ** 修改某个远程库的别名。

对远程库重命名后,对应的分支也会发生变化,将其中关于别名部分换成新别名。

$ git remote -v
demo    https://github.com/birdandcliff/seturl.git (fetch)
demo    https://github.com/birdandcliff/seturl.git (push)

$ git remote -v
demo    https://github.com/birdandcliff/seturl.git (fetch)
demo    https://github.com/birdandcliff/seturl.git (push)

$ git remote rename demo demo2
$ git remote -v
demo2   https://github.com/birdandcliff/seturl.git (fetch)
demo2   https://github.com/birdandcliff/seturl.git (push)
1
2
3
4
5
6
7
8
9
10
11
12

可以看出, url 没有发生变化,但对应的别名已经修改过了。

# 修改url

使用 **git remote set-url ** 将指定的远程仓库地址修改为 newurl。

$ git remote -v
demo    https://github.com/birdandcliff/gitdemo.git (fetch)
demo    https://github.com/birdandcliff/gitdemo.git (push)

$ git remote set-url demo https://github.com/birdandcliff/seturl.git
$ git remote -v
demo    https://github.com/birdandcliff/seturl.git (fetch)
demo    https://github.com/birdandcliff/seturl.git (push)
1
2
3
4
5
6
7
8

修改仓库地址后,可以将本地文件提交提交到新的 url 中。

# 查看

可以查看所有的别名,也可以查看所有的别名与 url,还能通过别名查看指定的 url。

  1. git remote 会列出每一个远程库的别名。可以使用 -v (verbose,详细)选项指定列出详细信息。如下:

  2. **git remote show ** 可查看某个远程库的详细信息

  3. **git remote get-url ** 根据 name 查看指定的 url

$ git remote
newo

$ git remote -v
newo    https://github.com/birdandcliff/seturl.git (fetch)
newo    https://github.com/birdandcliff/seturl.git (push)

$ git remote get-url newo
https://github.com/birdandcliff/seturl.git

$ git remote show newo
* remote newo
  Fetch URL: https://github.com/birdandcliff/seturl.git
  Push  URL: https://github.com/birdandcliff/seturl.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# remote的配置信息

使用 git remote add <别名> url 后,会在 .git/config 文件中添加如下信息:

[remote "demo"]
    url = https://github.com/birdandcliff/gitdemo.git
    fetch = +refs/heads/*:refs/remotes/demo/*
1
2
3

fetch 的格式由一个可选的 + 号和紧随其后的 : 组成。其中 < src> 代表远程仓库中的引用;< dst> 是那些远程引用在本地所对应的位置。 + 号告诉 Git 即使在不能快进的情况下也要(强制)更新引用。

因此,Git 会获取 refs/heads/ 下面的所有引用,并将它写入到本地的 refs/remotes/demo/ 中。

  1. 可以对 fetch 进行手动修改。如将 fetch 行修改如下:
fetch = +refs/heads/master:refs/remotes/demo/master
1

那么使用 git fetch 时,就只会拉取远程仓库的 master。

  1. 分支信息并不一定要存储在 demo 目录下。可以在该目录下任意指定子目录。如:
[remote "demo"]
    url = https://github.com/birdandcliff/gitdemo.git
    fetch = +refs/heads/re:refs/remotes/demo/devlocal
    fetch = +refs/heads/tra:refs/remotes/demo/xx/tra
1
2
3
4

远程的 tra 分支存储的路径就在 demo/xx 目录下,而不是直接位于 demo 目录下。

引用 tra 远程分支时,也需要写成 demo/xx/tra,不能直接写成 demo/tra 形式。如:

$git branch -u demo/xx/tra
Branch dev set up to track remote branch tra from demo.
1
2
在 GitHub 上编辑此页 (opens new window)
#Git
最后更新: 2022/10/04, 16:10:00
GitHub - 提速
Linux

← GitHub - 提速 Linux→

Theme by Vdoing | Copyright © 2022-2025 zdk | notes
湘ICP备2022001117号-1
川公网安备 51142102511562号
本网站由 提供CDN加速/云存储服务
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式