zoukankan      html  css  js  c++  java
  • [原创]git使用入门

    创建git项目并初始化

    建立一个新文件夹,然后将该文件夹定义为git项目 

    Lilis-MacBook-Pro:GitDir lili$ mkdir testgit
    Lilis-MacBook-Pro:GitDir lili$ cd testgit
    Lilis-MacBook-Pro:testgit lili$ git init
    Initialized empty Git repository in /Users/lili/快盘/GitDir/testgit/.git/

    为新项目添加文件和内容

    Lilis-MacBook-Pro:testgit lili$ echo "test git" > README
    Lilis-MacBook-Pro:testgit lili$ LS
    README
    Lilis-MacBook-Pro:testgit lili$ cat README
    test git

    新的内容都是存储在暂存区中,只有提交了才会存储于Git目录中。

    提交修改和新建内容

    Lilis-MacBook-Pro:testgit lili$ git add README
    Lilis-MacBook-Pro:testgit lili$ git commit -m "test add"

    [master (root-commit) d12a913] test add
    1 file changed, 1 insertion(+)
    create mode 100644 README
    Lilis-MacBook-Pro:testgit lili$ git push
    fatal: No configured push destination.
    Either specify the URL from the command-line or configure a remote repository using

    git remote add <name> <url>

    and then push using the remote name

    git push <name>

    建立项目分支和切换项目分支

    查看当前作业分支用git branch命令,打*号的那个就是当前操作分支

    新建分支用如下命令:

    Lilis-MacBook-Pro:testgit lili$ git branch experimental
    Lilis-MacBook-Pro:testgit lili$ git branch
      experimental
    * master

    新建后查看发现多了experimental分支,并且当前分支是master分支,这个是建立git项目默认的分支

    切换分支按照如下:

    Lilis-MacBook-Pro:testgit lili$ git checkout experimental
    Switched to branch 'experimental'
    Lilis-MacBook-Pro:testgit lili$ git branch
    * experimental
      master

    分支内容merge

    在不同分支下共同操作同一个文件(README),初始化时内容是test git,那现在切换到experimental分支下写入一些内容:

    Lilis-MacBook-Pro:testgit lili$ git checkout experimental
    Switched to branch 'experimental'
    Lilis-MacBook-Pro:testgit lili$ vim README
    test git
    modified in experimental branch

    然后git commit -a并输入comment内容, commit -a是一次性添加并commit已存在的文件的修改,其实是add和commit的合并命令

     切换到master分支,也README中输入一行内容并git commit -a

    Lilis-MacBook-Pro:testgit lili$ git checkout master
    Switched to branch 'master'
    Lilis-MacBook-Pro:testgit lili$ vim README
    test git
    add one line in branch master

    这时,两个分支就有了各自不同的修改(diverged);我们可以通过下面的命令来合并“experimental”和“master”两个分支:

    通过如下命令来合并experimental分支到master分支:

    Lilis-MacBook-Pro:testgit lili$ git merge experimental
    Auto-merging README
    CONFLICT (content): Merge conflict in README
    Automatic merge failed; fix conflicts and then commit the result.
    Lilis-MacBook-Pro:testgit lili$ cat README
    test git
    <<<<<<< HEAD
    add one line in branch master
    =======
    modified in experimental branch
    >>>>>>> experimental

    如果两个分支没有冲突,则合并完成;有冲突可以通过git diff来查看冲突

    Lilis-MacBook-Pro:testgit lili$ git diff
    diff --cc README
    index 7ef0026,1633bc2..0000000
    --- a/README
    +++ b/README
    @@@ -1,2 -1,2 +1,6 @@@
      test git
    ++<<<<<<< HEAD
     +add one line in branch master
    ++=======
    + modified in experimental branch
    ++>>>>>>> experimental

     删除项目分支

    git branch -d experimental

    git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D

    git diff 和git diff --cache的区别

    Lilis-MacBook-Pro:testgit lili$ vim README
    Lilis-MacBook-Pro:testgit lili$ git diff
    diff --git a/README b/README
    index 8ce43a3..bb9ae0b 100644
    --- a/README
    +++ b/README
    @@ -1 +1,2 @@
     test git
    +test git diff and git diff --cached
    Lilis-MacBook-Pro:testgit lili$ git add README
    Lilis-MacBook-Pro:testgit lili$ git diff
    Lilis-MacBook-Pro:testgit lili$ git diff --c
    --cached        --check         --color         --color-words   --cumulative
    Lilis-MacBook-Pro:testgit lili$ git diff --cached
    diff --git a/README b/README
    index 8ce43a3..bb9ae0b 100644
    --- a/README
    +++ b/README
    @@ -1 +1,2 @@
     test git
    +test git diff and git diff --cached
    Lilis-MacBook-Pro:testgit lili$ git commit -m "test git diff"
    [master a2c52a3] test git diff
     1 file changed, 1 insertion(+)
    Lilis-MacBook-Pro:testgit lili$ git diff
    Lilis-MacBook-Pro:testgit lili$ git diff --cached
    Lilis-MacBook-Pro:testgit lili$

    git diff 比较的是工作目录树与暂存区之间的区别。

    git diff --cached 比较的是暂存区和版本库最后一个版本的区别。

    git diff HEAD 比较的是工作目录树(包括暂存的和未暂存的修改)与版本库最后一个版本的差别。

     

    忽略某些文件

    可以在你的顶层工作目录中添加一个叫".gitignore"的文件,来告诉Git系统要忽略 掉哪些文件,下面是文件内容的示例:

    # 以'#' 开始的行,被视为注释.
    # 忽略掉所有文件名是 foo.txt 的文件.
    foo.txt
    # 忽略所有生成的 html 文件,
    *.html
    # foo.html是手工维护的,所以例外.
    !foo.html
    #  忽略所有.o 和 .a文件.
    *.[oa]

    git之删除和恢复:工作区,暂存区,仓库master

    一、rm只删除工作区信息;

    使用 git checkout -- file即可恢复;

    二、git rm 删除工作区和stage信息;

    1、使用git reset HEAD -- file即可恢复;

    2、恢复步骤:

    1)先使用git reset HeAD -- file从master中把已删除信息copy到到stage区;

    2)再使用git checkout -- file从stage区把已删除信息copy到工作区。over!!!

    3)这时你就看到删除的文件又回来啦。啦啦啦!

    三、git commit -m “file”删除工作区,stage和master信息;

    1、使用git reset --hard HEAD^即可恢复。

    2、恢复步骤:

    1)先使用git reset --hard HEAD^从master回收处恢复到master中;

    2)再使用git reset HeAD -- file从master中把已删除信息copy到到stage区;

    3)最后,使用git checkout -- file从stage区把已删除信息copy到工作区。

    4)这时你就看到删除的文件又回来啦。啦啦啦!

    以上我都亲自试过,很好用。

    就是不知道从master中删除的信息暂时存放在哪里了。

    另外:学习git基础推荐http://www.liaoxuefeng.com/这个博客,写的很浅显易懂!

  • 相关阅读:
    Java Native Method
    SQL语句优化
    Ibatis的环境搭建以及遇到的问题解决
    Java 构建器
    SpringMVC自定义视图 Excel视图和PDF视图
    java 枚举的常见使用方法
    mysql 根据某些字段之和排序
    MFC The Screen Flickers When The Image Zoomed
    How To Debug Qmake Pro File
    Gcc And MakeFile Level1
  • 原文地址:https://www.cnblogs.com/gslyyq/p/5119936.html
Copyright © 2011-2022 走看看