zoukankan      html  css  js  c++  java
  • Git学习笔记

     

    1、第一步用户配置:

    $ git config --global user.name "Your Name"

    $ git config --global user.email email@example.com

    首先创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

    方法一:

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

    你需要把邮件地址换成你自己的邮件地址,然后一路回车

    如果上面的命令没成功可使用方法二:

    上面的设置好以后从git选定的分支上拉代码:

    git pull git@code.xxx.com:xxx/xxx.git wf_dev

     

    2、选择一个合适的地方,创建一个空目录:

    $ mkdir learngit

    $ cd learngit

    $ pwd

    /Users/michael/learngit

    pwd命令用于显示当前目录

    3、通过git init命令把这个目录变成Git可以管理的仓库:

    $ git init
    Initialized empty Git repository in /Users/michael/learngit/.git/

    4、编写一个readme.txt文件,一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

    5、用命令git add告诉Git,把文件添加到仓库:

    $ git add readme.txt

    6、用命令git commit告诉Git,把文件提交到仓库:

    $ git commit -m "wrote a readme file"
    [master (root-commit) cb926e7] wrote a readme file
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt

    git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

    7、git也可以一次提交多个文件

    $ git add file1.txt
    $ git add file2.txt file3.txt
    $ git commit -m "add 3 files."

    8git status命令

    $ 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")

    git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

    9.1git diff命令:

    $ git diff readme.txt 

    git diff顾名思义就是查看difference,可以从上面的命令输出看到,我们最近修改过还没有提交的东西,知道作了什么修改后,再把它提交到仓库就放心多了

    9.2、用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

    $ git diff HEAD -- readme.txt 

    10git log命令:

    $ git log 
    commit cb926e7ea50ad11b8f9e909c05226233bf755030
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Mon Aug 19 17:51:55 2013 +0800
     
        wrote a readme file

    git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

    $ git log --pretty=oneline
    3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
    ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
    cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file

    11、在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    12git reset命令恢复到版本:

    $ git reset --hard HEAD^
    HEAD is now at ea34578 add distributed

    13cat命令:

    $ cat readme.txt
    Git is a distributed version control system.
    Git is free software.

    cat命令用于查看当前文件的内容

    14git reset --hard commit_id通过版本号恢复到特定版本

    $ git reset --hard 3628164
    HEAD is now at 3628164 append GPL

    版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

    15、Git提供了一个命令git reflog用来记录你的每一次命令:

    $ git reflog
    ea34578 HEAD@{0}: reset: moving to HEAD^
    3628164 HEAD@{1}: commit: append GPL
    ea34578 HEAD@{2}: commit: add distributed
    cb926e7 HEAD@{3}: commit (initial): wrote a readme file

    16git checkout -- file可以丢弃工作区的修改:

    $ git checkout -- readme.txt

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

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

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

    总之,就是让这个文件回到最近一次git commitgit add时的状态。

    17用命令git rm删掉,并且git commit

    $ git rm test.txt
    rm 'test.txt'
    $ git commit -m "remove test.txt"
    [master d17efd8] remove test.txt
     1 file changed, 1 deletion(-)
     delete mode 100644 test.txt

    现在,文件就从版本库中被删除了。

    18

    要关联一个远程库,使用命令

    git remote add origin git@server-name:path/repo-name.git

    关联后,使用命令git push -u origin master第一次推送master分支的所有内容,第一次要加u;

    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

    git pull git@code.xxx.com:xxx/xxx.git wf_dev

     

    19、用带参数的git log也可以看到分支的合并情况:

    $ git log --graph --pretty=oneline --abbrev-commit
    *   59bc1cb conflict fixed
    |
    | * 75a857c AND simple
    * | 400b400 & simple
    |/
    * fec145a branch test
    ...

    20、git clone克隆一个本地库:

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

    补充:如果提示输入密码,请把ssh的秘钥加到服务器上。(使用ssh地址)

    21、第一次 git push时

    git push --set-upstream origin wf_dev

    22、压栈

    git stash:用于暂存当前正在进行的工作,如想pull最新的代码,又不想加新的commit,或者为了fix一个紧急的bug,先stash,返回到自己上一个commit,修改完bug后,再执行git stash pop,继续原来的工作。

  • 相关阅读:
    某个牛人做WINDOWS系统文件详解
    常用ASP脚本程序集锦
    LINUX基础:文件安全与权限
    proftpd+mysql+quota
    apache2.0.49tomcat5.0.19jk2建立virtualHost
    URL Redirection(转) Anny
    顶级域名后缀列表(转) Anny
    \u4E00\u9FA5意义 Anny
    How to POST Form Data Using Ruby(转) Anny
    How to get rid of 'Enter password to unlock your login keyring' in Ubuntu(转) Anny
  • 原文地址:https://www.cnblogs.com/xbblogs/p/5629139.html
Copyright © 2011-2022 走看看