【持续更新】git使用

205 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

参与的fullstackopen course作业需要用git管理,简单学习一下。

git初级使用

先简单理解下这个图

0.png

step 1.下载安装配置git

a.镜像源下载git

CNPM Binaries Mirror

b.安装git

$ git —version 查看是否安装成功

windows操作如果有错误:git不是内部命令 添加到环境变量

c.配置git

有引号,邮箱尽量保持和gitee/github的注册Email一致

$ git config --global user.name "你的名字"
$ git config --global user.email "你的Email"

step 2.创建本地仓库(Repository)

命令行cd 进到你的工作文件夹(Workspace)之后:

$ git init    //把本地文件夹初始化成git本地仓库(Repository)
$ git add .  // 把你项目文件全添加到暂存区(Index Stage)
$ git status  //这个就是看一下你变更了哪些文件,没有这句不影响啥
$ git commit -m "my first commit"  // 从暂存区提交到本地仓库(Repository)
  • 若.gitignore文件无效,解决方法:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
  • 若提交的仓库子文件中还有仓库,git提示使用submodule ,理解

step 3.创建远程仓库(Remote)并与本地仓库关联

a.在gitee创建仓库

注册账号,新建仓库,仓库起个名就行(最好与本地库保持一致),下面自动生成的三个文件先不选,创好仓库之后,建立连接需要两步:

b.设置SSH公钥

SSH key 可以让你在你的电脑和 Git @ OSC 之间建立安全的加密连接。

生成:

$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

打开id_rsa.pub,复制文件内容:

$ `cat ~/.ssh/id_rsa.pub` 

添加到gitee.com/keys

测试公钥是否添加成功:

$ ssh -T git@gitee.com

c.本地库连接到远程仓库上

$ git remote add origin git@gitee.com:xxxx/xxxxx.git

origin是你起的远程主机名,后面这个地址是你想要关联的远程仓库地址,用SSH协议 在这里找

查看远程主机名及地址:

$ git remote -v
origin  https://gitee.com/one-three-three-one/fullstackopen-course.git (fetch)
origin  https://gitee.com/one-three-three-one/fullstackopen-course.git (push)

上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址

step 4.仓库管理

a.分支

💡先明确一点: 不同分支上的操作并不互相影响

显示仓库有哪些分支:

$ git branch
* master

创建、切换到testing分支:

$ git branch testing
$ git branch
* master
  testing
$ git checkout testing
  master
* testing

以上也可一句:

$ git checkout -b testing
Switched to a new branch 'testing'

💡我们创建并切换到一个分支,在该分支上移除了一些文件 如test.txt,并添加了 runoob.php 文件,然后切换回我们的主分支,删除的 test.txt 文件又回来了,且新增加的 runoob.php 不存在主分支中。使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。

b.clone

刚才是我们在本地自己创建仓库并与远程库关联,如果我们想直接从远程主机克隆一个版本库:

$ git clone <版本库的网址>

该命令会在本地主机生成与远程主机的版本库同名的目录,并且所有本地分支默认与远程主机的同名分支建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。💡 默认只克隆master分支,想要clone指定分支:

$ git clone -b <指定分支名称> <版本库的网址>

稀疏检出模式 Git Sparse Checkout

$ git sparse-checkout init
$ git sparse-checkout disable
$ git sparse-checkout set <filename>

c.pull

取回远程主机某个分支的更新,再与本地的指定分支合并。完整格式:

$ git pull <远程主机名> <远程分支名>:<本地分支名>

举例说明:取回origin主机的next分支,与本地的master分支合并

$ git pull origin next:master

<本地分支名>什么时候可以省略? 当前分支就是要合并的分支 <远程分支名>什么时候可以省略? 当前分支与远程分支存在追踪关系,除了如上clone下来的库自动追踪,我们还可以手动建立追踪关系:

$ git branch --set-upstream master origin/next

<远程主机名>什么时候可以省略? 当前分支只有一个追踪分支

d.push

用于将本地分支的更新,推送到远程主机。完整格式:

$ git push <远程主机名> <本地分支名>:<远程分支名>

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。

$ git push --force origin master

一些很好的文档资源:

Pro git 菜鸟老手都适用的git使用教程

阮一峰的网络日志-git远程操作详解

An Intro to Git and GitHub for Beginners

可视化学习git操作