zoukankan      html  css  js  c++  java
  • git常用命令

    windows:

    git下载地址:

    https://git-for-windows.github.io/

    安装完成后,输入命令行做最后一步设置:

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"

    创建版本库,选择自己想放置的盘,输入下面命令(learngit为版本库名,建议英文)

    $ mkdir learngit
    $ cd learngit
    $ pwd

    输入下面指令把这个目录变成git可以管理的仓库

    $ git init

    把要保存到库的文件放在learngit目录下或子目录下

    使用下面命令保存到暂存区

    $ git add readme.txt

    使用下面命令告诉git,把文件提交到仓库

    $ git commit -m "wrote a readme file"

    其中-m后面输入的是本次提交的说明

    若想查看仓库的修改情况或者状态,可输入下面命令

    $ git status
    # On branch master
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #    modified:   readme.txt
    #
    no changes added to commit (use "git add" and/or "git commit -a")

    上面信息告诉我们,readme.txt被修改过,具体要看修改过说明内容,可输入以下指令

    $ git diff readme.txt 

    若想看历史记录,可输入以下指令

    $ git log

    若想看简洁一点的,可输入以下指令

    $ git log --pretty=oneline

    在git中,HEAD表示当前版本,上个版本是HEAD^,上上个则是HEAD^^,更多则可以写成HEAD~100。若想回退上一个版本,则可输入下面指令

    $ git reset --hard HEAD^

    若想看看版本内容,可输入下面指令

    $ cat readme.txt

    若想回退指定版本,需要指晓commit_id,可输入以下指令

    $ git reset --hard 3628164

    若想查看每一次指令,可输入

    $ git reflog

    输入以下指令可丢弃工作区的修改

    $ git checkout -- readme.txt

    若想把暂存区的修改撤销掉重新放回工作区,可用命令

    $ git reset HEAD readme.txt

    使用以下命令删除文件

    $ rm test.txt

    远程仓库:

    在用户主目录下(C盘/用户/xxx),查看有没.ssh目录,再继续查看有木有id_rsa和id_rsa.pub这两个文件,若有则可跳过下一步,否则则输入以下命令,创建SSH Key

    $ ssh-keygen -t rsa -C "youremail@example.com"

    一般不设置密码

    接着登录github,打开Accout settings,SSH Keys页面,点Add SSH Key,填title,在Key文本框里面粘贴id_rsa.pub文件的内容,点击Add Key,完成。

    添加到远程库

    在github上添加一个仓库后,可使用以下命令把本地仓库与之关联

    $ git remote add origin git@github.com:githubname/learngit.git

    githubname必须要替换成自己的github账户名

    将本地库的所有内容推送到远程库上,使用以下代码:

    $ git push -u origin master

    SSH警告

    当第一次使用git的clone或者push命令链接github时,会得到一个警告:

    The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
    RSA key fingerprint is xx.xx.xx.xx.xx.
    Are you sure you want to continue connecting (yes/no)?

    这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

    从远程库克隆

    输入以下命令,可以在github上克隆一个仓库到本地库

    $ git clone git@github.com:githubname/gitskills.git

    githubname为github的账户名,gitskills是github上面的一个仓库的名字

    创建分支

    使用以下命令创建分支并切换到分支上

    $ git checkout -b dev
    Switched to a new branch 'dev'

    -b参数表示创建并切换,相当于以下两条命令

    $ git branch dev
    $ git checkout dev
    Switched to branch 'dev'

    查看当前分支使用以下命令

    $ git branch
    * dev
      master

    该命令会列出所有分支,当前锋分支前面会表*号

    以下命令用户合并指定分支到当前分支

    $ git merge dev
    Updating d17efd8..fec145a
    Fast-forward
     readme.txt |    1 +
     1 file changed, 1 insertion(+)

    Git鼓励大量使用分支:

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b <name>

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

    删除分支:git branch -d <name>

    当git无法自动合并分支时,就必须首先解决冲突,再提交,合并完成

    用以下命令可以看到分支合并图

    $ git log --graph

    使用以下命令表示禁用Fast forward

    $ git merge --no-ff -m "merge with no-ff" dev

    dev表示分支

    使用以下明林可查看分支历史

    $ git log --graph --pretty=oneline --abbrev-commit
    *   7825a50 merge with no-ff
    |
    | * 6224937 add merge
    |/
    *   59bc1cb conflict fixed

    合并分支时,加上--no-ff参数可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而Fast forward合并就看不出来曾经做过合并。

    bug分支

    Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

    $ git stash
    Saved working directory and index state WIP on dev: 6224937 add merge
    HEAD is now at 6224937 add merge

    现在,用git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。

    使用以下命令查看工作现场

    $ git stash list
    stash@{0}: WIP on dev: 6224937 add merge

    工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

    一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

    另一种方式是用git stash pop,恢复的同时把stash内容也删了:

    $ git stash pop
    # On branch dev
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       new file:   hello.py
    #
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #       modified:   readme.txt
    #
    Dropped refs/stash@{0} (f624f8e5f082f2df2bed8a4e09c12fd2943bdd40)

    再用git stash list查看,就看不到任何stash内容了:

    $ git stash list

    你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

    $ git stash apply stash@{0}

    未完,待续...

  • 相关阅读:
    Java四种内部类
    Java多态详解
    为啥java要使用 set ()和get()方法---封装
    Python---django轻量级框架
    java 读取数据库数据转化输出XML输出在jsp页面
    操作系统专栏
    learn more ,study less(三):超越整体性学习
    learn more ,study less(二):整体性学习技术(下)
    learn more ,study less(二):整体性学习技术(上)
    Spring博客专栏
  • 原文地址:https://www.cnblogs.com/aissd/p/4909726.html
Copyright © 2011-2022 走看看