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 f99f2b57b7ee72d55a08e699fbeec34cbac96cb8

3)推送到远程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

参数说明:

-d
  Normally, 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
--force
  If 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
--interactive
  Show what would be done and clean files interactively. See “Interactive mode” for details.

-n
--dry-run
  Don’t actually remove anything, just show what would be done.

-q
--quiet
  Be 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)).

-x
  Don’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.

-X
  Remove 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-cn
 
2. 同步fork
>> git fetch [新地址名称]
>> git fetch upstream
 
3. 本地切换到想要更新的分支上
>> git checkout [branch]
>> git checkout develop
 
4. 把源仓库的远程分支合并到本地
>> git merge [新地址名称/分支]
>> git merge upstream/develop
 
5. 更新到自己的远程库上
>> 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

form表单阻止默认事件及获取值

阻止form的默认事件 方法1 采用行内js的onsubmit,那么实参必须使用保留的关键词event <form action"" id"aa" name"bb" onsubmit"cdma(event)"><input type"text" name"zhangsan" > </form>…

【Linux-进程信号】可重入函数+volatile关键字+SIGCHLD信号+重谈系统调用

可重入函数 首先我们看一个例子&#xff0c;单链表的头插&#xff1b; main函数调用insert函数向一个链表head中插入节点A&#xff0c;插入操作分为两步&#xff0c;刚做完第一步的时候&#xff0c;因为硬件中断使进程切换到内核&#xff0c;再次回用户态之前检查到有信号待处…

以AI算力助推转型升级,暴雨亮相CCF中国存储大会

2024年11月29日-12月1日&#xff0c;CCF中国存储大会&#xff08;CCF ChinaStorage 2024&#xff09;在广州市长隆国际会展中心召开。本次会议以“存力、算力、智力”为主题&#xff0c;由中国计算机学会&#xff08;CCF&#xff09;主办&#xff0c;中山大学计算机学院、CCF信…

vulnhub靶场【哈利波特】三部曲之Aragog

前言 使用virtual box虚拟机 靶机&#xff1a;Aragog : 192.168.1.101 攻击&#xff1a;kali : 192.168.1.16 主机发现 使用arp-scan -l扫描&#xff0c;在同一虚拟网卡下 信息收集 使用nmap扫描 发现22端口SSH服务&#xff0c;openssh 80端口HTTP服务&#xff0c;Apach…

【Leetcode】26.删除有序数组中的重复项

题目链接&#xff1a; https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述&#xff1a; 解题思路&#xff1a; 使用双指针算法&#xff08;快慢指针&#xff09;&#xff0c;p1与p2…

深度学习开端知识

深度学习概述 什么是深度学习 人工智能、机器学习和深度学习之间的关系&#xff1a; 机器学习是实现人工智能的一种途径&#xff0c;深度学习是机器学习的子集&#xff0c;区别如下&#xff1a; 传统机器学习算法依赖人工设计特征、提取特征&#xff0c;而深度学习依赖算法自…

Redis自学之路—高级特性(实现消息队列)(七)

目录 简介 Redis的Key和Value的数据结构组织 全局哈希表 渐进式rehash 发布和订阅 操作命令 publish 发布消息 subscribe 订阅消息 psubscribe订阅频道 unsubscribe 取消订阅一个或多个频道 punsubscribe 取消订阅一个或多个模式 查询订阅情况-查看活跃的频道 查询…

高效集成:将聚水潭数据导入MySQL的实战案例

聚水潭数据集成到MySQL&#xff1a;店铺信息查询案例分享 在数据驱动的业务环境中&#xff0c;如何高效、准确地实现跨平台的数据集成是每个企业面临的重要挑战。本文将聚焦于一个具体的系统对接集成案例——将聚水潭的店铺信息查询结果集成到MySQL数据库中&#xff0c;以供BI…

LeetCode-430. 扁平化多级双向链表-题解

题目链接 430. 扁平化多级双向链表 - 力扣&#xff08;LeetCode&#xff09; 题目介绍 你将得到一个双链表&#xff0c;节点包含一个“下一个”指针、一个“前一个”指针和一个额外的“子指针”。这个子指针可能指向一个单独的双向链表&#xff0c;并且这些链表也包含类似的特殊…

arkTS:持久化储存UI状态的基本用法(PersistentStorage)

arkUI&#xff1a;持久化储存UI状态的基本用法&#xff08;PersistentStorage&#xff09; 1 主要内容说明2 例子2.1 持久化储存UI状态的基本用法&#xff08;PersistentStorage&#xff09;2.1.1 源码1的相关说明2.1.1.1 数据存储2.1.1.2 数据读取2.1.1.3 动态更新2.1.1.4 显示…

AI 助力开发新篇章:云开发 Copilot 深度体验与技术解析

本文 一、引言&#xff1a;技术浪潮中的个人视角1.1 AI 和低代码的崛起1.2 为什么选择云开发 Copilot&#xff1f; 二、云开发 Copilot 的核心功能解析2.1 自然语言驱动的低代码开发2.1.1 自然语言输入示例2.1.2 代码生成的模块化支持 2.2 实时预览与调整2.2.1 实时预览窗口功能…

AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下AI高中数学教学视频生成技术&#xff1a;利用通义千问、MathGPT、视频多模态大模型&#xff0c;语音大模型&#xff0c;将4个模型融合 &#xff0c;生成高中数学教学视频&#xff0c;并给出实施方案。本文利用专家模…

【前端Vue】day04

一、学习目标 1.组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09; ​ scoped解决样式冲突/data是一个函数 2.组件通信 组件通信语法父传子子传父非父子通信&#xff08;扩展&#xff09; 3.综合案例&#xff1a;小黑记事本&#xff08;组件版&#xff09; 拆分…

嵌入式系统应用-LVGL的应用-平衡球游戏 part2

平衡球游戏 part2 4 mpu60504.1 mpu6050 介绍4.2 电路图4.3 驱动代码编写 5 游戏界面移植5.1 移植源文件5.2 添加头文件 6 参数移植6.1 4 mpu6050 4.1 mpu6050 介绍 MPU6050是一款由InvenSense公司生产的加速度计和陀螺仪传感器&#xff0c;广泛应用于消费电子、机器人等领域…

每日十题八股-2024年12月2日

1.你知道有哪个框架用到NIO了吗&#xff1f; 2.有一个学生类&#xff0c;想按照分数排序&#xff0c;再按学号排序&#xff0c;应该怎么做&#xff1f; 3.Native方法解释一下 4.数组与集合区别&#xff0c;用过哪些&#xff1f; 5.说说Java中的集合&#xff1f; 6.Java中的线程…

git 常用命令及问题

一、常用命令 git add filename git add . git commit -m "messge" git commit --amend 修改最近一次的提交 git push origin HEAD:refs/for/master git clone url git checkout branchname 切换分支 git branch -r 查看远程仓库分支列表 git branch br…

DSD-DA

adversarial loss L a d v _{adv} adv​ g() denotes the project function&#xff0c;Gradient Reverse Layer(GRL). ROI features F ( r ) (r) (r) 补充信息 作者未提供代码

医院管理系统

私信我获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 医院管理系统 摘要 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求&#xff0c;创建了一个计…

SpringBoot 整合 Avro 与 Kafka

优质博文&#xff1a;IT-BLOG-CN 【需求】&#xff1a;生产者发送数据至 kafka 序列化使用 Avro&#xff0c;消费者通过 Avro 进行反序列化&#xff0c;并将数据通过 MyBatisPlus 存入数据库。 一、环境介绍 【1】Apache Avro 1.8&#xff1b;【2】Spring Kafka 1.2&#xf…

Win10+Ubuntu20.04双系统重装Ubuntu22.04单系统

从去年 8 月美化 Ubuntu 系统后一直存在内核错误问题&#xff0c;但因为大部分功能还能正常使用&#xff0c;只是在 apt 时报错&#xff0c;所以一直逃避不想重装&#xff0c;直到最近 12 月新的开始&#xff0c;恰好设置的界面打不开得重装 gnome &#xff0c;所以下定决心重装…