• 不会点git真不行啊.


    基本使用:

    // 进入项目根目录,
    git init // 接管你的项目文件夹,
    
    git status // 查看状态. 绿色已接管,红色未管理
    
    git add . // 添加管理当前目录所有文件及子目录
    git add 1.py // 管理单个文件
    
    git commit -m '这是我创建的第一个版本'

    后续动作修改完代码后,再次执行

    git add .
    git commit -m '这是第二个版本:修改了xxxx'
    
    git status 
    git log //查看版本记录
    
    // 回滚到指定版本. 指定版本标识
    git reset --hard 9bbb0ef17234d40c941fec0f0408d994b52a5060 
    // 回滚之后, git log 只能看到该版本及之前的版本.
    
    git reflog // 查看包括回滚的历史记录
    
    
    // 如果开发新功能时进行到中途, 之前的版本中出现了问题, 需要修改.
    git stash // 暂存新开发的部分. 然后再修改原有部分,
    git add .
    git commit -m '修改了原版中aaa.html文件'
    
    git stash pop // 取回暂存的内容,自动检测合并
    // 取回的内容如果与二次修改的有冲突,则需要手动解决。
    
    git stash list // 查看"暂存区"的所有记录
    git stash clear // 清空"暂存区"
    git stash pop // 取回暂存区第一个记录
    git stash apply 0 // 取回"暂存区"指定的记录 编号0
    git stash drop 0 // 删除"暂存区"指定记录


    分支 branch
    master永远保留正确代码

    git branch // 查看分支
    git branch dev1 // 创建新分支dev1 即拷贝当前所有代码到新分支
    git checkout dev1 // 进入dev1分支
    
    git checkout master // 回到主分支 
    git branch bug // 创建新分支bug, 然后修复bug完毕.
    
    git checkout master // 切回master
    git merge bug // 把bug分支合并过来. 
    git branch -d bug // 再删除分支
    
    git checkout dev1 // 回到dev1分支,继续开发新功能.

    代码托管
    公有: github  / 码云
    自建: gitlab

    // 下载代码
    git clone https://github.com/frx9527/NodeJsDemo.git
    
    
    // 建立远程对应关系
    git remote add origin https://github.com/frx9527/NodeJsDemo.git
    git push -u origin master // 上传代码 master分支
    
    git checkout dev1 
    git push origin dev1 // 上传dev1分支
    
    // 换了电脑
    git pull origin master // 拉取远程master
    git branch dev1 // 一定要先创建本地分支,再拉取
    git pull origin dev1 // 拉取dev1分支 

    案例: 公司开发的分支dev忘记提交. 回家开发其它部分

    touch 1.txx
    git add .
    git commit -m "开发1.txt"
    // 忘记push 
    
    // 回到家中
    git pull origin dev // 没有成功
    touch 2.txt
    git add .
    git commit -m "开发2.txt"
    git push origin dev // 提交 家中 代码
    
    // 第二天回公司,此时仓库中有2.txt 公司电脑有1.txt
    git pull origin dev // 拉取仓库代码, 处理合并.
    touch 3.txt // 开发3.txt
    git add .
    git commit -m "开发3.txt"
    git push origin dev // 入库
    
    // 回家
    git pull origin dev // 也可以分解成下面二步操作:
    git fetch origin dev // 远程库下载到版本库
    git merge origin/dev // 合并到工作区 会出现分岔
    
    // 使用下面的方式则不会分岔
    git fetch origin dev // 远程库下载到版本库
    git rebase origin/dev // 合并到工作区但没有分岔, 保持提交记录整洁.


    协同开发
      允许他人操作程序
        - 合作者 Collaborators
        - 创建组织

    多个分支:
    - user1:

    git clone https://github.com/frx9527/NodeJsDemo.git
    git branch dev 
    git checkout dev 
    git pull origin dev // 下载分支
    
    git branch user1 // 创建新分支
    git checkout user1 
    ...
    git checkout dev // 写完之后切回dev 
    git merge user1 // 合并user1的内容
    
    git push origin dev // 提交分支

    - user2:

    git clone https://github.com/frx9527/NodeJsDemo.git
    git branch dev 
    git checkout dev 
    git pull origin dev // 下载分支
    
    git branch user2 // 创建新分支
    git checkout user2 
    ...
    git checkout dev // 写完之后切回dev 
    git merge user2 // 合并user2的内容
    
    // 以上步骤同user1 如果user1先提交了,后面的人将提交不成功.
    
    git pull origin dev // 先拉取代码,解决冲突. 
    git push origin dev // 最后提交分支
    
    // 为了避免过多冲突,尽量1天合并一次. 

    代码检查 review
    谁来 review ?
    - 组长
    - 带领者

    如何 review ?
    创建review分支:


    github
      Fork 按钮, 即copy一份别人代码到自己仓库.
      // 然后操作自己库的那份代码. clone, 修改, commit , push等,
      // 完成修改之后, github 上 New pull request, 填写相关说明, Create pull request
      // 对方github上即会收到消息提醒, 进入 pull request 即可看到别人的提交
      // 对方可以查看/确认合并等.

    避免反复输入密码
      HTTPS:
        https://username:passwd@github.com/frx9527/NodeJsDemo.git

      SSH:
        git@github.com/frx9527/NodeJsDemo.git
        // 需要事先ssh-keygen , 并将id_rsa.pub 内容添加到github的settings中

    .gitignore文件
        git中用来忽略检测某些文件, 可以手动添加内容. 指定文件或类型

        github中可以搜索gitignore文件, 可以看到官方提供的ignore规则文件.
        github新建仓库时选项: Add.gitignore 可以选择对应的类型.

    添加版本号显示:
    // 通常在 push之后进行
    git tag -a v1.0 -m "这是第一版" // 本地创建Tag
    git push origin --tags // 推到github

    // 其它命令
    git show v1.0 // 查看
    git tags -n // 查看本地Tag
    git tag -l 'v1.4.2.*' // 查看本地Tag,模糊匹配
    git tag -d v1.0 // 删除Tag
    git push origin :refs/tags/v0.2 // 更新远程tag
    git checkout v.10 // 切换tag
    git fetch origin tag V1.2

    git pull origin --tags
    git clone -b v0.1 // 拉取指定版本


    git push origin :dev // 删除远程dev分支

    参考: https://www.cnblogs.com/wupeiqi/p/7295372.html

     拉取时提示unmerge, 如果坚持以服务器为准,可以 reset本地,然后pull

    git log       # 获取历史commit
     
    git reset --hard 327366     # 回到327366这个commit  本地的修改将丢失
    
    git checkout .
    git pull

    本地的修改不要了,重新强制下载

    git fetch --all  
    git reset --hard 
    git pull

      

    删除上一次远程仓库的提交,修改上次提交的代码,做一次更完美的commit。

    # 删除上一次远程仓库的提交,修改上次提交的代码,做一次更完美的commit。
    
    git reset commitId  # (注:不要带 –-hard)到上个版本
    
    git stash           # 暂存修改
    
    git push --force    #  强制push,远程的最新的一次commit被删除
    
    git stash pop      # 释放暂存的修改,开始修改代码
    
    git add . -> git commit -m "massage" -> git push 你的分支

    更多内容,可以参考:https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6

  • 相关阅读:
    BOMwindow对象
    函数
    js 页面定时刷新
    appcan中 模拟表单上传图片
    商品评价多图片分组上传
    微信发送通知消息 thinkphp
    微信页面的分享,设置分享信息以及监听分享
    微信异步通知出错,behavior原因
    清空session
    json_decode
  • 原文地址:https://www.cnblogs.com/frx9527/p/git.html
Copyright © 2020-2023  润新知