工作中常用的Git命令整理_工作中常用git命令-程序员宅基地

技术标签: 版本控制  java  git  后端  

背景

码农10年,git命令还是经常使用的,这里整理下常用的git命令,用于新人上手。

常用git命令一览:

  1. 从远端拉一个分支:
git checkout -b accuse origin/accuse
git push origin HEAD -u 【将新建分支推送到远端服务器】
  1. 从当前分支拉一个分支:
git checkout -b accuse
  1. 创建分支
  git checkout -b new_branch  
     注意,new_branch的代码来自于当前分支
  1. 切换分支
 git checkout another_bra
  和创建分支就差-b参数

5.合并本地分支

 git merge b  
 假设当前分支为dev,上面的命令就是将本地的b分支代码合并到当前分支dev中

6.合并远程分支,和前面的几乎一样,这个比较常用,适合直接合并,不需要再拉一下远端分支。

  git merge origin/b  
 远程分支b被合并到本地当前分支dev中了。

7.git pull / push 使用法

  git pull --rebase【 用 rebase 尽量减少多余的 merge commit】
    rebase 冲突了, 又不喜欢一步一步的 git rebase 怎么办?
    git rebase  --abort  放弃本次的git pull --rebase
    git reset --hard HEAD  自从最近的一次提交以来在working directory中的任何改变都被丢弃,并把HEAD指向最近的一次提交
    git pull 
    git status

 git push 使用方法:
   git push [远程仓库名] [分支名]
  例如:git push origin master

8.Git Stash使用方法:用于分支切换时,保存暂时的修改, git神器之一

  git stash: 
       备份当前的工作区的内容,从最近的一次提交中读取相关内容,
       让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
  git stash pop: 
       从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。
       由于可能存在多个Stash的内容,所以用栈来管理,
       pop会从最近的一个stash中读取内容并恢复。

   git stash list: 
        显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
        使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来

    git stash clear: 
         清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

8.删除本地分支,

       git checkout b  
        git branch -D a
  首先切换到别的分支,然后才能删除某个分支

9.删除远程分支

   git push origin --delete branch_name 
   或者 
   git push origin :branch_name   例如:  git push origin :feature/log_repair

10.撤销对一个文件的修改【该文件尚未提交】

  git checkout -- filepath/filename
    撤销对所有文件的修改 git chenkout .

11.查看提交日志

   git  log
  1. 撤销commit的提交,放弃所有改动,不小心合并冲突出错啦,撤销Merge操作,都可以用此命令
   git reset --hard HEAD^ 【--hard 表示放弃所有本地改动】
   【HEAD是指向最新的提交,上一次提交是HEAD^,上上次是HEAD^^,也可以写成HEAD~2 ,依次类推】
    会清空工作区所有的文件修改,慎重使用!!
   
   注:回退到指定的版本 git reset --hard <哈希值>

13.撤销commit的提交,保存已有改动【建议使用】

  git reset --soft HEAD^
 index和working directory中的内容不作任何改变,仅仅把HEAD指向要变更的版本。
   这个模式的效果是,执行完毕后,自从<commit>提交的版本以来的所有改变都会显示在git status的"Changes to be committed"中。 

14.恢复 git reset -hard 的误操作

git reflog
   git  reset --hard  版本号
 注意:虽然可以恢复至提交版本所在位置,但是,未提交的、暂存区,工作目录,都消失了

15.新建仓库【将本地初始化的工程推到远端的仓库】

cd 工作目录
git init
git remote add [name] [url]
//例子: git remote add origin【远端仓库别名一般为origin】 [email protected]:flightqmd/flight_sync_data.git 【远端仓库地址】
git add .
git ci -am "初始化"
git push origin HEAD -u

16.在项目根目录下添加.gitignore,这样不会什么文件都提交上去

开始行,结束行 不需要任何标记
<=====//不需要
# maven ignore
target/
# eclipse ignore
.settings/
.project
.classpath
# idea ignore
.idea/
*.ipr
*.iml
*.iws
# temp ignore
*.log
*.cache
*.diff
*.patch
*.tmp
# system ignore
.DS_Store
Thumbs.db
# package ignore (optional)
# *.jar
# *.war
# *.zip
# *.tar
# *.tar.gz

#maven project
catalina.base_IS_UNDEFINED/
*.orig
=====>//不需要

17.显示本地分支和服务器分支的映射关系 ,可以查看分支是否有远端分支映射

   git branch -vv

18…建立本地分支和服务器分支的映射关系

 git branch  --set-upstream-to=origin/<远端branch_name> <本地branch_name>
     输出结果:Branch h5_dev set up to track remote branch h5_dev from origin.  
  git branch --set-upstream-to=origin/feature/zero_coupon_0814 feature/zero_coupon_0814 

18.将远端分支拉到本地,并建立关联关系track:

   git checkout --track origin/jiangbo_dev

19.远程分支的删除与同步:

  删除命令:
          git push origin :branch_name  或者 git push origin --delete branch_name

20.重新定义分支 基准 线:

  git rebase -i master
 例子 : git:(feature/log_repair)  git rebase -i master
        当前分支为 feature/log_repair ,将分支的基线 设置为当前master 位置。
 解释:假设 feature/log_repair 分支是在 2017-06-01 从master 拉的分支 ,一直没有merge过master
            假设 2017年7月1日,执行git rebase -i master ,那么这个命令会自动merge master 这一个月的修改,并把基线设置为 当前master 的提交节点。[当然,这个命令会产生冲突]
注意:使用完该命令,会使本地分支跟远端分支,不一样,删除远端分支,将新分支推向远端

21.删除不存在对应远程分支的本地分支

  git remote show origin  查看远程分枝状态:
  执行  git remote prune origin 或者 git fetch -p 删除远程不存在的远程跟踪分支

22:删除远端合过master的分支

git branch -r --merged master | grep -vE 'HEAD|master|staging|qa|dev' | awk -F'origin/' '{print $2}' | xargs -I {} git push origin :{}  

23:删除本地合过master的分支

git branch --merged master | grep -vE 'HEAD|master|staging|qa|dev' | xargs git branch -d 
-d : 如果没有合并过master 会提醒
-D: 不提醒 直接删除

24: 远程仓库操作:
主要用户两个仓库之间分支、代码的合并。比如遇到部门仓库拆分,需求拆分。
查看远程仓库:

  git remote -v

添加远程仓库:
git remote add 远程仓库别名 远程仓库地址
例子:

  git remote add bm https://github.com/paulboone/ticgit

从远程仓库中获得数据
git fetch
例子:

   git fetch bm

合并远程仓库的分支到本地分支:

  git merge bm/feature/xxx

后续会持续补充好玩儿的命令~
待续…

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baoxue2008/article/details/106957496

智能推荐

DRF使用记录(二) -序列化器_validationerror(ordereddict([('drug', [errordetail-程序员宅基地

文章浏览阅读707次。drf使用记录(二) - 序列化器简述序列化:序列化器会把模型对象转换成字典,经过response以后变成json字符串反序列化:把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型即在客户端请求时,使用序列化器可以完成对数据的反序列化在服务器响应时,使用序列化器可以完成对数据的序列化序列化定义序列化器Django REST framework中..._validationerror(ordereddict([('drug', [errordetail(string='not a valid strin

python读取pickle,csv,excel文件速度大比拼_python读ecxel快还是读csv-程序员宅基地

文章浏览阅读2.7k次。进行数据处理时数据量一大,excel文件就力不从心。这次对三个文件格式的读取速度做大比拼。# -*- coding: UTF-8 -*-import timeimport pandas as pd"""csvexcelpkl速度大比拼"""start = time.clock()df = pd.read_pickle('table.pkl')elapsed = (tim..._python读ecxel快还是读csv

C语言排序算法演示:冒泡法_c语言测试冒泡算法在不同情况下的表现-程序员宅基地

文章浏览阅读8.8k次。C语言排序算法演示:冒泡法作者:Ackarlix 冒泡排序的算法分析与改进 交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。  应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 冒泡排序 1、排序方法  将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是_c语言测试冒泡算法在不同情况下的表现

机器学习算法整理(一)线性回归与梯度下降 python实现-程序员宅基地

文章浏览阅读104次。回归算法以下均为自己看视频做的笔记,自用,侵删!一、线性回归θ是bias(偏置项)线性回归算法代码实现# coding: utf-8​get_ipython().run_line_magic('matplotlib', 'inline')import matplotlib.pylab as pltimport numpy ...

N皇后:JAVA的递归实现(回溯法)_递归实现n皇后java-程序员宅基地

文章浏览阅读333次。题目所谓N皇后问题就是:将N位皇后放在一张NxN的棋盘上,使得每位皇后都无法吃掉别的皇后,(即任意两个皇后都不在同一条横线,竖线和斜线上),问一共有多少种摆法。实现及思路package 蓝桥;import java.util.Scanner;public class NQueen { static int count = 0;//解法计数 static int[][] a..._递归实现n皇后java

一次简单的PC游戏汉化-程序员宅基地

文章浏览阅读7.2k次。作者:leexuany(小宝)前言:同样的问题,一千个程序员有一千零一种解决办法。这直接导致了在游戏本地化的过程中,不会存在一个通用的方法。没有不能汉化的游戏,但你得自己想办法。正文:此次汉化的对象是《剑芒罗曼史2》PC日文版。一、修改图片首先是分析文件。浏览游戏安装目录,不难发现大量的mcg文件,这是游戏自己的一个256色压缩图片,因为已经有人做出了解图程序,那我就可以省点事了。

随便推点

curl详细用法_curl -i --basic -u-程序员宅基地

文章浏览阅读5.6k次,点赞2次,收藏4次。简介curl是一个和服务器交互信息(发送和获取信息)的命令行工具,支持DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET和TFTP等协议。curl支持代理、用户认证、FTP上传、HTTP POST..._curl -i --basic -u

Springboot使用RestTemplate发送Post请求postForEntity (application/x-www-form-urlencoded)_resttemplate postforentity-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏14次。Springboot使用RestTemplate发送Post请求postForEntity[application/x-www-form-urlencoded] 背景思路正文ServiceRestTemplate 使用 postForEntity 请求接口基于xml系列注解解析XML返回值XML的一些基本常识实体类与xml文件对应实体代码参考博客背景对接请求为(application/x-www-form-urlencoded),返回XML格式接口。思路ServiceRestTemplate 使用_resttemplate postforentity

【Windows】你没有权限打开该文件,请向文件的所有者或管理员申请权限-程序员宅基地

文章浏览阅读7.4k次。【Windows】你没有权限打开该文件,请向文件的所有者或管理员申请权限原文链接:https://yangman824.gitee.io/posts/windows/问题:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lZMpSi7B-1640160600075)(C:\Users\Sonder\AppData\Roaming\Typora\typora-user-images\image-20211220175325122.png)]解决方法:右键–属性–安全–编

用着超爽的stm32的串口DMA+空闲中断接收和发送方案_串口发送中断和空闲中断同时使能-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏18次。串口一次只能传1byte数据,在实际应用中,我们会发送和接收一串数据,如果没发送和接收一个数据就会进去中断会严重影响程序的正常执行,占用过多的cpu资源。如果串口模块能够自动判别一串数据的结束,并且把接收数据放在我们指定的ram,发送数据直接扔到ram不用cpu操作,那该多省心!stm32的串口DMA+空闲中断接收和发送方案就能实现。我使用的是stm32f103芯片和freertos系统,串口程序已经长时间高效稳定运行在几万台设备上。我使用的是uart4。代码如下:初始化void UART4_Ini_串口发送中断和空闲中断同时使能

一文读懂逻辑信道、传输信道和物理信道-程序员宅基地

文章浏览阅读2.9k次,点赞4次,收藏18次。什么是信道?_逻辑信道

Source Insight 4.0 Sublime主题_sourceinsight4主题-程序员宅基地

文章浏览阅读1.4k次。Source Insight 4.0 Sublime主题_sourceinsight4主题

推荐文章

热门文章

相关标签