Coding.net 与Git 入门

1、注册

如果用微信直接注册,用户名会自动分配,不建议。

2、新建项目

3、Git 代码托管

3.1 安装设置Git

3.1.1 Mac 下安装Git

新版 Mac OS 自带 Git ,在终端输入$ git --version可以查看当前Git 版本。

如果系统没有自带Git,会弹出请求安装,点击“安装”即可。

安装的软件为Command Line Tools for Xcode(这个工具包含在Xcode 中,如已安装Xcode,则已有这个工具)。

安装完成后,在终端输入$ git --version可以查看当前Git 版本。

3.1.2 用户信息设置

安装完Git 后应该及时设置你的用户名与邮件地址(即你在coding.net上注册的用户名和邮件地址),此后每次Git 的提交都会使用这些信息。在终端输入以下命令即可设置你的用户信息。

$ git config --global user.name "你的名称" 
$ git config --global user.email "你的邮箱"

3.2 SSH 公钥设置

需要注意,下面设置的公钥是账户SSH 公钥,是跟用户账户关联的公钥,一旦设置,就拥有账户下所有项目仓库的读写权限。

3.2.1 生成公钥

打开命令行终端输入:
ssh-keygen -t rsa -C "your_email@example.com"( 你的邮箱)
连续点击 Enter 键即可。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 
# Creates a new ssh key, using the provided email as a label 
# Generating public/private rsa key pair. 
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] // 推荐使用默认地址 
Enter passphrase (empty for no passphrase): //此处点击 Enter 键即可,也可以填写密码,填写密码后每次使用 SSH 方式推送代码时都会要求输入密码,由于这个 Key 也不是用于军事目的,所以也无需设置密码。

成功之后显示如下信息:

Your identification has been saved in /Users/you/.ssh/id_rsa. 
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub. 
# The key fingerprint is: 
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
3.2.2 添加公钥

1、在终端输入open ~/.ssh用文本编辑器打开『id_rsa.pub』文件,复制其中全部内容

2、登录Coding.net,进入『SSH 公钥』页面,点击『新增公钥』

3、将第一步中复制的内容填写到『公钥内容』一栏,公钥名称可随意填写

4、设定公钥有效期,可选择具体日期或设置永久有效

5、点击『添加』,然后输入账户密码即可成功添加公钥


6、完成后在命令行测试,首次建立链接会要求信任主机


3.3 Git 仓库管理

3.3.1 Coding 仓库和项目的关系

Coding 上的一个项目对应一个Git 代码仓库,创建项目即创建Git 仓库,项目地址即Git 仓库地址。

项目/仓库地址:
HTTPS方式 https://git.coding.net/用户名/项目名.git
SSH方式 git@git.coding.net:用户名/项目名.git

注:以上讲的仓库为coding.net 的云端仓库。

3.3.2 本地仓库

1、创建本地仓库$ git init
此操作会在当前目录下创建本地仓库,生成.git文件夹。
Mac 终端默认的当前目录为:/Users/当前电脑用户名/

2、克隆远程仓库到本地$ git clone <url>
Mac 默认的本地仓库存放路径:/Users/当前电脑用户名/项目名/

此操作会在本地路径“/Users/当前电脑用户名/”下创建以“项目名”为名称的子路径。

注:在进行后续操作前,需在命令行终端中切换工作目录到仓库的本地路径“/Users/当前电脑用户名/项目名/”。

3.3.3 远程仓库

1、创建远程仓库,即在coding.net 上创建项目。

2、给远程仓库一个别名,使用
$ git remote add <remote-name> <url>
这里设置的别名“remote-name”相当于默认名称“origin”。

接下来用$ git remote -v命令来查看当前添加的远程仓库,以检查设置的别名。

3、从远程仓库获取数据$ git fetch <remote-name>

注:
1> 需先切换到本地仓库的路径,再执行设置别名,fetch 等操作。

2> 设置别名后,别名与origin有同样作用;看起来fetch 无法下载远程仓库中的最新的文件到本地。

3> pull 可以下载最新的文件到本地。

4> 推送数据到远程仓库

使用$ git push <remote-nam> <branch-name>可以将本地仓库中的数据推送到远程仓库。

补充:关于fetch无法直接下载最新的文件到本地。
一般认为fetch+merge=pull,即执行fetch后,必须执行merge,才能在本地获得最新的云端文件。但是等号前后的两种操作,虽然表面上结果一致,但是内在机制并不相同,详细参考这篇文章

如需将云端最新的master分支更新到本地,则先git fetch <url>,再git merge,注意此处merge后并不跟分支名,因为是master分支。

3.4 提交文件到远程仓库

3.4.1 管理本地仓库文件

简单的描述,在Git 中文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed);用Git 管理文件也可以简单的理解为三个步骤:修改文件、跟踪文件、提交文件。

已修改(modified) ———— 表示修改了文件,但还没保存到数据库中
已暂存(staged) ———— 表示对一个已修改文件的当前版本做了追踪,使之包含在下次提交的快照中
已提交(committed)———— 表示数据已经安全的保存在本地数据库中

初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。 在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。

1、修改文件

在项目所在的本地目录内,新建一个子目录learn-git,新建learn-git.txt文件,在其中写入“I'm learning git.”这句话并保存。

2、跟踪文件$ git add <文件名>

创建文件和修改文件后需要把文件添加到仓库,即对文件进行跟踪。一次性把一个文件或多个文件添加到仓库都可以,用到的命令都是 git add。

添加一个文件时直接在终端输入 git add 后面空一格输入完整的文件名(包含后缀,如.txt):$ git add learn-git.txt

添加多个文件也类似,git add 后面空格输入完整的文件名,文件名之间用空格分隔。

添加当前仓库里的所有文件时,直接在终端输入git add .,注意此处末尾的.不要遗漏。

注:
1> 在添加文件前,一定要在命令行终端中,先切换路径到文件所在目录。
2> 添加文件后,最好再切换路径到项目的主目录。

3、提交文件$ git commit -m "描述性文字"

git commit命令把文件提交到仓库,一次性会提交所有你已经添加的文件:$ git commit -m "wrote a learn_git file"

提交命令为git commit,-m后面引号中的内容是你的提交说明,执行后下面会出现几行返回结果。每次提交文件时都写个提交说明,以便清楚地了解做了什么修改。

4、查看文件状态$ git status

如何知道一个文件处于哪种状态?使用git statu命令查看文件状态。

$ git status

使用Git 管理文件时,每次结束工作前请依次执行git add 和git commit 命令,将文件提交到仓库。

注:以上的操作都是针对本地仓库,所谓的提交到仓库,也是指本地仓库。

3.4.2 推送文件到远程仓库

1、在终端运行命令git push,将文件推送到远程仓库。

$ git push origin master

git push 是推送命令,实际上是把本地的master 分支推送到了远程仓库,相当于在远程有了一个代码仓库的备份。

使用 Git 管理文件时,每次结束工作前请依次执行git add、git commit 和git push 命令将文件推送到远程仓库。

3.5 分支管理

3.5.1 本地分支管理

1、创建分支$ git branch <分支名称>

在本地终端运行 git branch『分支名称』 新建一个分支,如新建一个名为『learn-branch』的分支命令如下:
$ git branch learn-branch

2、查看分支$ git branch

创建完分之后使用git branch命令查看分支:

$ git branch 
* master 
learn-branch

可以看到『 master 』分支上有一个『*』,说明当前是处在『 master 』分支上,也就是说创建完分支后需要我们手动切换到『learn-branch』,

3、切换分支$ git checkout <分支名称>

使用git checkout 『分支名称』命令:

$ git checkout learn-branch 
Switched to branch 'learn-branch'

再使用git branch命令查看,会发现已经切换到『learn-branch』分支。

4、创建和切换分支$ git checkout -b <分支名称>

创建和切换分支两条命令可以合起来,使用git checkout -b『分支名称』命令可以创建一个分支并切换到此分支上。

5、合并分支

1> 快进模式合并
快进式合并分支,也叫『Fast Forward』,简单的理解就是当要合并的分支和目标分支之间没有冲突,只是多做了一些修改时就会采取『Fast Forward』模式。

例如,我们切换到新建的『learn-branch』分支上,对『learn-git.txt 』文件加一行文字:
I am learning to use git.

然后提交此文件:

$ git add learn-git.txt 
$ git commit -m "edit learn-git.txt" 
[learn-git fce6c4e] branch test 1 files changed, 1 insertions(+)

接着使用$ git checkout master命令切换回『 master 』分支,再查看『learn-git.txt 』文件,发现刚才添加的内容并不存在!因为那个提交是在『learn-branch』分支上,而『 master 』分支此刻的提交点并没有变。

现在,我们把『learn-branch』分支的内容合并到『 master 』分支上:

$ git merge learn-branch 
Updating ca62ea0..fce6c4e 
Fast-forward learn-branch.txt | 1 + 1 file changed, 1 insertion(+)

git merge命令用于合并指定分支到当前分支,示例中是把指定分支『learn-branch』合并到『 master 』分支上。

合并完成后会发现『 master 』分支上的『learn-git.txt 』文件内容和在『learn-branch』分支上编辑后的内容完全一样。此时如果想删除『learn-branch』分支,可以使用命令$ git branch -d 『分支名称』。

总结,快进合并步骤:
a. 切换到新建分支 git checkout
b. 修改文件
c. 跟踪文件 git add
d. 提交文件 git commit
e. 切换到master分支 git checkout
f. 合并新建分支到master分支 git merge

2> 普通模式合并
当要合并的分之和目标分支之间存在冲突,就无法使用快进合并模式,需要先手动解决冲突,再提交。

例如,我们先切换到『learn-branch』分支,在『learn-git.txt 』文件中写入下面文字并提交:
I am on "learn-branch" branch.

然后切换到『 master 』分支,在『learn-git.txt 』文件中写入下面文字并提交:
I am on "master" branch.

接着输入git merge learn-branch命令:

$ git merge learn-branch 
Auto-merging learn-branch.txt 
CONFLICT (content): Merge conflict in learn-git.txt 
Automatic merge failed; fix conflicts and then commit the result.

Git 返回结果提醒我们『learn-git.txt 』文件存在冲突,需要我们手动解决冲突。运行 git status命令,也可以看到出现冲突状况:

$ git status 
On branch master You have unmerged paths. (fix conflicts and run "git commit") 
Unmerged paths: (use "git add ..." to mark resolution) 
both modified: learn-git.txt 
no changes added to commit (use "git add" and/or "git commit -a")

现在我们打开『learn-git.txt 』,会发现 Git 加入了冲突解决标记:

<<<<<<< HEAD 
I am on master branch 
======= 
I am on learn-branch branch 
>>>>>>> learn-branch

可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时的工作分支)中的内容,下半部分是在 learn-branch 分支中的内容。解决冲突的办法无非是二者选其一或者人工亲自整合到一起。把上述内容修改为这样:
I am on master branch

接下来运行 git add 来告诉 Git 冲突已经解决,并运行 git commit 来完成合并:

$ git add learn-git.txt 
$ git commit -m "conflict resolved" 
[master cadd265] conflict resloved

总结,普通合并消除冲突步骤:
a. 切换到新建分支 git checkout
b. 修改文件
c. 跟踪文件 git add
d. 提交文件 git commit
c. 切换到master分支
d. 修改同一个文件
e. 跟踪文件 git add
f. 提交文件 git commit
g. 合并新建分支到master分支 git merge
h. 产生冲突
i. 手动修改文件,消除冲突
j. 跟踪文件 git add
k. 提交文件 git commit

3.5.2 Coding.net 在线分支管理

登录Coding.net,进入项目,根据页面提示即可操作:创建分支,切换分支,合并分支。

3.5.3 设置保护分支

开启保护分支后, 修改被保护的本分支时需先新建一个分支进行修改, 然后创建合并请求并邀请其他成员评审代码。 其他成员「允许合并」后可自行合并分支。

3.5.4 Coding.net 特色功能

1、通过命令行创建MR
2、“Merge Requset”中的代码评审
3、使用“#”符号引用资源
4、代码行级比对

4 项目管理

5 WebIDE

5.1 开启WebIDE

5.1.1 创建WebIDE 工作空间

每个 WebIDE 工作空间对应一个 Coding 项目,可以新建空白项目,也可以在新建时导入已有项目。

根据上面教程的操作,已经在coding.net 创建了远程仓库,则可以将其导入到一个新建的工作空间。

1、在项目页面上方,点击IDE。
2、在新打开页面,点击新建工作空间。
3、在“选择已有仓库”中,选择“GIt URL”,并填写现有项目的Git 仓库地址,点击导入。
4、即可进入该项目的WebIDE 工作空间。
5.1.2 WebIDE 的终端与Git 操作

1、WebIDE 终端

WebIDE 的终端是一个完整的 Ubuntu Linux Shell 环境,用户可以在里面执行任何 Linux 命令。初始的终端设置如下:

  • 系统为标准Ubuntu 14.04
  • 用户名和密码都是 coding
  • coding 用户具备 sudo 权限($sudo su可切换到root用户)

进入 WebIDE 工作空间,点击左下角『 Terminal 』即可打开 WebIDE 终端。

2、在终端进行软件安装

可以在终端运行 apt-get 来安装你想要的 Linux 软件,可以在/etc/apt/source.list 查看和修改apt的源。
➜ workspace git:(master) ✗ cat /etc/apt/sources.list

对于想要的软件用 apt-get install 安装, 比如安装npm:
➜ workspace git:(master) ✗ sudo apt-get install npm

3、在WebIDE 进行Git 操作

a. 在 WebIDE 的终端使用命令行进行 Git 操作。
b. 不熟悉命令行的用户可以在 WebIDE 顶部工具栏『版本』里进行相关的 git 操作。

5.2 在线编辑

WebIDE 提供一个功能强大的基于浏览器的在线编辑器,它支持代码提示、代码自动补全、文件编辑 tab (窗口)随意拖拽等功能,您还可以根据编辑习惯进行自定义。

1、编辑器设置

点击WebIDE 左上角的猴头图标,可以进入编辑器设置。

5.3 微信小程序开发

Coding WebIDE 已支持微信小程序的开发,开发者可在 WebIDE 的 Workspace 内完成小程序的开发、预览、上传代码等操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • 1.设置 初次使用需要设置姓名和邮箱git config --global user.name "git用户名"g...
    jrg陈咪咪sunny阅读 753评论 0 1
  • (1)oop与aop的区别: oop是面向对象编程,aop是面向切面编程或者面向方面编程.. (2)aop的用处和...
    海纳百川_4d26阅读 264评论 0 0
  • After having our second child, I was anxious to get home ...
    朱雯萱阅读 201评论 0 1
  • 乖乖,又要离开了!即使是千万的不舍,也无法改变这个事情了。 到8点还有两个小时了,乖乖。 那时的我就要坐在去昆明的...
    xiao钱钱阅读 627评论 0 0