zoukankan      html  css  js  c++  java
  • git知识讲解

    git初始化

    1.设置名字和邮箱

     git config --global user.name "zhangsan"
     git config --global user.email "zhangsan@gmail.com"
    
    执行完以后,Linux在家目录下就会产生一个.gitconfig隐藏文件,windows点击开始-->个人文件夹(自己电脑的名字)
    cat ~/.gitconfig
    [user]
            email = zhangsan@gmail.com
            name = zhangsan
    
    另外执行以下命令查看配置信息:
    git config --list
    

    2.获得git仓库
    方法一:克隆一个仓库

    cd  /home/guest/project   //自己的工作空间
    git clone https://github.com/xxx
    

    方法二:初始化一个新的仓库

    cd /home/guest/project
    git init
    输出:Initialized empty Git repository in /home/guest/project/.git/
    
    ls -al 发现 有.git文件夹 
    .git
    

    3.生成公钥

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    4.生成公钥,配置到github


    git基本操作

    1.查看状态

    git status
    

    2.比较修改或者提交的内容

    //比较本地工作空间和缓存中的差异
    git diff
    
    //比较缓存中和上次提交的差异
    git diff --cahced
    按q退出
    

    3.添加新创建或修改的文件到本地的缓存区

    git add *
    
    说明:
    新建文件,在没有被添加缓存中时,状态为untracked
    
    git rm 
    删除文件,自动将已删除的文件信息加入缓存,git commit 后自动将本地仓库中的文件删除
    

    4.提交代码到本地代码仓库

    git commit -m "xxx"
    
    说明:
        -m 添加本次修改的注释    
        -a 参数将所有没有加到缓存区的修改也一起提交,但 -a 命令不会添加新建的文件
    

    5.将本地仓库关联到远端仓库关联

    git remote add 主机名  远端仓库地址
    
    示例:
    git remote add origin https://github.com/xxx/xxx.git
    
    说明:
        git remote add 命令用于添加远程主机,origin 是主机名  https://xxx 是远端仓库地址
    

    6.将本地代码库同步到远端代码库

    git push origin master
    
    说明:
         origin :主机名   master:分支名
    
    问题记录:
    提交会提示输入用户名和密码,解决办法:生成公钥,将公钥粘贴到远端仓库的SSH中。
    

    5.创建新的分支

    git branch xxx
    
    查看当前分支列表
    git branch
    
    拉取远端所有的分支到本地
    git fetch --all
    

    6.切换分支

    git checkout xxx
    

    7.分支代码合并

    两个分支:master、Dev,将Dev分支的代码合入到master分支。
    具体操作如下:
    
    git checkout master         //先切换到master分支
    git merge -m "xxx合并的提交信息xxx" Dev         //将Dev分支代码合并到master分支,如果两个分支修改了不同的文件,则合并不会产生冲突,否则会有冲突。
    
    解决冲突:
    (1.)查看状态: git status   错误:both modified
    (2.)查看冲突文件:git diff 或者 cat xxx 
    (3.)手动解决冲突: vi xxx  找到冲突的地方<<<< ==== >>>>的地方,手动解决冲突,删除不需要的代码。 
    
    

    8.删除分支

    git branch -d 分支名
    git branch –D 分支名       //强制删除某个分支
    

    9.撤销合并,放弃当前修改

    git reset --hard HEAD^
    

    10.git日志

    git log //查看所有的提交记录
         --stat 选项会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内
    
    格式化显示:
    git log --pretty=oneline
    git log --pretty=short
    git log --graph --pretty=oneline   //显示提交图
     git log --pretty=format:'%h : %s' --topo-order --graph       //显示提交拓扑图
    

    11.查看两个分支之间的差异

    方法一:
    git diff master  dev     //查看master分支与dev分支之间的差异
    
        --stat 参数可以统计一下有哪些文件被改动,有多少行被改动
    
    方法二:
    git checkout master     //切换到master分支     
    git diff dev           //比较和dev分支的差异
    git diff dev file1          //比较和dev分支中的某个文件的差异
    

    12.克隆分支,

    场景一:一个用户,两个工作空间
    (1.)从xxxproject中克隆一份到myrepo中
    cd /tmp
    git clone  /home/guest/xxxproject   myrepo
          
    (2.)修改并提交 myrepo中的文件
    git add  +  git commit 
    
    (3.)xxxproject中想拉去myrepo中的修改
    git  pull /tmp/myrepo master           //myrepo 的主分支合并到了 xxxproject 的分支里
    
    或者:
    git remote add myrepo /tmp/myrepo   //将myrepo添加为自己的远端分支
    git fetch myrepo
    git merge myrepo/master
    
    
    场景二:xxxproject中文件修改并提交,myrepo需要拉取,直接git pull即可。
    因为 myrepo 是从 xxxproject 仓库克隆的,那么他就不需要指定 gitproject 仓库的地 址。
    因为 Git 把 xxxproject 仓库的地址存储到 myrepo 的配置文件中,这个地址就是在 git pull 时默认使用的远程仓库:
    git config --get remote.origin.url   //查看远端仓库地址
    

    13.git标签

    //创建标签
    git tag 标签名  提交ID     //commitID可通过git log查看
        -s 参数来创建“签名的标签”
    
    //创建签名标签,让标签更可信
    git config (--global) user.signingkey <gpg-key-id>
    git tag -s stable-1 1b2e1d63ff
    
    git tag -u <gpg-key-id> stable-1 1b2e1d63ff    //配置文件中没有gpg-key 可使用-u 手动指定
    
    //查看已经创建的标签
    git tag
    
    1. gitignore
      若把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交,这样就不会出现忽略的文件了。git清除本地缓存命令如下:
    git rm -r --cached .
    git add .
    git commit -m 'message'
    

    15.关于代码提交规范
    https://blog.csdn.net/zl1zl2zl3/article/details/103870683

    总结

    git config:配置相关信息
    git clone:复制仓库
    git init:初始化仓库
    git add:添加更新内容到索引中
    git diff:比较内容
    git status:获取当前项目状况
    git commit:提交
    git branch:分支相关
    git checkout:切换分支
    git merge:合并分支
    git reset:恢复版本
    git log:查看日志
    

    ----------------------------------【喜欢打赏】-------------------------------------------

    小主,辛苦啦!文章棒棒哒,赏杯咖啡吧...
    打赏

    ----------------------------------【喜欢打赏】-------------------------------------------

  • 相关阅读:
    九项重要的职业规划提示
    Java程序员应该掌握的十项技术
    把QQ炫铃变为本机系统提示音
    maven 安装jar到库中
    Java程序连接各种数据库的方法
    J2EE体系架构概述
    一个完整的项目管理流程(适合软件开发)
    JavaScript函数调用时的作用域链和调用对象是如何形成的及与闭包的关系
    iframe自适应及offsetHeight/Width+scrollHeight/Width区别
    JavaBean的绑定属性及约束属性[转]
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/10661431.html
Copyright © 2011-2022 走看看