一文读懂 Git GitHub Gitee(码云)的操作

什么是 Git

Git 简单来说,就是一个分布式版本控制软件。

分布式版本控制,特点就是分布式和版本控制。

版本的概念很好理解,就是每个软件上线的时候,都会有一个版本号,随着软件不断增加功能或者修复以前残留的漏洞,会不断更新软件的版本,如微信一开始的版本为 v1.0.0,后面随着功能的不断增加,优化,现在我们微信的最新版本一般为 v8.0.2

 

而分布式是一种去中心化的架构,每个开发者本地主机上都保留有一份完整的代码,开发者加入这个项目的时候,先从远程仓库克隆一份代码,在此基础上进行编程,并且把自己更新后的内容提交到远程仓库中。

Git 的发明者是林纳斯托瓦兹(Linus Torvalds),也就是发明了 Linux 操作系统的大神。

林纳斯于2005年发起了开源项目 Git ,最初的目的是为了更好地管理 Linux 内核的开发,后来 Git 变成了最受程序员欢迎的版本控制工具。

 

GitHub Gitee (码云)

GitHub 是世界上最大的存放代码的网站和开源社区。有许多大名鼎鼎的开源项目的源代码都托管在了 GitHub 上,如安卓系统的源代码,比特币的源代码,战胜了李世石的人工智能  AlphaGo 的源代码等等。

由于 qiang 的原因,在国内访问 GitHub 经常会遇到访问不上的情况,特别是从 GitHub 克隆代码的时候,下载速度特别慢。

于是,国内也开发了一个功能类似于 GitHub 的开源社区 Gitee,也就是码云,方便国内的程序员把代码开源到互联网上。

下面就来介绍 git 的一些操作:

1 查看 git 的配置清单:

git config -l

如图,利用这个命令,可以查看 git 的一系列配置。

 

2 清屏

clear

 

3 查看系统的配置清单

git config --system --list

4 查看本地的配置清单

git config --global --list

5 配置文件的位置

git 的配置文件一般位于 C:\Users\操作系统用户名下。

6 配置全局的用户名和邮箱

# xxx 用户名
git config --global user.name "xxx"
# xxx@xxx.com 邮箱
git config --global user.email xxx@qq.com

7 git 的区域分配

Workspace:工作区,就是你平时存放项目代码的地方。

Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表的信息。

Repository:仓库区(本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本。

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

8 git 的工作流程

git 的工作流程一般是这样的:

1、在工作目录中添加、修改文件。

2、将需要进行版本管理的文件放入暂存区域。

3、将暂存区域的文件提交到 git 仓库。

因此,git 管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(commited)

将需要进行版本管理的文件放入暂存区:

# .代表add所有,如果指明要提交某个文件,就 git add filename
git add .

将暂存区的文件提交到本地仓库:

# 附加说明信息: -m "xxx"
git commit -m "xxx"

 

 

9 git 项目搭建

工作目录(Workspace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文命名。

日常最经常使用的是如下几个命令:

 

10 测试 Git Gitee 

1)初始化项目:

git init

可以看到项目下面生成了一个初始化隐藏文件夹 .git

2)直接克隆一份远程的仓库到本地:

码云:

随便打开一个开源项目,然后点击 克隆/下载 复制该项目的链接,进行克隆操作:

git clone https://gitee.com/Camemax/kuangshen-spring-cloud-config.git

GitHub:

 

11 git 文件操作

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没有提交上。

git 的文件操作有四种状态:

Untracked:未跟踪,此文件在文件夹中,但并没有加入到 git 库,不参与版本控制。通过 git add 状态变为 Staged

Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两种去处,如果它被修改,而变为 Modified。如果使用 git rm 移出版本库,则成为 Untracked 文件。

Modified:文件已修改,仅仅是修改,并没有进行其它的操作。这个文件也有两个去处,通过 git add 可进入暂存 Staged 状态,使用 git checkout 则丢弃修改国,返回到 unmodify 状态,这个 git chekout 即从库中取出文件,覆盖当前修改!

Staged:暂存状态。执行 git commit 则将修改同步到库中,这时库中的文件和本地又变为一致,文件为 unmodify 状态。执行 git reset HEAD filename 取消暂存,文件状态为 Modified。

1)查看文件状态:

git status

 

如图所示:文件 test.txt 和文件夹 testGitClone 为 Untracked 状态,没有被加入暂存区中。

add 后,文件由 Unmodify 状态变为 Staged 状态。

 

修改了文件 test.txt 后,提示使用 git add filename 将修改同步到暂存区中,或者 git checkout filename 将暂存区的文件覆盖本地文件,即修改失效。

 

git checkout filename

可以撤销对 test.txt 的修改(修改未被 add 到暂存区)

 

修改后的文件,可以使用 git add 把文件的修改更新到暂存区。

2)从暂存区提交到本地仓库:

 

 

git commit -m "message" # 跟上提交的信息

12 忽略文件

在主目录下建立 .gitignore 文件,此文件有如下规则:

1)忽略文件中的空行或者以井号(#)开始的行会被忽略。

2)可以使用 Linux 通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([ ])代表可选字符范围,大括号({ })代表可选的字符串等。

3)如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

4)如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

5)如果名称的前面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

 

13 使用码云

1)生成公钥

路径:

id_rsa 私钥

id_rsa.pub 公钥

如果没有 id_rsa 和 id_rsa.pub 文件,则需要在 .ssh 目录下进行 cmd 操作

命令为:

# -t rsa 表示公钥的加密方式
ssh-kegen -t rsa 

 

把公钥(本地的 id_rsa.pub 文件内容)粘贴到该位置:

 

2)设置用户名,邮箱

git config user.name "Doflamingo"
git config user.email "xxx@qq.com"

3)设置远程 Gitee 仓库

# xxx Gitee 的用户名
git remote add gitTest https://gitee.com/xxx/demo-test.git

 

4)查看远程仓库的映射

5) 把本地仓库推送到远程仓库

# 从 master 分支 push 到远程仓库 gitTest
git push gitTest master

14 git 分支

# 列出所有的本地分支
git branch

# 查看远程的分支
git branch -r

# 新建一个分支,并且停留在当前分支,如新建一个分支名为 mingo
git branch mingo

# 切换分支到 mingo
git checkout mingo

# 新建一个分支,并切换到该分支
git checkout -b [branch-name]

# 删除本地分支
git branch -d [branch-name]

#删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

# 合并指定分支到当前分支
git merge [branch-name]

 

分支的冲突

 

如果多个分支并行执行,就会容易导致代码冲突,也就是同时存在多个版本,如:

web-api A

web-admin B(B调用A,过程中修改了A的代码)

web-app C(C调用A和B,过程中修改了B的代码)

如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交,选择要保留他的代码还是你的代码。

master 分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的 dev 分支上工作,工作完后,比如要发布,或者等 dev 的代码测试稳定后可以合并到主分支 master 上来。

 

 

从远程分支拉取到当前分支

 

# worktogether 远程仓库 dev 远程仓库的分支
git fetch worktogether dev

从远程分支拉取到当前分支并与当前分支合并

git pull worktogether dev

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值