git零基础使用指南

一 拥有一个git项目

如果你有一个git云端项目,使用拉取即可,我们也可以创建一个使用git管理的本地项目。

// 拉取云端的项目到当前文件夹
$ git clone https://git.*******/yourname/test.git

// 为当前文件夹内目录设置git仓库管理
git init
本文采用第二种方式创建了一个新的git仓库。这时候查看git历史,是没有提交记录的,因为这个仓库刚刚被创建。

$ git log
fatal: your current branch 'master' does not have any commits yet

我们在文件夹中添加一个txt文件并写入一些内容,后将文件的变化提交到git。

$ git add .
$ git commit -m 'feat: init'
1 file changed, 1 insertion(+)

此时我们再去查看git仓库的提交记录,可以看到提交历史。

$ git log
Author: kexinran <kexr@outlook.com>
Date:   Thu Aug 11 16:23:58 2022 +0800
feat: init

二 将git项目托管到云端

在上一节中给出了两条git项目路线,使用git init本地创建一个新的git项目,或使用git clone从云端拉取一个已托管到云端的项目,如果使用后者,则被拉取的项目已与云端的项目绑定了,我们可以使用git remote查看本地git项目对应的云端地址。

$ git remote -v
origin  git@github.com:test/thinkphp.git (fetch)
origin  git@github.com:test/thinkphp.git (push)

如果使用git init本地创建一个新的git项目,这个项目在云端是没有对于的git地址的,使用git remote的结果是空。

git remote -v
// 什么也没有返回

这种情况下怎样将git项目托管到云端呢?
首先我们需要创建一个云端仓库(如果已有云端仓库可以跳过该步骤)。很多平台都支持创建git仓库,比如码云和github,选择其一,在上面根据提示创建一个仓库即可,这里不需要使用命令行,是在网页里创建的。
然后将本地git项目与云端仓库关联起来。创建好的云端仓库对应一个地址,这里使用命令行让我们本地的项目和这个地址关联即可。

$ git remote set-url origin git@github.com:test/thinkphp.git

更改后可以使用git remote查看到变更后的云端地址。

$ git remote -v
origin  git@github.com:test/thinkphp.git (fetch)
origin  git@github.com:test/thinkphp.git (push)

现在我们可以将项目的变化同步到云端了。
我们首先拉取一下云端的代码,这是为了防止当云端代码发生变化后导致的问题,如果有其他人对云端代码进行了操作,这一步尤其重要,它的作用是将云端的代码变化同步到本地,防止代码上传到云端时出现代码冲突,也就是他人的变化和你的变化在同一个文件中,称为代码冲突,这种冲突在这一步时可能会被自动合并,也可能需要手动解决。

$ git pull 
// 拉取云端代码得到

然后我们使用git push将自己的代码推送到云端。在推送前一定要使用git add和git commit提交代码,否则会导致推送失败。

$ git push

现在,git的基本操作已经讲完了,你已经能够使用git进行基础代码管理了。

三 分支的创建、查看和删除

想象这样一个场景,我们有一个上线的产品需要添加一个新功能,我们每天都需要从本地将代码同步到云端以防止代码丢失,这个功能的开发周期是3个月,在开发到一半的时候,我们已经有多次上传行为了,这时插入功能b的开发,希望三天后上线。我们面对一个问题,现在我们需要上线原功能和功能b的组合,但是原功能代码已经被功能a污染了,所以我们至少要保留一个代码版本,这个代码版本和当前线上产品版本保持一致。
这里就需要引入分支来解决。 分支是为了将修改记录的整体流程分叉保存。 分叉后的分支不受其他分支的影响。
我们使用操作来认识分支。
首先我们使用git branch查看分支。

$ git branch
* master

这里返回master代表当前代码仓库有一个叫做master的分支,master前面的*代表当前分支是master分支。
我们可以使用git branch开启新分支。

git branch text

然后我们再次查看分支。

$ git branch
* master
  text

可以看到当前项目多了一个叫做text的分支,这个分支是以当前分支为模板复制出来的。
我们给当前目录添加一个图片文件,然后使用git add,git commit提交。

$ git add .
$ git commit -m 'feat: init2'

我们可以使用git log查看提交记录,可以看到我们已经提交了两次。

$ git log
// 展示两条提交记录

这时候我们通过git checkout切换到另一个分支。并查看提交记录。

$ git checkout text
Switched to branch 'text'
$ git branch
  master
* text
$ git log
// 展示一条提交记录

可以看到,星号出现在text前面,表示当前是text分支,git log表示目前该分支只有一次提交记录,因为text分支是在master提交一次后建立的,后续在master上的提交与text分支无关。
现在我们有了自己的分支,但是在这时使用git push提交到云端会失败,因为云端是没有这个新分支的,我们需要在云端建立新分支并推送。

git push origin 新分支名字

当分支被废弃的时候可以删除。
因为无法删除当前分支,所以删除分支前要先切换到其他分支。
删除本地分支:

 $ git branch -d 分支名字

删除远程分支:

$ git push origin --delete 分支名字

如果遇到git branch -d 分支名字删除失败,可能是因为该分支未合并到主分支,如果直接删除会造成代码损失,确定删除可以使用强制删除命令git branch -D 分支名字删除。

$ git checkout master
Switched to branch 'master'
$ git branch
* master
  text
$ git branch -d text
Deleted branch text (was e8a9d13).

四 git必备套路

4.1 已经push的commit如何修改message

首先我们使用git log查看一下历史记录。

$ git log
// 展示两条提交记录 feat: init 和 feat: init2

1
修改历史提交记录要使用rebase命令,如果你仅修改最近一次的提交信息,仅执行第二步即可。

$ git rebase -i HEAD~2 
// 上述命令为展示最近2条提交记录等待修改,注意此时提交记录要大于2次,否则异常
pick f141a06 feat: init1
pick f141a05 feat: init2
...

rebase命令提交后出现大屏文字,我们只要注意上面的几行即可。
上面的几行分为3列, 左边第一列表示命令(command),中间一列表示commit id,最右边一列是我们之前提交的message。
这时我们可以看到一个闪烁的光标,点击i后,可以将光标移动到对于记录的第一列位置,将pick更改为edit。
后先按Esc键退出当前模式,按大写两次Z进行保存退出。
保存完了之后,git的分支就会发生改变,从原来的master改成了我们第一个edit的commit id,使用git branch后可以看到分支已经改变到一个新的rebasing master。
2
我们可以在这里对提交记录进行改变。

$ git commit --amend

这时会刷出一屏文字,文字最上方是该次提交的massage,修改即可。
修改过程还是按i进入修改模式,移动光标到对应位置修改内容,点击esc推出编辑模式,使用ZZ保存后退出。
这次记录修改完成啦.
3
我们输入命令$ git rebase --continue, 现在分支号又发生了改变,表示我们要对第二个标记为edit的commit进行修改。
接着再重复上面的操作, 全部修改完成后,输入命令$ git rebase --continue, 会提示Successfully rebased and updated refs/heads/master.。
这时输入git log查询历史记录,massage已经修改了。
修改massage后,在推送到远程服务器时,要使用git push -f推送, 否则我们edit的commit会添加到commit后面, 而不是更新原commit。

4.2 怎样将连续多个commit整理成一个

开发中我们会不断commit代码,比如我们刚刚提交完代码,ui过来说,这个字号不对,我们只好打开代码修改字号,后又提交了一次,这种情况导致我们一天可能多次提交代码,比较乱。
然而实际上我们每天只要在工作结束后提交一次即可,这种情况下,我们就需要将连续多个commit整理成一个。
我们使用git log看到,当前我们有3次提交记录。
我们还是进入刚刚的rebase修改页面。

$ git rebase -i HEAD~2

// 上述命令为展示最近2条提交记录等待修改,注意此时提交记录要大于2次,否则异常

pick f141a06 feat: init1
pick f141a05 feat: init22
...

下面我们将init1和init22整理成一个提交记录。
点击 i 进入编辑模式,将feat: init22记录前面的pick修改为s,点击esc退出编辑模式,输入ZZ保存并退出。
这时弹出新的页面,我们点击i进入编辑模式,在this is the 1st commit message下一空白行输入注释内容, 点击esc退出编辑模式,输入ZZ保存并退出。
这时使用git log查看记录,发现commit已经被合并了。

–未完待续–

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值