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}

    未完,待续...

  • 相关阅读:
    6. Flask请求和响应
    5. Flask模板
    FW:Software Testing
    What is the difference between modified duration, effective duration and duration?
    How to push master to QA branch in GIT
    FTPS Firewall
    Query performance optimization of Vertica
    (Forward)5 Public Speaking Tips That'll Prepare You for Any Interview
    (转)The remote certificate is invalid according to the validation procedure
    Change
  • 原文地址:https://www.cnblogs.com/aissd/p/4909726.html
Copyright © 2011-2022 走看看