您现在的位置是:首页 >技术交流 >Git使用各种情况场景记录网站首页技术交流

Git使用各种情况场景记录

123无敌,就你了 2024-06-30 12:01:02
简介Git使用各种情况场景记录

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

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,不关联远程分支

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 

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                            //再更新一次(其实也可以不用,第二步命令做过了其实)

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。

17、git pull 和 git pull --rebase 区别:

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

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

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

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
    
        该命令将显示两个分支之间的提交数。

24、git 本地分支 改名:

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

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

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

    
    2、在 gitee 或 git 上查看,分支后面是否显示 受保护 标识,有的就是不能上传。没有就是可以直接上传 push 。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。