• git命令使用



    一、安装git
      1、下载
      2、配置
      $ git config --global user.name "Your Name"
      $ git config --global user.email "email@example.com"

    二、创建版本库
      1、找一个目录创建一个空目录
        $ mkdir learngit
        $ cd learngit
        $ pwd
        /Users/michael/learngit
      2、通过git init 命令把这个目录变成git可以管理的仓库
        $ git init
        Initialized empty Git repository in /Users/michael/learngit/.git/
        可以通过ls-ah命令看见有哪些文件
      3、创建一个文件readme.txt,编写内容
        我们是菜鸟
      4、用命令git add告诉Git,把文件添加到仓库:
        $ git add readme.txt
      5、用命令git commit告诉Git,把文件提交到仓库:
        $git commit -m "我们只是初步创建了一下而已“
      6、commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
        $ git add file1.txt
        $ git add file2.txt file3.txt
        $ git commit -m "add 3 files."


    三、版本回退
      1、修改reademe.txt
        我们是菜鸟
        这是真的
      2、运行git status命令查看结果
        $ git status

      3、运行git diff查看修改的内容
        $ git diff readme.txt
        diff --git a/readme.txt b/readme.txt
        index 46d49bf..9247db6 100644
        --- a/readme.txt
        +++ b/readme.txt
        @@ -1,2 +1,2 @@
        -Git is a version control system.
        +Git is a distributed version control system.
        Git is free software.
      4、git add readme.txt
      5.git status
        $ git status
        # On branch master
        # Changes to be committed:
        # (use "git reset HEAD <file>..." to unstage)
        #
        # modified: readme.txt

      6.$ git commit -m "add distributed"
        [master ea34578] add distributed
        1 file changed, 1 insertion(+), 1 deletion(-)
      7.git status命令看看仓库的当前状态
        $ git status
        # On branch master
        nothing to commit (working directory clean)
      8.再次修改文件
        Git is a distributed version control system.
        Git is free software distributed under the GPL.
      9.提交
        $ git add readme.txt
        $ git commit -m "append GPL"
        [master 3628164] append GPL
        1 file changed, 1 insertion(+), 1 deletion(-)
      10.通过git log查看历史版本
        或者git log --pretty=oneline
        $ git log --pretty=oneline
        3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
        ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
        cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
      11.回退到上一个版本
        git reset --hard HEAD^
        $ git reset --hard HEAD^
        HEAD is now at ea34578 add distributed
      12.查看版本库状态
        git log
        最新的那个版本append GPL已经看不到了!
        $ git reset --hard 3628164
        HEAD is now at 3628164 append GPL
        要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL的commit id是3628164...,于是就可以指定回到未来的某个版本
        $ git reset --hard 3628164
        HEAD is now at 3628164 append GPL

    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


    四、添加远程仓库
      1、登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:
      2、在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
        git remote add origin git@github.com:michaelliao/learngit.git
        (远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。)
      3、本地库的所有内容推送到远程库上
        $ git push -u origin master
        Counting objects: 19, done.
        Delta compression using up to 4 threads.
        Compressing objects: 100% (19/19), done.
        Writing objects: 100% (19/19), 13.73 KiB, done.
        Total 23 (delta 6), reused 0 (delta 0)
        To git@github.com:michaelliao/learngit.git
        * [new branch] master -> master
        Branch master set up to track remote branch master from origin.
      4、从现在起,只要本地作了提交,就可以通过命令:
        $ git push origin master
        把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!


    五、从远程库中获取数据
      1、登陆GitHub,创建一个新的仓库,名字叫gitskills
      2.我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:
      3.用命令git clone克隆一个本地库:
        $ git clone git@github.com:michaelliao/gitskills.git
          Cloning into 'gitskills'...
          remote: Counting objects: 3, done.
          remote: Total 3 (delta 0), reused 0 (delta 0)
          Receiving objects: 100% (3/3), done.

        $ cd gitskills
        $ ls
          README.md

    六、创建与合并分支
      查看分支:git branch

      创建分支:git branch <name>

      切换分支:git checkout <name>

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

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

      删除分支:git branch -d <name>
    七、解决冲突
      1、准备新的feature1分支,继续我们的新分支开发:
        $ git checkout -b feature1
        修改readme.txt最后一行,改为:
        Creating a new branch is quick AND simple.
      2、在feature1分支上提交:
        $ git add readme.txt
        $ git commit -m "AND simple"
        [feature1 75a857c] AND simple
        1 file changed, 1 insertion(+), 1 deletion(-)
      3、 切换到master分支:
        $ git checkout master
        Switched to branch 'master'
        Your branch is ahead of 'origin/master' by 1 commit.
      4、在master分支上把readme.txt文件的最后一行改为
        Creating a new branch is quick & simple.
      5、提交:
        $ git add readme.txt
        $ git commit -m "& simple"
        [master 400b400] & simple
        1 file changed, 1 insertion(+), 1 deletion(-)
      6、这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
        $ git merge feature1
          Auto-merging readme.txt
          CONFLICT (content): Merge conflict in readme.txt
          Automatic merge failed; fix conflicts and then commit the result.
          果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:
        $ git status
          # On branch master
          # Your branch is ahead of 'origin/master' by 2 commits.
          #
          # Unmerged paths:
          # (use "git add/rm <file>..." as appropriate to mark resolution)
          #
          # both modified: readme.txt
          #
          no changes added to commit (use "git add" and/or "git commit -a")
      7、我们可以直接查看readme.txt的内容:
        Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存:
        Creating a new branch is quick and simple.
      8、再提交:
        $ git add readme.txt
        $ git commit -m "conflict fixed"
        [master 59bc1cb] conflict fixed
      9、用带参数的git log也可以看到分支的合并情况:
        $ git log --graph --pretty=oneline --abbrev-commit
          * 59bc1cb conflict fixed
          |
          | * 75a857c AND simple
          * | 400b400 & simple
          |/
          * fec145a branch test
           ...
      10、最后,删除feature1分支:
        $ git branch -d feature1
          Deleted branch feature1 (was 75a857c).
    八、多人协作
        因此,多人协作的工作模式通常是这样:
          首先,可以试图用git push origin branch-name推送自己的修改;
        如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
        如果合并有冲突,则解决冲突,并在本地提交;
        没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
        如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name     origin/branch-name。
        这就是多人协作的工作模式,一旦熟悉了,就非常简单。

    小结

    查看远程库信息,使用git remote -v;

    本地新建的分支如果不推送到远程,对其他人就是不可见的;

    从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

    在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

    建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

    从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。




    参考网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  • 相关阅读:
    使用webService时,gsoap数据类型注意事项
    DB:HQL
    云:政务云
    专业词汇:电子政务(政府运作模式)
    Java-框架-Dubbo:Dubbo
    架构-Java-Netty:Netty框架
    职业-企业家:企业家
    信息服务:高考填报志愿综合参考系统
    Java-Class-FC:java.time.Duration.java
    Java-Class-@I:java.annotation.Resource.java
  • 原文地址:https://www.cnblogs.com/songhello/p/6534196.html
Copyright © 2020-2023  润新知