Git Bash通常用法

目录

1、简介

2、Git使用说明

2.1、准备工作

2.1.1、建立仓库

2.1.2、安装Git及初始化

2.1.3、验证是否开立SSH服务

2.1.4、完成 SSH 配置

2.2、开始工作

2.2.1、Git设置

1、初始化

2、将远程仓库进行本地化标识

3、获取develop数据

4、创建分支并关联

5、提交文件

5.1、添加文件

5.2、将文件添加到本地库

5.3、提交文件

5.4、上交文件

5.5、最终效果

6、合并版本

3、其他处理

3.1 分支未能关联到master

3.1.1 问题描述

3.1.2 问题处理

3.2 删除分支

3.2.1 删除本地分支

3.2.2 删除远端分支

4、其他参考


 


1、简介

当前常用的代码管理平台有:GitHub、bitbucket、OSChina。可根据实际情况,自行选择。本文使用Gitee。

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

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

 参考的文章为:廖雪峰的博客

2、Git使用说明

2.1、准备工作

2.1.1、建立仓库

在Gitee官网上,创建一个仓库

创建完成后。点击“克隆/下载”按钮。

会弹出一些基本设置信息(如下图)。这部分过会儿会用到

2.1.2、安装Git及初始化

下载地址:这儿

点击安装,运行Git Bash。

安装完成后需要配置基本信息(就是上图中的身份信息): 

git config --global user.name '郑林' 
git config --global user.email 'zhenglin_beijing@163.com'

上面的配置是用于标示开发者,一般而言不会有同事或朋友恶意重名,若有恶意重名,也可以限定。

执行以下命令,看看目前git的配置信息

git config --list

如下图所示

就可以查看本机的配置文件信息。

2.1.3、验证是否开立SSH服务

本步骤,要验证本机是否已开启SSH服务。

还是在git Bash界面,运行如下命令

~/.ssh

或者

 ~/.ssh ls

若本机具备了SSH服务,则git控制台应该有如下信息

若本机未安装SSH,则百度window11 开启SSH。

【注意】,上面的截图中,有个SSH路径信息:/c/Users/Administrator/.ssh (每个人的路径不同,以实际为准)一会儿回用到。

2.1.4、完成 SSH 配置

在git bash中输入以下命令:

ssh-keygen -t rsa -C "你的邮箱"

以我的为例,就是:ssh-keygen -t rsa -C "zhenglin_beijing@163.com"

然后一路回车即可,不需要输入内容,最后出现如下界面

然后,在2.1.3中的SSH路径中,就会有两个文件。id_rsa和id_rsa.pub

打开id_rsa.pub,将内容全部复制。粘贴到Gitee的公开key中

2.2、开始工作

2.2.1、Git设置

创建一个文件夹,右键选择“Git Bash Here”

1、初始化

输入 git init

初始化完成后,默认会为本地创建一个main的分支。

在Gitee网站建仓库时,我们选择了“master/develop”模式,也就说有一个正式库、一个开发库。

正常的开发流程是:其他人只有develop的权限,仓库的所有者有master的管理权限。并且

2、将远程仓库进行本地化标识

输入  :git remote add + 名字 + SSH链接地址

以我的为例:

git remote add origin git@gitee.com:ZhengLink/zhenglintest.git

创建完成后,就是在本地为远程的仓库起了一个别名。

可以看到仓库后面有个main。意思就是说,现在在本地默认初始化了一个main的分支。一般而言,为了进行版本隔离,本地也应该有两个分支。main和dev(开发者分支,名字可以改变)。

因此我们需要创建一个开发者分支(dev),并使用这个分支,关联到远程仓库的develop的代码

3、获取develop数据

输入:

git pull origin develop

这句话的含义是,从仓库的develop中下载数据。执行效果如下:

默认情况是develop的分支数据保存到本地同名分支。因为本地现在还没有develop的分支,因此现在本地分支为未命名的分支。(就是界面上的[new branch])

若现在查看现在本地的分支信息,将会看到如下信息:

因此下一步,就是在本地创建一个分支,然后关联到远端的develop库。

4、创建分支并关联

输入:git checkout -b dev origin/develop

相当于1、在本地新建一个分支branch;2、这个分支(dev)关联到远端的develop分支了。效果如下:

此时再执行查看当前分支信息,就会出现

现在本地有两个分支:(dev和main),还有一个远端的分支。

现在就可以在文件夹中添加文件了。

5、提交文件

在文件夹中添加文件,然后将文件添加(add)到本地分支,然后提交(commit),然后推送到远端(push)。具体如下:

5.1、添加文件

此时运行git status

5.2、将文件添加到本地库

输入:

git add -A 

然后再看一下状态

5.3、提交文件

输入:

git commit -m "你的修改备注"

然后查看状态

5.4、上交文件

输入:

git push -u origin dev:develop

意思是:本地的dev关联到develop,并将数据上交。-u只是绑定dev与origin/develop的关系。相当于配对。以后dev就与develop的绑定了

以后的提交,就不用了添加参数-u

只要是dev的分支,直接输入 git push origin即可。

5.5、最终效果

6、合并版本

在develop分支开发完成后,需要进行分支合并(就是将develop的代码,合并到master上)

主要命令如下:

1、确保使用develop分支

2、获取develop的最新代码

3、切换至master分支

4、使用merge合并代码

5、推送至master分支

使用如下命令,提交文件至服务器

//将文件夹内的文件添加到暂存区
git add -A

//提交到工作区
git commit -m "第一次提交"

//提交代码
git push origin

3、其他处理

3.1 分支未能关联到master

3.1.1 问题描述

本地的分支是main,我想创建一个本地的master分支,并关联到仓库的master分支上,输入:

git checkout -b master origin/master

出现异常:fatal: 'origin/master' is not a commit and a branch 'master' cannot be created from it

3.1.2 问题处理

1、错误原因是,本地与远程不匹配。原因只有两个:远程分支不存在;本地缓存有问题。因为远程分支已经存在,因此只有一个情况,就是本地的缓存有问题。因此,清除本地缓存,重新建分支并关联。具体操作如下:

2、清除本地缓存

3、查看当前分支

4、在本地创建新的分支,并关联远程的master

5、合并本地develop代码

6、添加并提交代码

3.2 删除分支

3.2.1 删除本地分支

现在本地有了3个分支,dev、mian、master

我想删除本地及远程的main分支,具体操作如下

3.2.2 删除远端分支

远端库里还有main的分支,如下图所示

执行删除远端的命令,如下图,将会删除远程的分支

执行完成后,效果如下,远端仓库没有分支了

4、其他参考

下面的内容是原博客的内容。优快云改版,导致板式全乱了

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实现方式未知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值