Git常用命令参考手册

Git常用命令参考手册

整理了一篇git常用的命令参考手册,命令顺序按照一个项目从头到尾的常用命令顺序做了排序,后续会继续完善内容示例并补全其他命令使用说明,希望对不熟悉的小伙伴有所帮助。

git config

# 配置列表
git config --list
# 或
git config -l# 全局配置
git config --global user.name  "username"  
git config --global user.email  "email"# 查看配置
git config --list |grep user.name
git config --list |grep email# 关闭https证书验证
git config --global http.sslVerify false# 允许长文件名
git config --global core.longpaths true

git checkout

#创建本地分支
git checkout -b localbranch# 指定local分支名字sf
git checkout -b localBranchName origin/serverfix# 自动创建remote同名分支,并track
git checkout --track origin/serverfix

git branch

# 查看本地和远程所有分支
git branch -a
# 详信息信息
git branch -a -v# 查看远程分支
git branch -r#查看本地分支列表
git branch --list#链接中央仓库
git branch --set-upstream <remote-branch>
git branch --set-upstream-to=origin/0.1-beta 0.1-beta
# 示例:
git branch -u origin/serverfix# 查看看分支track情况(不是实时更新的,从上次更新算起(fetch、pull))
git branch -vv#删除本地分支
git branch -d branchname
git branch -D branchname   // 强制删除
git push origin --delete branchname    // 有必要的情况下,删除远程分支

git add

#添加全部文件到暂存区
git add .

git commit

#提交代码 
git commit -m '提交日志描述'

git stash - 暂存与恢复

git checkout .  #本地所有修改的。没有的提交的,都返回到原来的状态
git stash       #把所有没有提交的修改暂存到stash里面。
git stash pop   #恢复stash中暂存的内容
git reset --hard HASH #返回到某个节点,不保留修改。
git reset --soft HASH #返回到某个节点。保留修改git clean -df #返回到某个节点
git clean 参数-n 显示 将要 删除的 文件 和  目录-f 删除 文件-df 删除 文件 和 目录-xdf 清除未加入版本控制的文件

git fetch

git fetch

git pull

#从远端origin/develop拉取代码
git pull origin develop

git push

git push <远程主机名> <本地分支名>:<远程分支名># origin为设置的远程仓库别名, master为本地分支名, djs为远程分支名
git push origin master:djs#将本地的develop分支推送到origin主机
git push -u <remote> <local-branch>
git push -u origin local-develop#创建远程分支,将本地develop-local推送到远程develop-remote分支上
git push origin develop-local:develop-remote#使远程仓库回到你本地仓库未修改之前的那个版本,远程仓库中进行的相关修改会被删除,然后上传基于你本地仓库的修改。
#这如果在企业开发中就会让别的程序员的这些天的开发付之东流,一切回到解放前。
git push -u origin master -f

创建一个新目录做为仓库,并推送到远程仓库

git clone http://xxxx/xx/xxx.git
cd weather-gather
touch README.md
git add README.md
git commit -m "add README"
git push -u origin develop

初始化已存在的目录做为仓库,并推送到远程仓库

cd existing_folder
git init
git remote add origin http://xxxx/xx/xxx.git
git add .
git commit -m "Initial commit"
git push -u origin develop

推送一个已存在的本地仓库到远程仓库

cd existing_repo
git remote rename origin old-origin
git remote add origin http://xxxx/xx/xxx.git
git push -u origin --all
git push -u origin --tags

git status

#查看本地仓库状态
git status

git merge - 合并分支

git checkout master  //切换到master分支
git merge hotfix  //将hotfix分支上的修改合并到master分支上

git cherry-pick - 合并指定提交

将一个分支上的某个commit合并到另一个分支,可用使用cherry-pick命令实现。

比如:将dev分支上commit_id为f99f2b57b7ee72d55a08e699fbeec34cbac96cb8的提交合并到⇨master分支:

# 1)切换到master分支:
git checkout master# 2)执行cherry-pick命令:
git cherry-pick f99f2b57b7ee72d55a08e699fbeec34cbac96cb83)推送到远程master仓库:
git push

注意master上新的commit id与dev上的id并不相同,即只是将dev上的修改拷贝过来作为一个新的提交。

git reset

#将本地代码重置为远端仓库版本
git reset --hard origin/develop

git alias - 命令别名

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.st status

下面命令要在git bash中使用,如果在dos中使用,会提示系统找不到指定的文件

$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

效果:

HJX@DESKTOP-S4IJD6M MINGW64 /e/hejinxu/workspaces-get-started/vue-test (master)
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"HJX@DESKTOP-S4IJD6M MINGW64 /e/hejinxu/workspaces-get-started/vue-test (master)
$ git lg
* 7ab76a4 - (HEAD -> master, origin/master) add: 提交getters示例 (9 weeks ago) <hejinxu>
* a1febca - add: 添加vuex的getters使用示例 (9 weeks ago) <hejinxu>
* af61a6e - add: 提交vue2-router示例 (2 months ago) <hejinxu>
* 3ee7c19 - add README.md. (2 months ago) <Bright>
* b35dea0 - add: 添加vue-router和vuex测试代码 (2 months ago) <hejinxu>
* f73e70c - add: 添加.gitignore文件 (3 months ago) <hejinxu>

git remote - 远程仓库管理

# 查看关联的远程仓库
git remote -v# 查看远程仓库信息
git remote show origin# 删除本地指定的远程地址
git remote remove origin# 更新本地的远程分支列表
git remote update --prune origin# 删除本地库中有但在远程库已经不存在的分支
# 参考:https://blog.csdn.net/wangqingpei557/article/details/53147086
git remote prune origin

修改关联的远程仓库

方法一 通过命令直接修改远程地址

进入git_test根目录
git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址
git remote set-url origin http://192.168.100.235:9797/john/git_test.git

方法二 通过命令先删除再添加远程仓库

进入git_test根目录
git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址
git remote rm origin
git remote add origin http://192.168.100.235:9797/john/git_test.git

方法三 直接修改配置文件

进入git_test/.git
vim config 

修改 [remote “origin”]下面的url即可

[core] 
repositoryformatversion = 0 
filemode = true 
logallrefupdates = true 
precomposeunicode = true 
[remote "origin"] 
url = http://192.168.100.235:9797/shimanqiang/assistant.git 
fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
remote = origin 
merge = refs/heads/master

如果修改远程关联的仓库后,需要推送代码,可以执行

git push -u origin --allgit push -u origin --tags

git关联本地仓库与远程仓库

#查看本地关联的远程仓库
git remote -v# 设置远程仓库地址
git remote add origin http://xxx.git# 拉取远端仓库
git pull origin master --allow-unrelated-histories        # 将本地分支与远程仓库master分支关联
git branch --set-upstream-to=origin/master master

git rm - 去除某文件的版本控制

git rm -r --cached file     # -r 是允许递归删除,当要删除的是文件夹的时候有用

补充说明,该命令主要用于某些文件已经加入了git控制,但希望.gitignore排除他们的情况,所以要想git不去追踪这些文件,还要将这些文件加入到.gitignore文件清单中。

git clean - 清除文件

git checkout . && git clean -xdf

参数说明:

-dNormally, when no <pathspec> is specified, git clean will not recurse into untracked directories to avoid removing too much. Specify -d to have it recurse into such directories as well. If a <pathspec> is specified, -d is irrelevant; all untracked files matching the specified paths (with exceptions for nested git directories mentioned under --force) will be removed.-f
--forceIf the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f or -i. Git will refuse to modify untracked nested git repositories (directories with a .git subdirectory) unless a second -f is given.-i
--interactiveShow what would be done and clean files interactively. See “Interactive mode” for details.-n
--dry-runDon’t actually remove anything, just show what would be done.-q
--quietBe quiet, only report errors, but not the files that are successfully removed.-e <pattern>
--exclude=<pattern>Use the given exclude pattern in addition to the standard ignore rules (see gitignore(5)).-xDon’t use the standard ignore rules (see gitignore(5)), but still use the ignore rules given with -e options from the command line. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git restore or git reset) to create a pristine working directory to test a clean build.-XRemove only files ignored by Git. This may be useful to rebuild everything from scratch, but keep manually created files.

解决冲突

  1. 先用vi编辑冲突文件
  2. 使用git add {file_name}添加修改后的文件到暂存区
  3. 提交冲突文件,git commit -m "resolve conflict"
  4. 推送到远程仓库git push -u origin develop

git fork后如何同步源仓库更新

原文:http://www.cnblogs.com/leisurelylicht/p/Git-fork-hou-ru-he-tong-bu-yuan-cang-ku-geng-xin.html

1. 设置源仓库的远程地址
>> git remote add [新地址名称] [源仓库远程地址]
>> git remote add upstream https://github.com/leisurelicht/wtfpython-cn2. 同步fork
>> git fetch [新地址名称]
>> git fetch upstream3. 本地切换到想要更新的分支上
>> git checkout [branch]
>> git checkout develop4. 把源仓库的远程分支合并到本地
>> git merge [新地址名称/分支]
>> git merge upstream/develop5. 更新到自己的远程库上
>> git push origin develop

提交日志规范

feature: 功能添加
bugfix: bug修复
change: 调整,比如配置,某些方法替换等
optimize: 优化过程
doc: 文档变更
refactor: 重构,功能不变
tests: 测试代码的调整
merge:分支合并
delete:分支删除假如既添加了功能又优化了过程
Feature(optimize): 添加了××××功能;同时优化了××××功能。

常见报错处理

Git :fatal: refusing to merge unrelated histories解决

git pull origin master --allow-unrelated-histories

Git解决Filename too long的问题

git有可以创建4096长度的文件名,然而在windows最多是260,因为git用了旧版本的windows api,为此踩了个坑。

解决方式是:

git config --global core.longpaths true

git拉取代码报错: SSL certificate problem: self signed certificate

提示信息为SSL认证失败,可以关闭SSL的认证,执行如下命令,然后重新拉取即可。

git config --global http.sslVerify false

附录

1. 常用命令示意图

在这里插入图片描述

2. .gitignore 文件示例

# maven ignore
target/
*.jar
!.mvn/wrapper/*
*.war
*.zip
*.tar
*.tar.gz# eclipse ignore
.settings/
.project
.classpath# temp ignore
*.log
*.cache
*.diff
*.patch
*.tmp# system ignore
.DS_Store
Thumbs.db
*.orig# idea ignore
.idea/
*.ipr
*.iws
.mymetadata
.checkstyle
.classpath
.project
.class
.war
.zip
.rar
*.iml
.settings/*
/indexes/*
/target/*
/src/main/webapp/WEB-INF/classes/*
/src/main/webapp/userfiles/*
/target/
# *.properties

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

翰高4.5.7安装测试手册centos

翰高4.5.7centos版本安装 1 环境准备 产品包&#xff1a;hgdb4.5.7-see-centos7-x86-64-20210804.rpm 环境&#xff1a;10.1.5.172 root/sh88861158 操作系统安装完成后&#xff0c;执行常规操作&#xff1a;修改hosts、关闭防火墙、关闭senliunx 2 安装步骤 2.1 安装前准…

港科夜闻 |香港科大推出 InvestLM生成式人工智能平台,支持金融中小企应用AI技术潜力...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大推出 InvestLM生成式人工智能平台&#xff0c;支持金融中小企应用AI技术潜力。香港科大商学院继去年研究团队成功开发本港首个专为金融界而设、应用于生成式人工智能(生成式AI)的开源大语言模型InvestLM后&#…

【计算机网络】实验6:IPV4地址的构造超网及IP数据报

实验 6&#xff1a;IPV4地址的构造超网及IP数据报 一、 实验目的 加深对IPV4地址的构造超网&#xff08;无分类编制&#xff09;的了解。 加深对IP数据包的发送和转发流程的了解。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、了解IPV4地址的构造超网…

FreeRtos开发之计数信号量

前面介绍过了计数信号量的定义取值只有0与1两种状态的信号量称之为二值信号量 取值大于1的信号量称之为计数信号量 计数信号量的取值也可以为1&#xff0c;但通常大于1&#xff0c;如果取值为1&#xff0c;相当于只有0与1两种状态&#xff0c;用二值信号量即可。 计数信号量应用…

Profinet转EtherNet/IP网关是如何解决西门子S7-1500PLC与AB PLC的通讯问题的

一、 案例背景 在一个工业现场&#xff0c;一端是AB的PLC&#xff0c;IP地址192.168.1.20;另一端西门子是S7-1500系列&#xff0c;IP地址192.168.2.248。AB的PLC内有 B3、N7、F8 三个寄存器文件涉及到通讯&#xff0c;分别对应西门子PLC的M、DB1、DB2三个存储区域。通过捷米特…

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1&#xff0c;可以用数组存放&#xff0c;如果有雷就用1表示&#xff0c;没雷就用0表示。 2&#xff0c;排查(2,5)这个坐标时&#xff0c;我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…

Unity开发FPS游戏之完结篇

这个系列的前几篇文章介绍了如何从头开始用Unity开发一个FPS游戏&#xff0c;感兴趣的朋友可以回顾一下。这个系列的文章如下&#xff1a; Unity开发一个FPS游戏_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个FPS游戏之二_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个F…

浅析RPC—基础知识

该文章会简单介绍一下 RPC 相关的基础概念。 什么是RPC&#xff1f; RPC&#xff08;Remote Procedure Call&#xff09; 即远程过程调用&#xff0c;通过名字我们就能看出 RPC 关注的是远程调用而非本地调用。 为什么要 RPC &#xff1f; 因为&#xff0c;两个不同的服务器…

mysql数据库varchar截断问题

用了这么多年mysql数据库&#xff0c;才发现varchar是可以截断的&#xff0c;而且是在我们线上数据库。个人觉得dba的这个设置是非常有问题的&#xff0c;用户往数据库里存东西&#xff0c;就是为了以后用的&#xff0c;截断了存放&#xff0c;数据不完整&#xff0c;就用不了了…

EwoMail邮箱服务器软件安装教程

EwoMail是基于Linux的开源邮件服务器软件,集成了众多优秀稳定的组件,是一个快速部署、简单高效、多语言、安全稳定的邮件解决方案,帮助你提升运维效率,降低 IT 成本,兼容主流的邮件客户端,同时支持电脑和手机邮件客户端。 一、系统版本 二、关闭selinux vi /etc/sysconf…

【机器学习】机器学习的基本分类-监督学习-支持向量机(Support Vector Machine, SVM)

支持向量机是一种强大的监督学习算法&#xff0c;主要用于分类问题&#xff0c;但也可以用于回归和异常检测。SVM 的核心思想是通过最大化分类边界的方式找到数据的最佳分离超平面。 1. 核心思想 目标 给定训练数据 &#xff0c;其中 是特征向量&#xff0c; 是标签&#xf…

Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题

目录 1. root用户&#xff08;超级管理员&#xff09; 1.1 用于账户切换的系统命令——su 1.2 退回上一个用户命令——exit 1.3 普通命令临时授权root身份执行——sudo 1.3.1 为普通用户配置sudo认证 2. 用户/用户组管理 2.1 用户组管理 2.2 用户管理 2.2.1 …

Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录

前言&#xff1a;纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 参考&…

《Python基础》之Python中可以转换成json数据类型的数据

目录 一、JSON简介 JSON有两种基本结构 1、对象&#xff08;Object&#xff09; 2、数组&#xff08;Array&#xff09; 二、将数据装换成json数据类型方法 三、在Python中&#xff0c;以下数据类型可以直接转换为JSON数据类型 1、字典&#xff08;Dictionary&#xff09…

若依项目源码阅读

源码阅读 前端代码分析 代码生成器生成的前端代码有两个&#xff0c;分别是course.js用于向后端发送ajax请求的接口代码&#xff0c;另一个是index.vue&#xff0c;用于在浏览器展示课程管理的视图组件。前端的代码是基于vue3elementplus。 template用于展示前端组件别的标签…

C#tabcontrol如何指定某个tabItem为默认页

// Selects tabPage2 using SelectedTab.this.tabControl1.SelectedTab tabPage2; 参考链接 TabControl.SelectedTab 属性 (System.Windows.Forms) | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.tabcontrol.selectedtab?viewnetfr…

文件比较和文件流

文件比较和文件流 一、文本比较工具 diff1.基本用法1.1输出格式 2.常用选项 二、文件流1.文件的打开模式2.文件流的分类ifstreamofstreamfstrem区别 3.文件流的函数1. 构造函数2. is_open 用于判断文件是否打开3. open4. getline5. close6. get()7. read8. write9. put10. gcou…

【网络篇】HTTP知识

键入网址到网页显示&#xff0c;期间发生了什么&#xff1f; 浏览器第一步是解析URL&#xff0c;这样就得到了服务器名称和文件的路径名&#xff0c;然后根据这些信息生成http请求&#xff0c;通过DNS查询得到我们要请求的服务器地址&#xff0c;然后添加TCP头、IP头以及MAC头&…

【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞

1. 漏洞结果 JavaScript 框架或库是一组能轻松生成跨浏览器兼容的 JavaScript 代码的工具和函数。如果网站使用了存在漏洞的 JavaScript 框架或库&#xff0c;攻击者就可以利用此漏洞来劫持用户浏览器&#xff0c;进行挂马、XSS、Cookie劫持等攻击。 1.1 漏洞扫描截图 1.2 具体…

互联网基础

TCP/IP协议&#xff08;协议组&#xff09; 分层名称TCP/IP协议应用层HTTP,FTP,mDNS,WebSocket,OSC...传输层TCP&#xff0c;UDP网络层IP链路层&#xff08;网络接口层&#xff09;Ethernet&#xff0c;Wi-Fi... 链路层&#xff08;网络接口层&#xff09; 链路层的主要作用…