Git学习

来源:互联网 发布:13台根域名服务器 编辑:程序博客网 时间:2024/05/21 13:23

本Git学习是在Win7 Home Basic SP1的OS学习的。参考的文章为:廖雪峰的博客

若自己想和朋友一起做个项目(例如接个私活,建个网站啥等),又无财力搭建自己的服务器,那么可以使用相关网站,例如国外的GitHub、bitbucket等,国内的OSChina。

他们的优缺点是:

GitHub:    优点:有很多开源项目,可以学习参考他人项目。                       缺点:私有仓是收费的。

bitbucket:优点:可以创建私有仓                                                                       缺点:免费的私有仓最多只能有5人,若团队成员增加,则需要购买套餐,最便宜的$5/month,详细可参考其网站

OSChina:优点:私有仓不做任何限制(也算是限制吧,最多1000个项目)   缺点:国内开源热情没有国外热烈,项目相对较少。


个人推荐国内的OSChina,我所在单位限制上国外网站,即使能上,网速也巨慢,因此推荐国内的OSChina, 网址为:这儿


对于Git的使用,是不分网站的。即,只要使用Git工具,操作是相同或类似的。 


推荐另一Git教程:Pro Git(中文版)


下面具体说一下使用方法。


  • 1、安装Git。

下载地址:这儿

点击安装,运行Git Bash。

安装完成后需要配置基本信息: 

git config  --global user.name "zhenglin"

git config  --global user.email  nanshanrenzhe@126.com

上面的配置是用于标示开发者,一般而言不会有同事或朋友恶意重名,若有恶意重名,后面也会讲到如何处理。


查看当前的配置:

git config --list

通过以上命令,就可以查看本机的配置文件信息。

  • 2、设定本地仓相关信息

2.1 设定本地仓的路径:

      mkdir  /f/Git/TianHe      说明:是指在本地F盘创建Git文件夹,并在Git中创建TianHe子文件夹,实际路径不存在,则会为你创建一个新的。

      cd  /f/Git/TianHe            说明:将创建的路径作为Git的cd

      pwd                                 说明:查看一下有无创建成功。若成功会在显示路径信息[/f/Git/TianHe]

2.2 初始化

                  git init                      该命令会为在指定的路径中创建一个空仓。

2.3 从网上下拉源码

     以ASP.NET源码为例:

git clone https://git01.codeplex.com/aspnetwebstack.git

这样,就可以下拉源码了。如图所示:


2.4 git init与git clone的区别

git init 用于本地的git库的创建,先在本地建库,然后添加文件。这一步相当于源码的建立。

git clone 用于从网上下拉源码


3、追踪仓状态

       在路径下创建新的文档(例如:readme.txt)---注意,建议所有txt使用UTF-8编码。

      git add  readme.txt                                       说明:将文档添加到index中(即缓存中),实际就是和本地仓打招呼,“新来一小弟,名字是readme.txt,还请多关照啊”

      git commit  -m "你需要添加的注释"           说明:将文档添加到head中。即使是这一步,仍然没有提交到远程服务器中的仓。

      git  status                                                       说明:查看本地仓的状态

      git diff readme.txt                                          说明:查看本地仓中readme.txt中的版本差别(本地版本与commit之后的版本的差别)


3.2  回退的相关操作

      git log              说明:查看更新日记

      git  reset   --hard HEAD^            说明:回退至上一版本。  HEAD^^,回退至上上版本。 HEAD~100.回退至100个版本之前的版本。

      cat   readme.txt               说明:查看某一文件

      git   reset  --hard [commit id]        说明:回退至任意之前的版本

      git   reflog        说明:获取所有的日志记录,不管是否关机。

3.3 关于撤销文件

     撤销文件有两种情况。

    1、仅在本地工作区有修改,然后希望恢复至HEAD版本。

          git  checkout  -- readme.txt     说明:即将版本库中的文件覆盖本地文件。

    2、在本地已经修改,且已经使用git add 命令了。

         2.1 首先先撤销在缓存区中的内容,否则,使用git commit 可能会导致提交到版本库中

          git reset  HEAD  readme.txt

         2.2  再使用版本库中的文件覆盖工作区的文件

          git  checkout  -- readme.txt

  4 删除文件

    rm  test.txt        说明:删除本地工作区的文件

    若误删本地文件,则可以通过之前的  git checkout -- test.txt     命令恢复文件。

    若希望删除版本库中的文件:

    git  rm test.txt

    git  commit  -m "delete a test.txt file"

    4.1 有时希望删除已经提交至远程仓库的文件,则可以这么做:

         (1)、将文件全部拷贝至本地

                   git  pull

          (2)、使用删除命令,删除文件,并提交至本地仓库

                  git   rm   test.txt

                  git  commit  -m "delete the test.txt file"

           (3)、推送至某个分支下的远端仓库

                  git  push origin  dev  

                 ---此处的前提是:已经使用了   git  checkout  -b  dev  origin/dev,即将本地的dev分支与远程的dev分支相关联。

                     或者是:  git  branch  --set-upstream dev origin/dev   :类似远程分支的本地连接(或本地分支与远端分支进行关联)

5  git checkout -b dev origin/dev      说明:是指创建一个远程dev的本地dev分支。

    可能会出现如下问题:fatal:cannot update paths and switch to branch ‘origin/dev'

    解决方法:git pull     原因:本地没有改分支,因此需要将远程上的拉下来。

    git branch  -a    说明:是指查看本地所有的分支

6  多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

        如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name

6.2 dev与master的merge问题整理。

      一般而言,在服务器上会有两个分支:master与dev。master用于发布正式版本,而dev用于开元人员的提交。如下图1所示:

alt="为空"

(图1)分支管理策略

     团队中应该声明,master分支只允许特定的某人执行merge操作,其他人的可以创建本地的分支,填写完成后使用 no-ff 命令将内容与origin/dev分支进行合并。

     合并的具体操作如下:

    【本地分支与origin/dev分支的合并】

6.2.1、创建本地分支

   git checkout -b am77
    

6.2.2、在本地工作目录添加文件,并将文件提交到本地仓

     

6.2.3、创建dev分支,并将本地的dev与远端的dev分支关联。

   git checkout -b dev origin/dev
     上一命令行是指:在本地创建一个新的分支dev,并关联远端的dev     【需注意】:前提条件是本地无dev分支。

     若本地已经有dev分支,却尚未关联远端的dev,则可以使用如下命令行:

  git branch --set-upstream dev origin/dev
6.2.4、切换分支,完成合并  
    git checkout dev
      

     进行合并

   git merge --no-ff -m "merge am77's files"  am77
    

6.2.5、提交代码,删除分支

     使用dev分支提交本地的代码,提交完成后,删除am77分支

   git push origin dev 
     

     删除am77分支

    

7 设置代理

    有时公司内网是有代理的,则需要为git设置代理,具体如下:

  git config --global http.proxy http://proxy.yourname.com:8080
    若需要密码:

  git config –-global http.proxy http://user:password@proxy.yourname.com:8080
    查看设定是否成功

  git config –-get –-global http.proxy
    删除代理

  git config --system (或 --global 或 --local) --unset http.proxy

   【需说明1】:设置了http代理,则使用

  git clone 
   命令时,只能使用  https方式,不能使用ssh方式。如下:

  git clone https://git.oschina.net/zhenglin/TianHe_Website.git
   若有ssh的代理实现方式,请告知。

 【需说明2】:此代理是通过Window下Git Bash实现的,Linux实现方式未知。



1 0