首页 > 其他分享 >Git操作笔记

Git操作笔记

时间:2023-09-18 22:15:46浏览次数:36  
标签:Git -- 笔记 git 本地 commit 操作 远程 分支

Git操作笔记

基础应用

简单使用

创建仓库

# 1. 在git/gitee上创建远程仓库

# 2. 在本地创建仓库并连接远程仓库
mkdir snippets
cd snippets
git init 
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/Young_jam/snippets.git
git push -u origin "master"

# 2.5 或者连接本地已有仓库
cd existing_git_repo
git remote add origin https://gitee.com/Young_jam/snippets.git
git push -u origin "master"

常用命令

  1. git init 初始化新仓库

  2. git add [file/.] 添加[新文件/所有文件]到暂存

  3. git commit -m "xxx" 提交修改到本地版本库并附加提交信息

    1. git commit -F file 使用文件内容作为提交信息

    2. git commit --reuse-message <commit-id> 使用之前某次(由 commit-id 确定)提交的 message 作为本次提交的 message

      • -C <commit> 作用同上
    3. git commit --reedit-message=<commmit> 作用同上,但是调用编辑器允许修改提交信息

      • -c <commit> 作用同上
  4. git commit --amend 修改上次的提交信息

  5. git push 同步到远程仓库,默认推送本地分支到有跟踪关系(通常是同名)的远程分支

    1. git push [-f] origin a:b 将本地 a 分支的内容推送到远程 b 分支,如果 b 分支有不同的提交历史,需要使用 -f 选项强制覆盖
  6. git pull 同步远程仓库到本地

  7. git clone httpS://git.xxxx 复制远程仓库到本地

  8. git status 查看仓库信息

  9. git log [-N] 查看仓库提交日志

    • git log [-p] filename 查看单个文件的修改记录,-p 选项查看具体的修改内容

配置git

# 设置全局用户
git config --global user.name "xxxx"
git config --global user.email "xxxx@xxx"
# 设置git编辑器为vim
git config --global core.editor vim
# 设置git支持x显示中文路径
git config --global core.quotepath false
  1. 配置git push时免密码
    1. 本地主机创建ssh秘钥

      ssh-keygen -t rsa -C "[email protected]"
      
    2. 打开gitee的个人设置,在安全设置--ssh 公钥中添加id_rsa.pub中的内容

    3. 如果配置远程仓库时使用的https地址,则需要修改为ssh

      git remote -v  # 查看远程仓库地址,如果是https开头,则需要改为ssh
      git remote set-url origin [email protected]:yangjam_tm/coding.git
      

常用操作

  • git强制远程覆盖本地

    # 1. 拉取远程更新
    git fetch --all
    # 2. 撤销本地修改
    git reset --hard origin/master
    # 3. 同步远程仓库
    git pull origin master
    
  • 删除未跟踪的文件

    # 查看未跟踪文件
    git clean -n
    # 删除文件
    git clean -f
    
  • 取消跟踪文件

    git rm --cached readme1.txt    # 删除readme1.txt的跟踪,并保留在本地。
    git rm --f readme1.txt    # 删除readme1.txt的跟踪,并且删除本地文件
    
  • 本地 git 回退到指定版本

    # git log 查看特定版本的commit sha码
    git reset --hard [961ca2d2f45a28b962e293a10b11a8f7ab4e4777]
    
  • 撤销提交

    git reset --soft HEAD~1
    # 撤销最后一次commit,但是不撤销add操作
    
    git reset --mixed HEAD~1
    # 撤销最后一次commit及add操作,与git reset HEAD~1作用相同
    
  • 修改已经 push 到远程的 commit 信息

    # 本地同步到远程已经提交的版本
    git commit --amend -m "" # git commit --amend -F log.txt
    # 此时本地相当于回退到上一个版本然后重新进行了一次提交,如果直接push会存在冲突
    # 使用force将强制覆盖远程的那一次提交,需要确定那一次提交没有任何依赖
    git push --force
    

实用场景

  1. 我在本地主分支上修改了代码,但是不想提交到主分支,而是提交到一个新的远程分支

    # 1. 先创建一个新的本地分支
    git checkout -b new_branch
    # 2. 查看一下当前本地分支
    git branch
    > master
    > * new_branch # 表明新分支已经创建,且切换到了该分支上
    # 3. 在该分支上提交代码
    # 4. 将该分支推到远程
    git push origin new_branch:remote_new_branch
    
  2. 我要拉取远程的子分支到本地,然后将修改合并到主分支,然后删除子分支

    # 0. 查看所有分支
    git branch -a
    # 1. 拉取远程子分支到本地
    git fetch origin remote_new_branch:temp # 拉取remote_new_branch到本地并命名为temp
    # 2. 比较分支差异
    git diff temp
    # 3. 合并分支
    git merge temp # 如果存在冲突,需要处理冲突
    # 4. 删除本地分支和远程子分支
    git branch -D temp
    git push origin --delete remote_new_branch
    
  3. 将本地分支的内容推送到远程的两个不同分支

    # 1. 查看本地所处分支和所有远程分支
    git branch -a
    # 2. 修改当前分支内容
    # 3. 提交当前分支到远程对应分支
    git psush
    # 4. 切换到另一分支
    git checkout b
    # 5. 合并a分支的内容到b分支
    git merge a
    # 6. 将a分支提交到远程对应分支
    git push
    
  4. 将分支的某次修改同步到主干/另一分支

    git log  # 查看修改的commit-id
    git checkout xxxx  # 切换到需要同步修改的分支
    git cherry-pick commit-id  # 将修改合并到该分支
    # 如果存在冲突,需要解决冲突再commit
    git push
    

标签:Git,--,笔记,git,本地,commit,操作,远程,分支
From: https://www.cnblogs.com/reflux2yj/p/17713131.html

相关文章

  • CF1858E1 做题笔记
    题目链接赛时没做出来,晚上补了一下,发现是一种很好玩的数据结构。由于可以离线又要支持删除后$k$个又要支持撤销操作,不会写主席树只能选择操作树。对序列按照时间建成一颗操作树,处于某个点的回合时,这个序列的样子就是它以及它的祖先。来依次考虑某个操作,设当前是序列的末尾......
  • 关于`dial unix /var/run/docker.sock: connect: permission denied`的处理方法笔记
    之前遇到的一个问题,使用非root用户时操作docker提示无权限,在查阅了一些文章之后自己又摸索出了一些更方便的方法,顺手记录下来。一、问题发现根据报错信息dialunix/var/run/docker.sock:connect:permissiondenied,可以看出,是因为当前用户对docker使用的unixdomainsocket......
  • 工作中常用的一些git骚操作,一般人我不告诉他。
    一、git提交代码1gitpull从服务器上拉取代码2gitstatus查看文件的状态3gitadd.添加所有文件到暂存区4gitcommit-m"提交的描述信息"将索引内容添加到仓库中5gitpush代码提交到服务器二、git切换分支1gitbranch列出所有本地分支2gitbranc......
  • qemu源码分析(6)--Apple的学习笔记
    一,前言由于看到了类似的写法,都用到了object_dynamic_cast_assert函数,所以分析下。二,源码分析看到如下代码的写法,很眼熟CortexMBoardState*board=CORTEXM_BOARD_STATE(machine);machine的类型是MachineState*#defineCORTEXM_BOARD_STATE(obj)\OBJECT_CHECK(CortexMBoardSt......
  • 操作系统的启动
    看了清华大学的操作系统的启动,来总结一下。(1)CPU,I/O,内存通过总线连接。(2)DISK:存放OS;BIOS:基本I/O处理系统(basicI/Osystem);Bootloader:加载OS到内存中。(3)当电脑通电时,段寄存器CS和指令寄存器IP能够确定一个内存地址,例如CS:IP=0xf000:fff0.(4)POST(加电自检),寻找......
  • HTML笔记
    一、HTML基础1、网页文件、以.html或者.htm为后缀名的文件。2、网站网页的集合。3、HTML:超文本标记语言。纯文本(字符、数字、字母等)超文本:超越文本的限制、显示视频、音频、图片、动画等。超链接跳转功能。标记:打标记符号(字母、数字等组合),浏览器解析标记。4、工具的使用(1)插入HTML......
  • Linux 对隐藏文件的操作
    1、linux系统下隐藏文件(.xxx)的拷贝和删除操作2、拷贝操作:(1)一般文件操作:cp-rfxxx/*yyy/(2)隐藏文件操作:cp-efxxx/.yyy/(普通文件一并拷贝)3、删除操作(1)一般文件操作:rm-rfxxx/*(2)隐藏文件操作:rm-rfxxx/.* 4、演示截图,从src文件夹拷贝隐藏文件到dis......
  • Python学习笔记
    Python语言是一种解释性、面向对象、动态数据类型的高级程序设计语言创始人:吉多,荷兰人时间:1989编写的,1991公开发行Python语言特点开源、免费面向过程、面向对象、交互式编程面向过程:以事情或解决问题的过程为中心,主要考虑解决问题的思路和步骤面向对象:以事务为中心,主要考虑解决问......
  • 数论——欧几里得算法和扩展欧几里得算法 学习笔记
    数论——欧几里得算法和扩展欧几里得算法引入最大公约数最大公约数即为GreatestCommonDivisor,常缩写为gcd。一组整数的公约数,是指同时是这组数中每一个数的约数的数。\(\pm1\)是任意一组整数的公约数;一组整数的最大公约数,是指所有公约数里面最大的一个。最小公倍数最......
  • 微信小程序倒计时后功能操作
    实现倒计时功能可以使用定时器和setData方法来更新页面上的倒计时数据。这样,页面就会显示一个从60开始递减的倒计时。你可以根据自己的需求修改初始值和倒计时结束后的处理逻辑。在小程序页面的js文件中Page({data:{countDown:60//倒计时初始值},onLoad:functi......