Git使用各种情况场景记录

news/2024/5/17 19:12:10 标签: git, github, linux, gitlab, gitee

文章目录

  • 4、Git使用各种情况场景记录:
    • 1、执行 "git fetch" 来获取远程仓库分支最新列表 到 本地仓库分支。
    • 3、设置邮箱地址:
    • 4、从特定远程分支dev获取:
    • 5、上传代码到特定远程分支dev:
    • 6、基于远程分支创建新分支:
    • 7、删除远程提交,使用 git reset 和 git revert 区别:
    • 8、查看本地分支对应的远程分支:
    • 10、避免每次都输入账户密码:
    • 11、这些是各种场合常见的 Git 命令:
    • 12、Git:git取消对某个文件的跟踪
    • 14、Git 强制覆盖更新:
    • 16、git 中 rebase 和 merge 区别 :
    • 17、git pull 和 git pull --rebase 区别:
    • 18、git 中 重置(reset) 和 回滚(revert) 区别:
    • 19、git cherry-pick 的作用:
    • 23、比较分支:
    • 24、git 本地分支 改名:
    • 25、git 受保护分支是什么意思?查看 git 分支 是否是受保护分支?

4、Git使用各种情况场景记录:

git_fetch____2">1、执行 “git fetch” 来获取远程仓库分支最新列表 到 本地仓库分支。

    git fetch   不会更新本地代码文件,它只会把远程仓库中最新的版本同步到本地仓库中,但不会覆盖本地仓库中的文件。
    
    git fetch

3、设置邮箱地址:

    git config --global user.email "xxxxxxxxx"

    git config --global user.name "xxxxxxx"

4、从特定远程分支dev获取:

    git pull origin dev

5、上传代码到特定远程分支dev:

    git push --set-upstream origin dev

    git push origin [branch name]:[branch name] 或者 
    git push origin [branch name]

6、基于远程分支创建新分支:

    1、git checkout -b new origin/new        //基于远程分支new创建一个叫new的本地分支并切换到new分支,需要用下面两个命令之一推送分支到远程仓库。 //(推荐)  
        git push --set-upstream origin new      将新创建的new本地分支推送到远程,不然提交记录会提交到基于远程的那个分支上!!!
        或:
        git push -u origin new          将新创建的new本地分支推送到远程,不然提交记录会提交到基于远程的那个分支上!!!
        
    
    2、git checkout -b new --track origin/new    //基于远程分支new创建一个叫new的分支并切换到new分支         //(推荐)
    
    3、git pull origin new:new                   //基于远程分支new创建一个叫new的本地分支,不关联远程分支    //(可以用,但是不推荐) 

    4、git branch new origin/new                 //基于远程分支 new 创建一个叫 new 的本地分支,并关联到远程分支 new,但是不切换到本地分支 new
    
    5、git branch new --track origin/new         //基于远程分支 new 创建一个叫 new 的本地分支,并关联到远程分支 new,但是不切换到本地分支 new

    6、基于 本地分支 创建 本地分支:
        1、git checkout -b new	    //基于 当前分支 创建 本地分支 new 并切换到new分支
        
        2、git branch new            //基于 当前所在本地分支 创建 本地分支 new,不关联远程分支

git_reset__git_revert__69">7、删除远程提交,使用 git reset 和 git revert 区别:

    1、方法 1 git reset:
        
        1、git reset 命令分为两种: git reset –-soft 与 git reset –-hard ,区别是:
            –-soft 表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。
            –-hard 直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。
              
        2、方法 1:
            git reset --hard commit
            git push origin master -f
    
    
    2、方法 2 git revert: 
        1、方法 2:
            需要删除本地commit,并同步到服务器,使用git revert可以删除某一次提交,并为本次删除生成一个新的提交。也就是说不是把之前的提交记录抹去,在提交记录中还是能看到之前的提交,并且有一个新的revert提交,把之前的提交取消掉。   
        
            git revert <commitId>   
            git push origin master


    3、两个方法两者差别:
        reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
        revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;

8、查看本地分支对应的远程分支:

    git branch -vv                  查看本地所有分支对应的远程分支
    
    git status                      查看本地当前分支对应的远程分支

10、避免每次都输入账户密码:

    1、先cd到git的根目录(有 .git文件夹存在的目录),执行 git config --global credential.helper store 命令

        执行之后会在家目录 ~/.gitconfig 文件中多加红色字体项
            [user]  
                name = kn****  
                email = ************.com  
            [credential]  
                helper = store
                
    2、cd到项目目录,执行git pull命令,会提示输入账号密码。输完这一次以后就不再需要,并且会在家目录生成一个 ~/.git-credentials 文件。内容如下:
       xxxxxxxxxxxxxxxxxxx
    
    git config --global user.email "xxxxxxxxxxxxx、"

    git config --global user.name "xxxxxxxxxxxxxx"

11、这些是各种场合常见的 Git 命令:

    开始一个工作区(参见:git help tutorial)
       clone             克隆仓库到一个新目录
       init              创建一个空的 Git 仓库或重新初始化一个已存在的仓库

    在当前变更上工作(参见:git help everyday)
       add               添加文件内容至索引
       mv                移动或重命名一个文件、目录或符号链接
       restore           恢复工作区文件
       rm                从工作区和索引中删除文件
       sparse-checkout   初始化及修改稀疏检出

    检查历史和状态(参见:git help revisions)
       bisect            通过二分查找定位引入 bug 的提交
       diff              显示提交之间、提交和工作区之间等的差异
       grep              输出和模式匹配的行
       log               显示提交日志
       show              显示各种类型的对象
       status            显示工作区状态

    扩展、标记和调校您的历史记录:
       branch            列出、创建或删除分支
       commit            记录变更到仓库
       merge             合并两个或更多开发历史
       rebase            在另一个分支上重新应用提交
       reset             重置当前 HEAD 到指定状态
       switch            切换分支
       tag               创建、列出、删除或校验一个 GPG 签名的标签对象

    协同(参见:git help workflows)
       fetch             从另外一个仓库下载对象和引用
       pull              获取并整合另外的仓库或一个本地分支
       push              更新远程引用和相关的对象
        
        
        Existing branch name, tag, or commit SHA 

git_163">12、Git:git取消对某个文件的跟踪

    1、通过修改.gitignore忽视某个文件但是发现这个文件还是会被踪,只对没有被git commit 过的文件有效,也就是说如果你的文件被commit过后你再修改gitignore,这个时候gitignore对这个文件是无效的,这个时候就需要取消对某个文件的跟踪。


    2、取消对某个文件的跟踪步骤:

        1、git rm -r -n --cached 文件或目录,列出你需要取消跟踪的文件,可以查看列表,检查下是否有误操作导致一些不应该被取消的文件取消了,是为了再次确认的。-r 表示递归,-n 表示先不删除,只是列出文件。

            git rm -r -n --cached 文件或目录
       
       
       2、git rm -r --cached 文件,取消缓存不想要跟踪的文件。

            git rm -r --cached 文件
       
       
       3、修改根目录.gitignore 文件,添加你希望忽略的文件/目录。

14、Git 强制覆盖更新:

    1、本地 强制上传覆盖掉 远程仓库:
        提交错了或不想要这个提交,本地强制上传覆盖掉远程仓库。     
        
        方法 1:
            git config --local --list       // 查看本地仓库配置
             
            // 如果有本地与远程关联,保留(多仓库关联)或/不保留,看实际需要
            git remote remove origin        // 此处我选择不保留,即单仓库关联
              
            git remote add origin XXX.git   // 添加本地仓库与远程仓库关联
            
            git push -f --set-upstream origin master:master // 强制推送到远程仓库,且覆盖远程代码库
        
        
        方法 2:
            git push -f 远程仓库名  远程仓库分支
            git push -f origin master       //强制上传覆盖远程仓库



    2、远程 强制更新覆盖掉 本地仓库:  
        git fetch --all                     //拉取所有更新,不同步;
        git reset --hard origin/master      //master 本地代码同步线上master最新版本(会覆盖本地所有与远程仓库上同名的文件);
        git pull                            //再更新一次(其实也可以不用,第二步命令做过了其实)

git__rebase__merge___229">16、git 中 rebase 和 merge 区别 :

    1、git log的区别:
        merge 命令会保留merge的分支的commit历史记录。
        rebase 不会保留分支的历史记录。更加干净。

    2、处理冲突的方式:
        merge:
            原理:如果合并的时候遇到冲突,仅需要修改后重新commit,解决冲突后将自动创建一个新的commit。
            注意:只有在冲突的时候,解决完冲突才会自动产生一个commit。
            如果想在没有冲突的情况下也自动生成一个commit,记录此次合并就可以用:git merge --no-ff命令。
            如果不加 --no-ff 则被合并的分支之前的commit都会被抹去,只会保留一个解决冲突后的 merge commi。
            
            优点:合并保留了分支的完整历史记录,包括按时间顺序排列,记录了真实的commit情况,包括每个分支的详情。
            缺点:因为每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit比较频繁时,看到分支很杂乱。
            
            
           
            
        rebase:
            会合并之前的commit历史。(交互式)使用rebase命令合并分支,解决完冲突,不会产生额外的commit。
            
            优点:得到更简洁的项目历史,去掉了merge commit。分支上不会有无意义的解决分支的commit;
            缺点:如果合并的分支中存在多个commit,需要重复处理多次冲突。如果合并出现代码问题不容易定位,因为re-write了history。

git_pull__git_pull_rebase__260">17、git pull 和 git pull --rebase 区别:

    git pull:做了两个操作分别是‘获取’和合并。
    
    git pull rebase 就是以rebase的方式进行合并分支,默认为merge。       

git__reset__revert__272">18、git 中 重置(reset) 和 回滚(revert) 区别:

    git reset --hard commit_id       
    重置(reset):
        是将HEAD指针指向指定的提交。
    
    git revert --
    回滚(revert):
        是将指定的提交记录回退到某个历史版本。

git_cherrypick__286">19、git cherry-pick 的作用:

    1、功能:
        cherry-pick 是一种把某一次提交单独拿出来,应用到当前分支上的功能。
        git cherry-pick是本地特性,本地要有这个commit才可以被git cherry-pick。
    2、使用场景:
        主要是当某一次提交中有某些修改很重要时,但是又不想把之前的所有提交都应用到当前分支上时可以使用它。
        
    3、使用方法:
        1、命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最近的最新一次提交,转移到当前分支。
            $ git cherry-pick feature分支
            
        2、也支持一次转移多个提交。
            $ git cherry-pick <HashA> <HashB>

23、比较分支:

    1、比较两个分支的差异:
   
        git diff branch1..branch2
        
        其中,branch1和branch2是要比较的两个分支的名称。该命令将显示两个分支之间的所有不同之处。

    2、比较当前分支和另一个分支的差异:
    
        git diff HEAD..other_branch
    
        其中,other_branch是要比较的另一个分支的名称。该命令将显示当前分支和另一个分支之间的所有不同之处。

    3、比较两个分支的提交历史:
    
        git log branch1..branch2
    
        该命令将显示两个分支之间的所有提交历史,并显示哪些提交只存在于其中一个分支中。

    4、比较两个分支的提交数:
    
        git rev-list --count branch1..branch2
    
        该命令将显示两个分支之间的提交数。

git___332">24、git 本地分支 改名:

    git branch -m new_01 new            //本地分只 new_01 改名为 new

git__git___343">25、git 受保护分支是什么意思?查看 git 分支 是否是受保护分支?

    1、Git分支受保护意味着该分支的更改权限受到限制,只有特定的用户或团队才能进行更改。这通常用于保护重要的代码分支,防止误操作或不当更改。

    
    2、在 gitee 或 git 上查看,分支后面是否显示 受保护 标识,有的就是不能上传。没有就是可以直接上传 push 。

http://www.niftyadmin.cn/n/365308.html

相关文章

Python学习38:凯撒密码——解密

类型&#xff1a;字符串‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 描述‪‬‪…

Goby 漏洞更新 |中保無限Modem Configuration Interface 默认口令漏洞

漏洞名称&#xff1a;中保無限Modem Configuration Interface 默认口令漏洞 English Name&#xff1a;Gemtek Modem Configuration Interface Default password vulnerability CVSS core: 5.0 影响资产数&#xff1a;4521 漏洞描述&#xff1a; Modem Configuration Inter…

java开发学习框架

Java基础 1.1. Java简介与安装 1.2. Java基本语法 1.3. 数据类型与变量 1.4. 运算符与表达式 1.5. 流程控制&#xff08;分支与循环&#xff09; 1.6. 数组 面向对象编程 2.1. 类与对象 2.2. 继承与多态 2.3. 接口与抽象类 2.4. 封装与访问控制 2.5. 重载与覆盖 2.6. Java内存管…

普通人如何学好使用chatgpt

ChatGPT是一种强大的自然语言处理模型&#xff0c;可以为人们提供各种应用和服务。虽然它确定了具有革命性的技术&#xff0c;但对于普通人来说&#xff0c;学习使用ChatGPT可能会有一定的挑战。以下是一些技巧&#xff0c;帮助普通人高效地学习使用ChatGPT。 **1. 了解自然语…

【面试题】 ES6中将非数组转换为数组的三种方法

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 我们常常想使用数组的方法&#xff0c;比如forEach&#xff0c;filter&#xff0c;又或者so…

jvm 分析调优工具-学习笔记

jvm 分析调优工具 jps命令查看java进程pid jps 列出java进程名(不完整类名) 和pid jps -l 列出java进程名(完整类名) 和pid jmap命令查看java进程占用的jvm资源情况 jmap -histo pid 查看内存情况 jmap -heap pid 查看java程序的堆占用信息 jmap -dump 导出heap快照分析文件he…

notepad++查询指定内容并复制

背景说明 记录一下使用notepad进行文本内容查找以及替换的相关场景,简单记录方便后期查看,场景内容: 1.从指定的给出内容中筛选出所有的人员id集合 2.将每一行后面添加逗号 1.从指定的给出内容中筛选出所有的人员id集合 要求从指定的给出内容中筛选出所有的人员id集…

微软正在研究使 Linux 脚本更安全

导读据悉&#xff0c;微软正在研究使 Linux 脚本更安全 微软正在研究使 Linux 脚本更安全 在本周的 Linux 安全峰会上&#xff0c;systemd 的创建者 Lennart Poettering 发表了演讲&#xff0c;他在过去的一年中被微软雇佣&#xff0c;他和微软的其它工程师们正在努力提高 Lin…