zoukankan      html  css  js  c++  java
  • Git

    一、安装配置

      1、下载地址官网文档易懂文章(推荐阅读), 《Pro Git》中文版, Xcode 5 and Git

      2、修改配置文件

    $ git config --global user.name "GitHub Account Name"
    $ git config --global user.name "GitHub Account Email"

     $ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" # 自定指令 git lg 来查看 log

    二、杂七杂八知识

      1、常用指令

    git config --system(/etc/gitconfig): 系统中对所有用户都普遍适用的配置
    git config —global (~/.gitconfig): 用户目录下的配置文件只适用于该用户
    git config --list: 查看配置信息
    git config user.name/others: 查看某个配置变量属性

    git help <verb>  查看帮助
    git log 查看提交记录
    git log --pretty=oneline  以简便的形式查看记录
    git reflog 记录用户的每一次命令
    git status 查看修改的文件记录
    git reset --hard HEAD^  退回上一个版本(HEAD:为当前版本 HEAD^:上一个版本,HEAD^^: 上上一个版本)
    git reset HEAD fileName  把缓存区的某些文件替换为版本库的文件
    git diff fileName  查看修改文件和上一次提交了的版本的区别
    git diff HEAD -- fileName 查看工作区和版本库里最新版本的区别
    git checkout -- fileName  丢弃工作区的修改 (a、如果版本没有存到缓存区,就恢复到和版本库一模一样;b、如果已添加到缓存区,并做了修改,恢复到添加到缓存区的状态)
    git rm fileName  从版本库中删除文件,之后马上执行 commit 操作。
    $ git remote  # 查看远程库信息
    $ git remote -v  # 查看远程库详细信息  



      2、SSH 的配置 

      3、分支 

        策略:

          a) master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;应该创建一个 dev 分支,每个人又在 dev 分支上有自己的分支。在某个时候再合并到 dev 和 master 上。

          b) 并不是一定要把本地分支往远程推送

        •     master分支是主分支,因此要时刻与远程同步;

        •     dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

        •     bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

        •     feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    $ git branch  # 查看当前的分支, 当前分支前会有 *
    $ git checkout -b xxx  # 创建 xxx 分支,并切换到该分支

    # 分支工作完成切换回 master 分支
    $ git checkout master  # 切换分支
    $ git merge xxx  # 如果是 "Fast Forward", 是不会执行一次 merge 操作的
    $ git merge --no-f -m "xxxxxxx" xxx  # merge 的时候,commit 一次

    $ git branch -d xxx  # 删除分支

    $ git log --graph --pretty=oneline --abbrev-commit  # 查看分支合并情况


    # 如果当前在 dev branch 任务只完成到一半,需要先处理 bug。(通常会创建新的 bug 分支进行修复,然后合并,最后删除。)
    $ git stash # 则应该把当前工作现场存储起来。
    # 切换回哪个分支上修改bug,修改完后 merge 那个分支。
    # 继续刚才保留现场的工作。
    $ git stash pop  # 恢复到 stash 内容,并删除 stash

    $ git stash list # 查看保留现场的记录


    # 添加新功能 (最好新建一个 feature 分支,在上面开发,完成后,合并,最后删除该 feature 分支。)
    $ git branch -D xxx  # 强行删除一个还没有 merge 的分支。


    $ git push origin xxx  # push 其他分支到远程库
    $ git checkout -b dev origin/dev  # 创建远程 origin 的 dev 分支到本地

        c) 多人协作的工作模式通常是这样:

        • 首先,可以试图用git push origin branch-name推送自己的修改;
        • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;(如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。)
        • 如果合并有冲突,则解决冲突,并在本地提交;
        • 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

     

       4、标签

        创建的标签是存储在本地的,不会自动推送到远程。

    $ git checkout xxx  # 切到要加标签的分支上

    $ git tag zzz  # 打开一个新标签, 默认标签是打在最新提交的 commit 上。
    $ git tag zzz commitID  # 为指定的 commit 添加标签
    $ git tag -a zzz -m "xxx" commitID  # 为指定的 commit 添加标签,-a指定标签名,-m指定说明文字。
    $ git tag -s zzz -m "xxx" commitID  # 为指定的 commit 添加标签,-s添加 PGP 签名

    $ git tag  # 查询标签
    $ git show zzz  # 查看标签详细信息

    $ git tag -d zzz  # 删除标签

    $ git push origin xxx  # 推送某个标签到远程
    $ git push origin --tags  # 把本地的全部标签都推送到远程

    # 删除已经推送到远程的标签 (先把本地的该标签删除掉,再删除远程的改标签)
    $ git tag -d zzz
    $ git push origin :refs/tags/zzz
  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/eileenleung/p/3495728.html
Copyright © 2011-2022 走看看