zoukankan      html  css  js  c++  java
  • 廖雪峰git学习笔记总结-git常用命令

    git init  #把这个目录变成Git可以管理的仓库

    git add readme.txt    # 把文件添加到git仓库

    git commit -m 'wrote a readme file'  # 告诉git把文件提交到仓库, -m  后面输入的是本次提交的说明

    git status   # 查看当前仓库的状态,有什么文件被修改了,新增了什么文件。。。

    git diff readme.txt  #查看文件比上次提交的时候,修改了哪些内容

    git log --pretty=oneline   # 查看commit提交的历史记录,可以查看到commit id,加上--pretty=online显示简化内容,  不加选项的话显示详细内容

    git reset --hard HEAD^        # 回退到上一次commit的版本,回退之后,这个commit版本之后commit的版本通过git status就看不到了。不过也没事儿,git reflog可以看到每一次执行的命令,这样即使你退回了之前的版本,想回到将来的版本,也是没问题的。

    git reset --hard 4dc0ecf331b6245a9704c5b14163b7553b5411bf   # 回退到指定的commit id对应的版本。   Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD的指向修改了而已。

    git reflog      # 查看你的每一次命令

    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

    git 有一个暂存区,git add 的时候其实就是把文件添加到了暂存区里边,然后git commit是从暂存区提交到分支版本库中。

    git diff HEAD -- readme.txt      # 查看工作区和版本库中readme.txt文件的差别

    git checkout -- readme.txt       # 当文件被修改,但是还未执行git add 和git commit,可以通过这个命令来回滚到和版本库一样的状态

    git reset HEAD readme.txt         # 当执行了git add,但是又不想commit了,想回滚回去,可以执行这个命令,清除暂存区。保持版本库和工作区的内容一样。

    想删除文件,需要执行以下操作:

    rm   test.txt

    git rm test.txt

    git commit -m 'rm test.txt'

    如果删除了文件,但是还没有commit,现在想恢复文件:

    git reset HEAD test.txt

    git checkout -- test.txt

    添加远程库,并把当前目录推送到远程库:

    git remote add origin git@github.com:yangruizeng/learngit.git

    git push -u origin master       # -u 把本地的master和远端的master联系起来,以后推送的时候命令就比较简单了

    git checkout -b dev  # 创建一个dev分支 -b表示创建,并切换

    git branch dev     #创建dev分支

    git checkout dev       #切换到dev  checkeout  切换分支

    git branch       # 查看当前有哪些分支

    git merge dev              #   把dev分支的内容合并到master。

    git branch -d dev      # 删除分支

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

    在合并分支的时候,如果两个分支的文件有冲突,则必须要解决冲突才能完成合并。

    合并分支的时候有两种模式:

    Fast forward

    --no-ff

    第一种模式会把两个分支合并到一块儿,第二个模式会在合并的时候重新提交一个commit,这样,即使把分支删除了,也可以恢复回去。

    git merge --no-ff -m "merge with no-ff"         #  使用no-ff方式合并分支。

    git stash         # 保存当前工作区的状态,比如你正在开发代码,突然需要修复一个bug,这时就可以先stash保存一下当前的状态,然后去修改bug,然后再通过命令,切回来。

    git stash list    # 查看保存的状态列表,

    git stash apply   # 恢复保存的状态,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

    git stash pop      #恢复到保存的工作区的状态,而且还会把保存的状态删了。

    解决bug,从master新建一个分支出去,解决问题后合并到master,然后删除分支。

    新增加一个功能,从dev中新增一个分支,功能测试完毕后合并到dev中,然后删除分支。

    git push origin master      #把本地的分支,推送到远端的master

    git push origin dev           # 推送到远端的dev分支

    git tag v0.9 6224937        # 打tag,把那个commit 绑定到tag

    git  tag v1.0               # 打tag,默认对应最近的一次commit。

    git tag -a v0.1 -m "version 0.1 released" 3628164   # -a 指定标签名  -m 描述内容

    git  tag       #查看所有标签

    git show tagname   #查看tag的信息

    git push origin v1.0    #推送指定tag到远端

    git push origin --tags  # 推送所有tags到远端。

    删除一个tag需要执行两个步骤:

    git tag -d v1.0                      #本地删除tag

    git push origin :refs/tags/v1.0      #通过push,删除远端的tag

     git config --global color.ui true     #设置颜色,在git status的时候有一些颜色

    忽略特殊文件:

    在工作区的根目录下创建一个名为:.gitignore 的文件,把要忽略的文件写到里边就行了

    如果git add  test.txt失败,则有可能是在.gitignore文件中定义了忽略这个文件,强制添加可以使用git add -f 

    配置别名:

    git config --global alias.st status  

    设置完成后: git st  就等于 git status

    git config --global alias.co checkout

    $ git config --global alias.ci commit

    $ git config --global alias.br branch

    git ci -m "bala bala bala..."

    git config --global alias.unstage 'reset HEAD'

     git unstage test.py

    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配置文件都放在.git/config文件中

    $ cat .git/config 

    [core]

        repositoryformatversion = 0

        filemode = true

        bare = false

        logallrefupdates = true

        ignorecase = true

        precomposeunicode = true

    [remote "origin"]

        url = git@github.com:michaelliao/learngit.git

        fetch = +refs/heads/*:refs/remotes/origin/*

    [branch "master"]

        remote = origin

        merge = refs/heads/master

    [alias]

        last = log -1

    而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:

    $ cat .gitconfig

    [alias]

        co = checkout

        ci = commit

        br = branch

        st = status

    [user]

        name = Your Name

        email = your@email.com

  • 相关阅读:
    Python 基础 -2.4.2 生成器,迭代器
    Python 基础 -2.4.1 装饰器
    Python 基础 -2.4 函数进阶,名称空间,闭包,高阶函数,递归,匿名函数,生产式,生成器,迭代器
    Python 基础 -2.3 函数
    python中字典,元组,列表和字符串之间的转换
    input和raw_input区别
    Python 基础 -2.2 文件操作
    Golang之AES/DES加密解密
    Golang与MySQL
    RTFM
  • 原文地址:https://www.cnblogs.com/yangruizeng/p/7419543.html
Copyright © 2011-2022 走看看