• Git超详细教程



    一、安装并配置Git

    查看所有的全局配置项

    git config --list --global
    
    • 1

    查看指定的全局配置项

    git config user.name
    git config user.email
    
    • 1
    • 2

    配置用户信息

    git config --global user.name "xiaoming"
    git config --global user.email "123@qq.com"
    
    • 1
    • 2

    如果使用了–global选项,那么命令只需要运行一次,即可永久生效。

    获取帮助信息

    #要想打开git config命令的帮助手册
    git help config
    #要想获取git config命令的快速参考
    git config -h
    
    • 1
    • 2
    • 3
    • 4

    二、Git的基本操作

    Git的基本操作

    #初始化仓库
    git init
    
    # 检查文件的状态
    git status
    
    # 以精简的方式显示文件状态
    git status -s
    # 或
    git status --short
    
    # 跟踪新文件
    # 跟踪index.html
    git add index.html
    # 跟踪所有文件
    git add .
    
    #git add .出现warning警告信息
    git config core.autocrlf false
    
    # 提交更新
    git commit
    # 提交更新,-m选项后面是本次提交内容的描述
    git commit -m "v1.0.0"
    #此时会出现 nothing to commit,working tree clean.
    
    # 清空窗口
    clear
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    如果修改了文件,然后执行git status会出现红色的modified:index.html,表示已修改的状态,但是还没有放到暂存区。

    如果执行git status -s,会出现红色的 M index.html,表示已修改的状态,但是还没有放到暂存区。

    # 撤销对文件的修改
    git checkout --index.html
    
    • 1
    • 2

    修改的文件显示的是红色的M,还没有放到暂存区显示的是红色的??

     # 取消暂存的文件
        git reset HEAD 要移除的文件名称
    
        # git跳过暂存区,直接进行提交
        git commit -a -m “描述信息”
    
        # Git仓库和工作区都移除文件
        git rm -f index.html
        # Git仓库移除文件
        git rm --cached index.html
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    .gitignore文件的例子

    # 忽略所有的.a文件
    *.a
    
    #跟踪所有的 lib.a,即便在前面忽略了 .a文件
    !lib.a
    
    #只忽略当前目录下的T0D0文件,而不忽略shbdir/T0D0
    /T0D0
    
    #忽略任何目录下名为build的文件夹
    build/
    
    #忽略doc/notes.txt,但不忽略doc/server/arch.txt
    doc/*.txt
    
    #忽略doc/目录及所有子目录下的.pdf文件
    doc/**/*.pdf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    查看提交历史

     # 按照时间先后顺序列出所有的提交历史,最近的提交排在最上面
        git log
        
        #只展示最新的两条提交历史,数字可以按需进行填写
        git log -2
        
        #在一行上展示最近两条提交历史的信息
        git log -2 --pretty=oneline
        
        #在一行上展示最近两条提交历史的信息,并自定义输出的格式
        # %h提交的简写哈希值,%an作者名字,%ar作者修订日期,按多久以前的方式显示,%s提交说明
        git log -2 --pretty==format:"%h | %an | %ar | %s"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    回退到指定的版本

       # 在一行上展示所有的提交历史
        git log --pretty=oneline
        
        #使用 git reset --hard命令,根据指定的提交ID回退到指定版本
        git reset --hard<CommitID>
        
        #在旧版本中使用git reflog --pretty==oneline命令,查看命令操作的历史
        git reflog --pretty=oneline
        
        #再次根据最新的提交ID,跳转到最新的版本
        git reset --hard<CommitID>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    三、Github/GitLab/Gitee

    HTTPS:零配置,但是每次访问仓库时,需要重复输入账号和密码才能访问成功;

    SSH:需要进行额外的配置,但是配置成功后,每次访问仓库时,不需要重复输入账号和密码。

     #将本地仓库和远程仓库进行关联,并把远程仓库命名为origin
        git remote add origin 地址
        
        #案例
        git remote add origin ssh://git@192.168.1.209:8222/yuxiao/tool.git
        
        #将本地仓库中的内容推送到远程的origin仓库中(第一次)
        git push -u origin master
        
        #第二次以上
        git push
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    检测SSH key是否配置成功

    ssh -T git@github.com

    #将远程仓库克隆到本地
    git clone 远程仓库的地址
    
    • 1
    • 2

    四、分支

    master主分支

    在初始化本地Git仓库时,Git默认已经帮我们创建了一个名字为master的分支。通常我们把这个master分支叫做主分支。

    在实际工作中,master主分支的作用是:用来保存和记录整个项目已完成的功能代码。

    因此,不允许程序员直接在master分支上修改代码,因为风险大,容易导致整个项目崩溃。

    # 查看分支列表(查看当前属于哪个分支)
    git branch
    
    # 创建新分支
    git branch 分支名称
    
    • 1
    • 2
    • 3
    • 4
    • 5

    新分支的代码和当前分支代码一样

    # 切换分支
    git checkout login
    
    # 分支的快速创建和切换
    git checkout -b 分支名称
    #(创建上述的分支,要使用master分支进行操作,这是约定)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    合并分支

    # 切换到master主分支
    git checkout master
    
    # 在master分支上运行git merge命令,将logo分支的代码合并到master分支
    git merge logo
    
    # 删除分支
    git branch -d 分支名称
    
    #如果分支没有合并到master,需要强制删除分支
    git branch -D 分支名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    遇到冲突时的分支合并

    如果在两个不同的分支中,对同一个文件进行了不同的修改,Git就没法干净的合并他们,此时,我们需要打开这些分支冲突的文件,然后手动解决冲突。

    # 假设:在reg分支合并到master分支期间,代码发生了冲突
    git checkout master
    git merge reg
    
    #打开包含冲突的文件,手动解决冲突后,再执行如下的命令
    git add .
    git commit -m "解决了分支合并冲突的问题"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    将本地分支推送到远程仓库 (重要)

      # -u表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带-u参数
        git push -u 远程仓库的别名 本地分支名称:远程分支名称
        
        #案例
        git push -u origin payment:pay
        
        #如果希望远程分支的名称和本地分支的名称保持一致,可以对命令进行简化:
        git push -u origin payment
    
    
    
        # 查看远程仓库中所有的分支列表
        git remote show 远程仓库名称
        
        #例如
        git remote show origin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    跟踪分支

    # 从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程分支名称相同
    git checkout 远程仓库分支
    
    #示例
    git checkout qd
    
    #从远程仓库中,把对应的远程仓库下载到本地仓库,并把下载的本地分支进行重命名
    git checkout -b 本地分支名称 远程仓库名称/远程分支名称
    
    #示例
    git checkout -b reg origin/qd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    拉取远程分支最新代码

      # 从远程仓库,拉取当前分支最新的代码,保持当前分支的代码和远程分支代码一致
        git pull
    
    • 1
    • 2

    删除远程分支

      # 删除远程仓库中,指定名称的远程分支
        git push 远程仓库名称 --delete 远程分支名称
        
        # 示例
        git push origin --delete qd
    
    • 1
    • 2
    • 3
    • 4
    • 5

    清空远程仓库

    git init
    git remote add origin 远程地址
    #对于error: failed to push some refsto‘远程仓库地址’
    #1 使用如下命令(执行 git pull --rebase 的时候必须保持本地目录干净)
    git pull --rebase origin master
    
    #我们需要使用以下命令清空Git仓库的内容:
    git rm -r *
    #接下来,我们需要使用以下命令创建一个空的提交记录:
    git commit --allow-empty -m "删除所有内容"
    
    touch README.md
    git add .
    git commit -m "删除所有文件"
    git push origin master
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    创建第一个 Cypress 应用后使用命令行 npx Cypress open 报错的原因分析
    Django ORM 事务和查询优化
    vue 非父子通信 拓展 -- provide inject 跨层级共享数据
    设计模式-Strategy模式(策略模式)
    软测+Linux+MySQL+操作系统+Python+数据结构+计算机网络网络+C/C++(持更)
    路由传参相应面试题
    老年人Theta-Gamma跨频率耦合与工作记忆表现的纵向关系研究
    debian安装MySQL
    map-reduce执行过程
    Java项目:ssm学生综合素质评价系统
  • 原文地址:https://blog.csdn.net/qq_40670171/article/details/132804953