• https://www.cnblogs.com/best/p/7474442.html
  • https://gitee.com/progit/

1. 拉取远程分支到本地分支

  1. 将远程主机的最新内容拉到本地

    git fetch origin
    
  2. 本例子是拉取远程分支BBB到本地新分支AAA,并切换到本地分支AAA。

    git checkout -b AAA origin/BBB
    

    这时候就会切换到本地分支AAA,这时拉取的代码并不是远程分支BBB的最新代码,还需要pull一下。
    前提:在本地AAA分支

    git pull --rebase
    

    如果希望在本地创建BBB分支并联系到远程BBB分支。
    前提:本地没有BBB分支

    git checkout --track BBB
    

    从远程分支 checkout 出来的本地分支,称为_跟踪分支(tracking branch)_。跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在这些分支里运行git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。

    $ git pull --rebase
    git pull的默认行为是git fetch + git merge
    git pull --rebase则是git fetch + git rebase.
    $ git fetch
    从远程获取最新版本到本地,不会自动合并分支
    $ git rebase
    git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。
    $ git pull --rebase
    git pull --rebase执行过程中会将本地当前分支里的每个提交(commit)取消掉,然后把将本地当前分支更新为最新的"origin"分支
    来源:https://www.cnblogs.com/chenjunjie12321/p/6876220.html

  3. 在本地已有的分支中拉取远程分支BBB的代码
    前提:已进入到本地需要拉取的分支中

    git pull origin BBB --rebase
    

2. 切换和查看分支

  1. 查看本地分支,其中带有“*”的是当前分支

    git branch 
    
  2. 查看本地和远程所有分支

    git branch  -a
    
  3. 切换本地分支
    切换到本地分支BBB

    git checkout BBB
    
  4. 查看远程分支

     git branch -r
    

3. 提交本地分支代码到远程分支

分支过多时,并不会全部显示,使用回车是查看下一个分支,使用q表示退出。

  1. 查看本地需要提交的代码

    git status
    

    红色的文件,就是要提交的代码
    在这里插入图片描述

  2. 将文件提交暂存区
    可以将.替换为具体的文件(路径和名称)

    git add .
    
  3. 将文件提交到本地库

    git commit -m '需要填写的信息'
    
  4. 如果是多人开发,需要进行

    git pull --rebase
    
  5. 查看是否有冲突

    git status
    
  6. 提交本地分支代码到远程分支
    AAA是本地分支,BBB是远程分支

    git push origin AAA:BBB
    

4. 放弃本地修改的代码

分为三种情况:

  1. 未使用 git add 缓存代码时
    放弃本地某个文件的代码时:

     git checkout -- filepathname 
    

    放弃本地所有代码,注意下边的"."

    git checkout .  
    
  2. 使用git add缓存代码,未使用git commit

    放弃某一个文件

    git reset HEAD filename
    

    放弃所有文件,注意下边的"."

    git reset HEAD . 
    
  3. 已经用 git commit 提交了代码,还没有push。

    git reset HEAD~ 
    
  4. 同时放弃本地修改过的文件和 git add 过的文件

    #放弃全部
    git checkout HEAD .
    #或者放弃某个文件
    git checkout HEAD <file>
    

5. 忽略某些文件,不提交

https://blog.csdn.net/vichie2008/article/details/45577971
https://jingyan.baidu.com/article/29697b9106e552ab21de3c78.html

  1. 解决.gitignore无法忽略的文件以及自身被忽略的方法

    git update-index --assume-unchanged PATH/FILE 
    
  2. 恢复被忽略的文件

    git update-index --no-assume-unchanged PATH/FILE 
    

6.查看本地分支跟踪的远程分支

git branch -vv

7.解决git pull --rebase时文件冲突

[1]. 默认使用 git pull --rebase 拉取代码

git config --global --add pull.rebase true

[2]. 可能使用到的命令

  • git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;

  • git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);

  • git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。

[3]. 少量冲突的解决步骤

  1. 使用git pull --rebase后,会拉取远程代码,如果远程文件与本地文件有冲突,分支名会出现REBASE 1/1

    (feature/teaching-referm) =》(feature/teaching-referm|REBASE 1/1)
    
  2. 使用git status 查看文件状态,可以看到“未合并的文件”
    在这里插入图片描述

  3. 找到使用编辑器打开冲突文件,根据需要进行删除代码,其中的<<<HEAD和======和>>>>>也要删除

    <<<<<<< HEAD
    当前git所在分支的代码
    ============
    要合并分支的代码
    >>>>>>>> 39645e0443a07957dae
    
  4. 修改完冲突文件使用如下命令,分支名从(feature/teaching-referm|REBASE 1/1)变为(feature/teaching-referm)

    注意:使用git add . 有时候并不能将修改后的文件进行添加,需要 git add 具体文件路径和名称。

    git add .
    
  5. 解决完冲突并合并到分支上

    git rebase --continue
    
  6. 冲突解决完成,可以进行将代码提交到远程等操作

[4]. 次分支和主分支合并冲突

  1. 在次分支中拉去主分支的代码

    git pull 主分支名 --rebase
    
  2. 根据上边[1]和[2]解决冲突并提交

  3. 如果提交不上,需要强制提交

    git push --force-with-lease origin 本地分支:远程分支
    

8.拉取代码前将修改的代码存储

在一个分支上存储的代码可以在另一个分支上使用。

  1. 存储已修改的代码

    git stash
    
  2. 拉取远程代码

    git pull --rebase
    
  3. 回复原来修改的代码

    git stash pop
    #等同于下边两个动作
    #git stash apply
    #git stash drop
    
  4. 查看存储列表

    git stash list
    
  5. 如果村里列表有3个已经存储的代码需要 ,现在需要使用第二个存储的代码
    在这里插入图片描述

    git stash apply stash@{1}
    
  6. 取消存储
    在进行了一些其他的修改后,又要取消之前所应用储藏的修改。

    git stash show -p stash@{0} | git apply -R
    

9. 基于某个分支新建一个分支

  1. 获取远程库中最新的数据

    git fetch
    
  2. 创建分支

    • 方式一:基于远程分支BBB创建自己的分支AAA,成功后会自动切换到AAA分支

      git checkout -b AAA origin/BBB
      
    • 方式二 :以本地分支BBB为基础,创建分支AAA

      git checkout BBB  #切换到本地的BBB分支
      git checkout -b AAA    #创建并切换到AAA 
      
  3. 写好代码后,可以推送自己的分支AAA到远程库

    git push origin AAA:AAA
    

10.删除远程分支

git push origin --delete [branch_name]

11. 更安全的强推代码到远程仓库

将本地分支AAA的代码强制推送到远程分支AAA上

git push --force-with-lease origin AAA:AAA

12. 删除远程分支的某个文件

删除远程分支的文件或文件夹:https://blog.csdn.net/sunbinkang/article/details/104901064

  1. 在本地找到要删除的远程分支的文件,将其放置到其他地方(如果本地也不需要,则直接删除)

  2. 将本次删除暂存区的改动提交

    git commit -m 'xxx'
    
  3. 提交到远程分支

    git push  origin 本地分支名:远程分支名
    

13. 分支拉取错误造成冲突

当需要拉取A分支,却拉成了B分支,可以使用以下方法回退。

  • 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;

    git rebase --abort
    
  • 重新拉取代码

    git pull origin 远程分支名 --rebase
    

14.合并两个分支

  • 分支hotfix是基于master创建的分支,在hotfix修改完相应的BUG后,需要合并到master分支
  1. 切换到master上

    git checkout master
    
  2. 将hotfix合并到master上

    git merge hotfix
    
  • 如果分支hotfix需要master在创建hotfix分支之后更新的内容,可以直接在hotfix分支上进行merge
    git merge master
    

15. 查看自己的git操作

引用日志信息只存在于本地——这是一个记录你在你自己的仓库里做过什么的日志。

  • 查看引用信息

    git reflog
    

    在这里插入图片描述

  • 查看第五次具体做了什么

    git show HEAD@{5}
    

16. 将文件从暂存区中移除

只从git仓库中移除文件,使git不再跟踪文件

git rm --cached [fileName]

17. 查看远程仓库信息

  1. 查看所有的远程仓库(运行结果中只有一个远程仓库origin)
    git remote
    
    在这里插入图片描述
  2. 看某个远程仓库的详细信息
     git remote show [remote-name]
    
    分支feature/fixbug 是基于develop创建的 (git checkout -b feature/fixbug origin/develop),分支feature/fixbug推从到远程的feature/fixbug (git push origin feature/fixbug:feature/fixbug)
    在这里插入图片描述

18. 回退到上一次git 操作

回退到上一次git 操作

git reset --hard HEAD^

回退到某一次操作:先使用git log查看,找到某一个commit生成的SHA-1,然后使用命令

git reset --hard SHA-1的值

19. git 忽略 eslint 的校验

git commit --no-verify -m "commit"
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐