0


git 常用命令之 clone

大家好,我是 17 。

本文详细介绍 git clone 命令的使用方法和应用场景。

为了讲述方便 git 版本 2.32.1。环境为 linux centos 7。

在讲具体的命令之前,我们需要先看张图,理解了这张图,对于理解后面的命令会有帮助。

主要分三部分:远程仓库(remote),本地仓库(repository)和工作区(workspace)。本地仓库和工作区之间还有一个暂存区(index)。

远程仓库(remote):作用是同步代码。每个成员把自己的代码 push 到远程仓库,再从远程仓库 pull 来更新代码。

本地仓库(repository):做为分布式管理仓库的特点:每个本地仓库都拥有完整的代码和历史记录。保存记录的功能无需要联网,可以先保存在本地。 执行

git commit 

就是把代码提交到本地仓库。

工作区(workspace):对应的是本地分支代码,是我们平时写代码的地方。

暂存区(index):暂存区标记了当前工作区中那些内容是被 Git 管理的。

git add

会把内容加到暂存区。添加到暂存区不会有记录。我们的代码没有完成,可以先暂存,等差不多了,再提交。

建立远程仓库

为了能方便练习,最好能建一个远程仓库。

创建仓库

打开 https://gitee.com/projects/new gitee 的新建仓库页面

输入仓库名称 git-learn,其它的都可以不填,点下面的 “创建” 按钮。

新建成功后显示如下界面

点右边的复制按钮(红框内的图标)把地址复制下来,粘贴到 git clone 后面。

git clone [email protected]:iam17/git-learn.git

首次执行的时候,会问你

Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 回车,拉取失败了。

fatal: Could not read from remote repository.

因为我们用的是 ssh 方式,所以需要把公钥放到 gitee 上面。

生成公钥很简单,看这个 帮助页面

放好公钥后,再次执行clone 命令

git clone [email protected]:iam17/git-learn.git

warning: You appear to have cloned an empty repository.

输出个 warning,说 clone 了一个空的仓库,这个不用管它,本来就是空的。

你也可以用 github,不过可能会不打开,而且速度可能很慢。

git clone

执行 clone 命令默认会拉取远程仓库的所有内容。

git clone [email protected]:iam17/git-learn.git

clone 命令是一个复合命令,相当于连续执行了下面三个命令。

git remote add origin [email protected]:iam17/git-learn.git
git fetch
git checkout master

首先添加远程仓库 origin

origin 是约定俗成的远程仓库的默认名,没什么特别的含意。如果不满意,可以修改

git remote rename origin bananer 

没有特别的原因,这个名字最好别改。

然后从远程仓库拉取所有代码

所有远程分支在本地是只读的。可以查看已经拉取的远程分支

git branch --remote  或 git branch -r

远程分支存放在位置在

.git/refs/remotes/origin/

最后根据远程默认分支建立本地分支

远程分支是只读的,不能修改。要想在本地修改,需要建立本地分支。clone 命令默认会根据远程默认分支建立本地分支。

  cat .git/refs/remotes/origin/HEAD
  
  输出:ref: refs/remotes/origin/master

确认远程默认分支为 master 后,clone 命令接着建立本地 master 分支,并和远程 master 分支做关联。

clone 命令完成后,我们现在就可以在本地 master 分支修改,提交,最后执行

git push

,把 master 分支更新到远程仓库。

git push

是省略写法。因为现在只有一个仓库,本地 master 也只有一个远程跟踪分支。完整写法:

git push origin master:master

执行

git push

这个简写命令如果失败,请检查 git 配置

push.default=simple

git 的默认设置就是 simple。 如果没有动过,就不用管它。查看 git 配置:

git config --list

修改远程仓库的其它分支

如果想修改其它远程仓库的其它分支怎么办?很简单,只需要一句命令:

git checkout dev

这个命令完成了两项工作。

  1. 建立本地分支 dev
  2. 本地 dev 跟踪远程 dev

我们在本地分支 dev 下修改,提交,最后执行

git push

,把 dev 分支更新到远程仓库的 dev 分支。

git checkout 的分支必须已经 fetch 到本地,否则报错。可能得请先执行 git pull

新建远程仓库没有的分支

如果新建的分支远程仓库里没有,需要先新建本地分支。

# 建立本地分支 featuregit checkout -b feature

# 做修改,提交到本地. git commit ...# 提交到远程,会在远程新建 feature 分支git push --set-upstream origin feature 
git push --set-upstream origin feature

有两个作用

  1. 让本地分支 feature 跟踪远程分支 feature。
  2. push feature 到远程,远程仓库如果没有,新建。

你肯定好奇,如果远程仓库有 feature 分支会怎么样?那肯定失败。如果远程仓库有 feature ,请按上面的 “修改远程仓库的其它分支” 的方案执行。

git ls-remote ,这个命令直接访问远程仓库,查看获得远程分支的完整列表。根据这个列表,你就知道是新建还是修改了

按上面的方法来做,无需自己去设置跟踪分支,git 自动给你完成,push 、pull 命令也会简化。虽然在技术可以从一个远程分支 check 出多个本地分支,但在实操上不建议这么做。一个远程分支只 check 一个同名的本地分支。如果有多个任务同时进行,可以从这个本地分支 check 出多个分支。任务完成,所有分支合并到这个唯一本地跟踪分支,由这个分支同步到远程仓库。

clone 整个仓库

clone 命令默认是 clone 整个仓库。虽然有两个参数,可以 clone 部分仓库,

--depth

--single-branch

,但是对于新手来说,不要用这两个参数。因为设置这两个参数后, 大概率会影响后面的正常使用。收益只是首次 clone 的时候快一些而已,得不偿失。

如果仓库确实需要放很多很大的文件,可以考虑用中央式版本管理系统,比如 svn。

本文到这里就结束了,谢谢观看。

标签: git 前端

本文转载自: https://blog.csdn.net/m0_55635384/article/details/128964698
版权归原作者 IAM17前端 所有, 如有侵权,请联系我们删除。

“git 常用命令之 clone”的评论:

还没有评论