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

    1.创建一个空目录:

    $ mkdir learngit
    $ cd learngit
    $ pwd
    /Users/michael/learngit

    pwd命令用于显示当前目录

    2.git init命令把这个目录变成Git可以管理的仓库

    3.git add把文件添加到仓库,放在暂存区

    4.git status命令可以让我们时刻掌握仓库当前的状态

    5.git diff是查看与上一版本difference

    6.git commit提交文件

    !!正确的流程是:第一次修改 -> git add -> 第二次修改 -> git add -> git commit

    7. git log查看历史提交记录

        git log -1  显示最近一次的提交

        可加上 --pretty=oneline参数使记录显示得更简洁

     git log --pretty=oneline --abbrev-commit 查看每次提交的commit id

    8.git reset --hard HEAD^   用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

     git reset HEAD file可以把暂存区的修改撤销掉,退回到工作区

    9.cat<file>可以查看文件内容

    10.git reflog用来记录你的每一次命令

    11.命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

          一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

         一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    12.rm <file>删除工作区的某文件或者直接系统操作删除

       然后如果确实是要删除该文件,那就用命令git rm删掉,并且git commit,这样就从版本库中删除了

       如果删错了,可以用git checkout -- <file>从版本库中恢复到工作区(仅限上一次操作??),会丢失最近一次提交后你修改的内容。

    13.要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git,(如果报错,先输入$ git remote rm origin)

    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

    命令git clone把远程克隆到本地库

    14.$git checkout -b dev   创建dev分支,然后切换到dev分支

     相当于$ git branch dev   //创建分支

        $ git checkout dev   //切换到分支

        这两条指令合并

    $git branch -d dev 删除dev分支

    15.git branch  列出所有分支,当前分支前面会标一个*

    16.git merge <name>  合并某分支到当前分支

    17.git log --graph --pretty=oneline --abbrev-commit  查看分支的合并情况

    18.git merge --no-ff -m "XXX" <分支的name>   --no-ff参数,表示禁用Fast forward,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息,删除分支后,不会丢掉分支信息

    19.git stash 把当前工作现场“储藏”起来,可以去处理其他分支工作,等以后恢复现场后继续工作

        git stash list 查看保存的“工作现场”,有0,1,2等排序

        git stash apply stash@{0}恢复“第0个”工作现场,但是恢复后,stash内容并不删除,需要再用git stash drop来删除stash;

        或者用git stash pop,恢复工作现场的同时把stash内容也删了。

    20.如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除

    21.git remote -v  查看远程库详细的信息

    22.克隆别人的远程库时,只有master,如果要在他的dev分支工作,用指令git checkout -b dev origin/dev

    23.用git push origin branch-name提交,

        如果你的提交和别人的提交有冲突,用git pull试图合并,如果不行,

        就先用git branch --set-upstream dev origin/dev 指令来设置devorigin/dev的链接,

        然后用指令 git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送。

    24.git tag <标签name>可以为当前分支打标签

      git tag查看所有标签

        git tag <标签name> <commit id> 为某次提交打标签   

      git tag -a <标签name> -m"说明文字" <commit id>  这样能完整地打出关键的信息

        git show <tagname>查看标签信息

    25.git tag -d <tagname> 删除标签

       git push origin <tagname>  标签推送到远程 

      git push origin --tags    全部标签推送到远程

      删除远程标签:先删除本地的,然后用指令git push origin :refs/tags/<tagname> 删除远程的。

    26.Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件

     内容举例如下:

    # Windows:
    Thumbs.db
    ehthumbs.db
    Desktop.ini
    
    # Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    
    # My configurations:
    db.ini
    deploy_key_rsa

    27.$ git config --global alias.st status  定义st=status,简化GIT代码

        $ git config --global alias.unstage  'reset HEAD'  定义unstage=reset HEAD

       加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用

    28.听说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"有奇效

    29.大功告成

  • 相关阅读:
    二分图 洛谷P2055 [ZJOI2009]假期的宿舍
    并查集 洛谷P1640 [SCOI2010]连续攻击游戏
    贪心 洛谷P2870 Best Cow Line, Gold
    贪心 NOIP2013 积木大赛
    快速幂 NOIP2013 转圈游戏
    倍增LCA NOIP2013 货车运输
    树形DP 洛谷P2014 选课
    KMP UVA1328 Period
    动态规划入门 BZOJ 1270 雷涛的小猫
    KMP POJ 2752Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/shen076/p/6158227.html
Copyright © 2011-2022 走看看