安装git

使用浏览器打开git官网下载git https://git-scm.com/

git 官方文档 https://git-scm.com/book/zh/v2

下载完成后按指引一步一步安装,安装完成后,电脑上会出现Git BashGit GUIGit Cmd菜单,即安装完成,打开cmd或者powershell,使用git --version名称查看版本信息。

# 设置自动转换crlf为false
git config --global core.autocrlf false

# 设置提交作者
git config user.name 你的中文名字

# 设置提交邮箱
git config user.email 你的公司邮箱

获取仓库权限

配置仓库SSH公钥

参考文档 https://help.coding.net/docs/repo/ssh/config.html

本地新建证书

window系统

打开cmd或者powershell 切换到.ssh目录 cd ~/.ssh 生成密钥公钥,将your.email@example.com替换成你的邮箱或者任何字符串都可以,主要是为了区分公钥

~\.ssh> ssh-keygen -m PEM -t ed25519 -C "your.email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\cbtpro/.ssh/id_ed25519): github.com
Enter passphrase (empty for no passphrase): 密钥密码
Enter same passphrase again: 重复密钥密码
Your identification has been saved in github.com
Your public key has been saved in github.com.pub
……

这时候当前目录下会生成两个文件github.comgithub.com.pubgithub.com保持在目录下不动,将github.com.pub里的内容复制到剪贴板。

# 复制文件内容到粘贴板
type github.com.pub | clip

打开 github公钥配置界面https://github.com/settings/keys,点击新增公钥按钮,公钥名称随便起,将复制的内容粘贴到公钥内容中,如果有设置公钥有效期的选项,建议设置成3-12个月后过期,点击确认。

mac/linux系统

打开任意终端 切换到.ssh目录 cd ~/.ssh 生成密钥公钥,将your.email@example.com替换成你的邮箱或者任何字符串都可以,主要是为了区分公钥

~\.ssh> ssh-keygen -m PEM -t ed25519 -C "your.email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\cbtpro/.ssh/id_ed25519): github.com
Enter passphrase (empty for no passphrase): 密钥密码
Enter same passphrase again: 重复密钥密码
Your identification has been saved in github.com
Your public key has been saved in github.com
The key fingerprint is:
SHA256:d1vIQHdMGPWh2jHhvj76pGkxRENnvJXTb0zTWBRYvE0 your.email@example.com
The key's randomart image is:
+--[ED25519 256]--+
|          o.+XBBB|
|         . +=+=BE|
|          o .=o+B|
|           ++oo.=|
|        S o.+o.. |
|         . + o.  |
|            +o   |
|           .=.   |
|          .+oo.  |
+----[SHA256]-----+

这时候当前目录下会生成两个文件github.comgithub.com.pubgithub.com保持在目录下不动,github.com.pub里的内容复制.

# 复制文件内容到粘贴板
cat github.com.pub | clip

将公钥配置到github中即可在本地电脑使用密钥进行版本控制,不用输入用户名和密码了.

如果本机有多个不同的证书,同时需要对github、gitee、coding.net、gitlab,可以在~/.ssh目录下新建一个config文本文件,内容如下,将IdentityFile配置你的用户名替换成你自己的用户名,mac、linux需要对IdentityFile路径进行相应的修改。

# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile C:\Users\你的用户名\.ssh\gitee_id_rsa

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile C:\Users\你的用户名\.ssh\github_id_rsa

开发人员常用git操作

日常开发需要关注的部分

dev-->Feature:git checkout -b some-feature develop
Feature-->local仓库:
local仓库-->Feature:git add ./git add some-file.js/git commit
Feature-->dev:git checkout dev/git merge some-feature

新增和修改文件后,需要提交到本地some-feature的仓库

#慎用git add .,会把所有的有更改的文件提交到staged中
git add src/App.vue
git commit # 按规范填写注释

保持本地开发代码是最新状态的

git pull origin dev

合并some-feature到开发分支

git checkout dev  #将本地仓库切换到dev
git merge some-feature  #合并some-feature到dev
git push  #提交到dev的远程仓库

最后回到some-feature分支继续开发

git branch -d some-feature

当执行merge操作的时候,git已经从some-feature拉了一条线到dev上。

发布release版本

release版本是从dev分支上checkout代码,基本上不会每天操作,有大的发布计划的时候才需要去执行

git checkout -b release-0.1 develop

此时不能有新功能的提交到dev中,这个操作对应项目开发中的发布阶段,所以不在这个发布阶段的功能,应该都在下一个迭代中提交。

改善git操作

修改个人信息

git config --global user.name "chenbitao"
git config --global user.email "chenbitao@sz-rst.com"

合并代码

网页创建merge request

将本地的代码push后,就可以在仓库页面上点击Create merge request按钮,仔细阅读页面的内容。

New Merge Request From dev to master Change branches

如果合并方向错了,点击Change branchs就可以重新设定合并方向。

  1. 如果需要有人帮你进行code review,请选择Assignee。
  2. 如果这次合并是一个重大的版本,可以选择一个里程碑
  3. 如果这次合并跟issue相关,可以选择label来区分是新特性还是bug修复。
  4. 默认情况下请不要勾选提交合并后删除源分支,如果有删除需求,请手动删除。

Commit/Changes可以查看修改和提交记录。

点击submit merge request进行下一步:再确认。这一步如果有配置代码检测工具,请稍等片刻。Merge按钮变绿后,就可以点击Merge完成合并了。

如果在没有其他提交的情况下,可以点击Revert进行还原。

使用Cherry-pick可以重提交中重新挑拣部分修改创建一个新的request。

当然也可以在这个页面进行互动,点赞、踩评论。

分支合并到另一个分支

从dev合并到master

git checkout master
git merge dev

从dev合并文件到release

git checkout release
git checkout --patch dev package.json

从dev分支合并几个文件到release分支

git checkout release
git checkout --patch dev package.json src\Index.vue

更改本地commit注释

已经commit但是还未push到服务器的,仍然是可以添加新的文件和修改注释的。

git commit --amend

回退到某个版本号[^注意]

git reset --hard 【merge前的commitid】

将已经commit但未push的代码重新放入暂存区

git reset commit前一个commitid

删除本地的远端已经删除的分支

# 显示远程分支和本地分支
git remote show origin
# 删除远端已经删除的分支
git remote prune origin

删除本地分支

git branch -d 分支名(remotes/origin/分支名)

强制删本地

git branch -D 分支名

删除远程分支

git push origin --delete 分支名(remotes/origin/分支名)

远端分支被重命名了

如果你有本地clone远端被重命名的分支,可以用下面的命令来更新本地clone

git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a