当前位置: 首页 > news >正文

git 常用操作指令

文章目录

    • git clone
    • git config
    • git add
    • git commit
    • git rm
    • git branch/checkout
    • git pull/push
    • git rebash/merge

git clone

git clone 可以将一个远程 Git 仓库拷贝到本地,让自己能够查看该项目,或者进行修改。

拷贝项目命令格式如下:git clone [url]

[url] 是你要拷贝的项目。

例如我们拷贝 Github 上的项目:

$ git clone https://github.com/tianqixin/runoob-git-test
Cloning into 'runoob-git-test'...
remote: Enumerating objects: 12, done.
remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 12
Unpacking objects: 100% (12/12), done.

git config

我们可以通过git config来配置用户名和邮箱地址,便于我们将代码提交到远程仓库,具体格式如下:

git config --global user.name '你的用户名'
git config --global user.email '你的邮箱'

git add

git add 命令可将文件添加到缓存,如新项目中,添加所有文件很普遍,可以使用如下命令:

git add .

注意:add有多种形式,可以add某个文件,某个文件夹,或直接add当前仓库下所有文件

git add 单个文件
git add 文件夹1/ 文件夹2/ ……多个文件夹之间空格隔开
git add .

有时候我们add之后又改了代码,所以想重新add,但是之前add但是没有commit的文件还在,想撤销怎么办呢?

git status //查看已经add的git reset .  //撤销命令reset,此处表示撤销全部

git reset HEAD 命令用于取消已缓存的内容,如我们要取消已提交的test.txt文件,可以如下使用:(撤销单个文件)

git reset HEAD test.txt

git commit

git commit 将缓存区内容添加到仓库中,可以在后面加-m选项,以在命令行中提供提交注释,格式如下:

git commit -m "第一次版本提交"

如果你觉得 每次 commit之前要add一下,想跳过add这一步,可以直接使用 -a选项,如:

git commit -am "第一次版本提交"

我们可以创建一个文件,并将它添加打缓存,之后在提交,具体操作如下:

git rm

如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以如下使用:

git rm <file>

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f <file>

可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:

git rm –r *rm -rf .git/  //强制删除暂存文件

git branch/checkout

  • git branch:查看分支命令
  • git branch (branchname):创建分支命令
  • git checkout (branchname):切换分支命令
  • git merge:合并分支命令
  • git branch -d (branchname):删除分支命令

git branch                           #查看分支
git branch -a                        #查看所有分支,包括远程和本地
git branch name                      #创建分支
git checkout name                    #切换分支到name
git checkout -b name                 #创建一个新的分支并且立即切换到它
git merge name                       #在分支master上合并分支name
git branch -d name                   #删除本地分支name
git push origin --delete name        #删除远程分支  
 

git pull/push

git fetchgit pull的区别:

  1. git fetch:相当于是从远程获取最新版本到本地,不会自动合并。

  2. git pull:相当于是从远程获取最新版本并merge到本地。

  3. git push
    git push 推送你的新分支与数据到某个远端仓库命令,格式如下:

更新操作:
$ git pull
$ git pull origin将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master
git push 命令用于从将本地的分支版本上传到远程并合并。命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>以下命令将本地的 master 分支推送到 origin 主机的 master 分支。
$ git push origin master  //等价于$ git push origin master:master
或git push -u origin master如果origin端还不存在本地分支dev,想将本地分支推送到远端可以使用git push --set-upstream origin dev删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支:
git push origin --delete master

git rebash/merge

在开发中经常需要基于一个分支来创建子分支,然后在子分支上进行开发,最后验证功能无问题才会将子分支合并到主分支上去。将子分支合并到主分支上一般有两种方案,分别为:

  • git merge:这种合并会在对应的主分支上产生合并的提交,以及对应子分支的提交情况。
  • git rebase:这种合并是变基的操作,相当于将子分支的 commit 直接提交到主分支上,此时主分支上不会有合并记录和对应子分支的提交情况,看起来比较清爽。

现将子分支 dev 的代码以git rebase的方式合并到主分支 main上且不要留下合并的记录,此时相当于将子分支的所有 commit 提交到当前的主分支上。如下:
B , C为主分支上的提交,DE 为子分支的提交,现在要将子分支的两笔 commit 合并到主分支上。

 初始时状态:

对子分支 dev 进行git rebase 之后,子分支的 commit 就被合并到主分支上,此时主分支的提交记录如下图所示:

git rebase 流程
# 1. 切换到主分支 main 上,其它分支的代码将被合并到该分支上
git checkout main# 2. 变基操作,对子分支 dev 进行变基操作,相当于将其所有的 commit 都提交到主分支(当前所在的分支)上去
git rebase dev# 3. 变基操作成功后,此时主分支上的代码选哟推送到远程代码仓中
git push

【注意事项】

  1. git rebase 的分支是基于目标分支进行创建的。
  2. git rebase 可能会遇到冲突需要解决

但是如果是多个人在维护主分支main时,自己维护分支dev1,如果自己分支超前main分支,r如果想将dev1分支修改的内容合并到main分支

则最好先同步一下main分支,即将dev1变基onto main
操作:
git checkout dev1
git rebash main
git push此时dev1和main分支同基
然后将dev1修改合并到main分支
操作:
git checkout main
git merge dev1

常见的操作命令:

参考:

Git 常用基本命令使用详细大全_git命令行-CSDN博客

git常用命令总结_git_一头小驴-GitCode 开源社区 (csdn.net)

https://www.cnblogs.com/Jeffxu/p/17968795

http://www.lryc.cn/news/377985.html

相关文章:

  • 达梦导入导出
  • 超级数据查看器 教程pdf 1-31集 百度网盘
  • 一、开发环境安装 Avalonia
  • 融资A轮B轮是什么意思?
  • 开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边
  • 手机网络卡顿,试试飞行模式
  • 【退役之重学 AI】Ubuntu 安装 Anaconda
  • flutter 命令
  • 商超仓库管理系统
  • 校园疫情防控健康打卡系统
  • 关于阿里云效流水线自动部署项目教程
  • 食品快消品进销存+门店批发+零售商城整体代码输出
  • cocosCreator获取手机剪切板内容
  • SAP Web IDE 安装使用
  • Excel 常用技巧(六)
  • 微软修复Wi-Fi驱动高危漏洞 影响Windows所有版本 可通过局域网发起攻击
  • 喜马拉雅项目调整
  • 【C++】基础知识--inline(内联)关键字以及与宏的区别
  • opencv的RGB 颜色表
  • __autoload 函数和sql_autoload_register函数
  • Python 中国象棋游戏【含Python源码 MX_011期】
  • wps要会员才能把pdf分开,这不纯属智商税吗
  • springBoot+mongoDB项目中,使用MongoFactory、MongoTemplate分页条件查询,增删查改
  • Leetcode236 二叉树两节点的最近公共祖先
  • Web的UI自动化基础知识
  • 【我是产品经理_注册安全分析报告】
  • Java智慧工地源码 5G智慧工地系统源码 使用SAAS部署 三维可视化管理,与一线生产过程相融合,集成数据后台,统一前端入口,呈现多方项目信息;
  • lock_wait_timeout
  • 【可控图像生成系列论文(二)】MimicBrush 港大、阿里、蚂蚁集团合作论文解读2
  • Linux时间子系统6:NTP原理和Linux NTP校时机制