zoukankan      html  css  js  c++  java
  • Git学习

     
    git init #初始化,产生./git文件夹

    git status # 查看当前文件状态信息

    git status list  # 查看stash 暂存排列状态 ,最新的stash暂存状态会排列在{0}的位置
    

     

    git add .         # 将所有文件暂存到版本库
    git add 文件名 #将指定文件暂存到版本库

    git commit -m '描述信息' #将暂存状态的文件提交到版本库的分支

    git log #查看提交记录

    git reset --hard   #直接回复版本命令
    

    出现bug后,命令的执行顺序

    git stash # 将修改内容暂存到某个区域,回复文件原内容
    

      

    #修复bug后
    git add .                         #将文件内容进行暂存
    git commit -m '描述信息' #将文件内容提交保存
    git stash pop                 #将之前编写内容从暂存区域挪回,可能会出现CONFILICT(content)冲突
    #出现冲突后需要手动进行修改编辑
    #在修改编辑完成之后需要重新提交保存
    git add. 
    git commit -m '描述信息'
    

      

    #CONFLICT(content)冲突
    

      

     创建分支并行开发和修复BUG

    commit master 分支内容
    git branch dev  #创建dev开发分支,dev拥有和master分支相同的内容
    git checkout dev #进入dev分支
    Dev 分支:
    开发未完成时master出现bug
    git add .
    git commit -m '开发未完成版本'
    Master分支:
    git checkout master
    git branch bug 
    git checkout bug #创建bug分支,并进入bug分支
    Bug分支:
    修复完成bug后
    git add .
    git commit -m '修复完成bug' 
    切换到master分支与其合并
    git checkout master
    Master分支:
    git merge bug #修复完成后的master内容
    Dev分支:
    git checkout dev  #切换到dev分支继续进行开发
    git add .
    git commit -m '开发完成' #开发完成进行提交
    Master分支:
    git checkout master #切换到master分支,与dev合并,增加开发后的内容
    git merge dev 
    

      远程repository

    公司:
        创建远程仓库
        编写代码
        git add .
        git commit ...
        git remote add orgin 仓库地址 
        git push origin master
    家:
        git clone 远程仓库地址  #将在公司编写的代码下载到家中电脑
        git add .
        git commit ...
        git remote add github 仓库地址
        git push github master 
    公司:
        git pull origin master
        git add .
        git commit ...
        git push origin master #如果这步忘记做了
    家:
        根据记忆继续编写代码
        git add .
        git commit...
        git push github master
    公司:
        git pull github master #这时可能会出现冲突,需要手动解决冲突
        #继续编写代码
        git add .
        git commit ...
        git push origin master
            
    

      git pull origin master 可以写为:

        git fetch origin master

        git merge origin/master    <=>    git rebase origin/master 为了区分,git会在分支master前加上链接别名

     

    合作开发

    collaborator:

    Orginazation

    创建程序:

      用户A创建程序,提交到GitHub

      用户B克隆项目

      用户C克隆项目

    开发功能:

      用户A开发功能1

      用户B开发功能2

      用户C开发功能3

    提交

      用户A提交功能1,并push

      用户B提交功能2,无法Push,因为已经有用户A提交过了代码,需要将Github上获取最新代码与本地代码进行合并再进行提交

      用户C与用户B情况一样

    合并的方式有两种,前者版本记录会出现合并,后者可以保证版本记录干净整洁:

      git pull origin master 然后 git push origin master

    用户A:
        file
        git add .
        git commit -m '功能4'
        git push origin master
    用户B:
        file
        git add .
        git commit -m '功能5'
        git push origin master # 报错,因为GitHub中已经有人提交新代码
        git pull origin master
        git push origin master
    

      git fetch origin master 然后 git merge origin/master 再 git push orgin master

    用户A:
        file
        git add .
        git commit -m '功能4'
        git push origin master
     
    用户B:
        file
        git add .
        git commit -m '功能5'
        git push origin master # 报错,因为GitHub中已经有人提交新代码
        git fetch origin master
        git rebase origin/master
        git push origin master   
    

     贡献代码

    找到想要编写的项目,fork一下,之后这个项目就会在自己仓库出现

    从自己仓库获取代码并进行编辑

    创建一个pull request,等待作者是否同意,作者同意之后源代码就会出现贡献者提交的功能

     配置文件

    系统配置:/private/etc/gitconfig

    用户配置:~/.gitconfig  全局配置文件

    项目配置:.git/config

    用户凭证

    使用SSH减少频繁输入用户密码的情况

    ssh-keygen -t rsa命令来创建密钥,将id_rsa.pub公钥的内容拷贝到Github下设置中的SSH KEY中

    如果出现Key already in use的情况:

      删掉原来的SSH密钥   cd ~/.ssh

                rm id_rsa id_rsa.pub

      重新生成密钥    ssh-keygen.exe

             cat id_rsa.pub

     忽略文件

    在.git/文件夹下创建.gitignore文件,在其中编写的文件名就是git忽略的文件类型

    test/[abc].py				
    [abc]					
    test/*
    !test/a.py					
    .idea/*
    *.pyc
    *.excel
    

      

  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/c491873412/p/7544034.html
Copyright © 2011-2022 走看看