下载git bash
如果是局部设置,存在.git/config里
查看某一项
git config user.name
git config user.email
查看全部:
git config --list
git config --global user.name "名字"
git config --global user.email "邮箱"
如果去掉 --global
就是只对当前有效
以 v2rayN 为例,通常是 10808 端口,可以窗口在右下角看。clash 的话页面首页有port,一般是7890
git config --global http.proxy sock5://127.0.0.1:10808
git config --global https.proxy sock5://127.0.0.1:10808
或 socks,具体看 v2nray 等软件的提示。实测这里要两个都是 socks,也可能是 10809
取消:
git config --global --unset http.proxy
git config --global --unset https.proxy
查询:参考
git config --global --get http.proxy
git config --global --get https.proxy
忽略证书错误:
git config --global http.sslVerify "false"
增加缓存:
git config --global http.postBuffer 524288000 #500MB
尝试ping:
ssh -T [email protected]
git config --global color.ui true
git config -e --global
去掉global就是只对当前生效;会打开一个文件让编辑,可通过这个方式找到目录路径
类似于C的#define
git config --global alias.别名 全称
例如:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
设置Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置::
git config --global core.editor emacs
windows,记事本:
git config --global core.editor "notepad"
还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
git config --global merge.tool vimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。
当然,你也可以指定使用自己开发的工具
右击 git bash 的窗口顶部栏行弹出菜单 options,可以修改字体大小等选项
如果本机没有密钥,将无法远程操作,可以先生成一个
ssh-keygen -t rsa -C "邮箱"
之后一路回车
可以 -f
加上保存路径,如:
ssh-keygen -t rsa -C "[email protected]" -f lr581
注意一个 github 账号的公钥不能跟别的账号一样
用户目录有.ssh目录就有。
C:\Users\用户名\ 是用户目录
该目录下id_rsa是私钥;id_rsa.pub(全文)是公钥。
登录账号, account, settings, 在 ssh and gpg keys
,在里面加
可以检查是否加上了:
ssh -T [email protected]
gitee同理
可以查看自己的用户名
默认路径为c:/Users/$电脑用户$/
cd 路径
类似cmd,但盘符要用cd d:的方法
返回上一级用cd ..
找到git bash的快捷键,修改属性-快捷方式,把目标引号后面的内容去掉,把起始位置设为自己想要的路径,如:
目标 "D:\Program Files\Git\git-bash.exe"
起始位置 D:\_lr580\program\wx\game\fbmg
mkdir 文件夹名
cat 文件名
读多个文件,中间不会有任何换行。
pwd
ls
ls -ah #隐藏文件也列出
ls 文件夹 #列出该文件夹下文件,如ls drt/
rm 文件名
git grep 字符串
通过配置,让 git 忽略一些文件
.gitigore
文件放到代码仓库
配置语法:
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
例如:
/bin/*
*.log
abc/*
!/abc/special.txt
/bin/
是当前开始;若bin/
是全体文件夹(只要是这个名字,不管是不是嵌套在别的里边)删除一个文件夹的其他文件,但是允许文件夹里一个文件的格式:(必须要 *)
models/* !models/info.txt
删除全部文件,但是保留一个文件夹下的全部文件
* !.gitignore !imgs/ !imgs/*
配置完毕后进行更新:(不然新删的可能无法追溯)
git rm -r --cached .
git add .gitignore # 或者直接跳第三行也行
git add .
git commit -m "..."
反义是 .gitkeep
。
在子目录的 .gitignore
也会生效,上面写的配置项基于子目录相对路径
检查:
git check-ignore -v front/.vscode/extension.json
如果应该被 ignore,就会输出内容
git init
将当前目录变成git仓库
也可以指定一个目录初始化:
git init 目录名
新建的或修改的文件或文件夹,需要确认更新,从工作区放到暂存区
git add 文件(夹)名 #可以多个参数
一次修改后add,如果继续修改,然后commit,继续修改的内容不会被提交。
git add .
上面命令会更新当前目录下的全部内容。撤销 add:
git restore . # 对文件和git生效
git restore --staged . # 只对 git 生效
git rm 文件名
从暂存区删除文件(实际磁盘也会删除)
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可
可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件 -m
,如:
git rm -r *
删除撤回:
git reset HEAD . git checkout -- .
移动或重命名文件,目录,软连接
git mv [file] [newfile]
已经存在,仍要重命名,可以 -f
将所有暂存区的提交正式保存
git commit -m "版本信息"
在 Linux 系统中,commit 信息使用单引号',Windows 系统,commit 信息使用双引号"
同理在 -m
之前可以枚举多个文件,即只 commit
这些文件
不写 -m
会让你打开一个编辑器写提交信息
-a
参数设置修改文件后不需要自行 git add
命令直接提交:
git commit -a
可以组合,即 -am
--amend
用于修改上一次提交的备注,同时会改变id
git commit --amend -m 'xxx'
git checkout -- 文件名
工作区的修改全部撤销。暂存区的不会被撤销。工作区被修改意味着你当前所做的内容被自动覆盖为暂存区内容了。
如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
git reset HEAD 文件名
把暂存区的修改撤销掉。工作区不变,意味着你现在做的内容不会被覆盖。
如果已经commit但未提交版本库,用版本回退。
交互式回退,找到刚错误提交的 commit 号,如:
git rebase -i 67abfad^弹出一个文件,刚刚的 commit 如果是
pick 67abfad xxx
,修改为edit 67..
,保存。然后在 git 里继续,删除就
git rm xxx
,如git rm yolov8n-cls.torchscript
然后提交
git commit --amend git rebase --continue
如果已经提交远程库,无力回天。
reset 的三个参数: --soft, --mixed, --hard
默认是 --mixed
,重置暂存区文件和上一次提交保持一致,工作区保持不变
--soft
回退到某个版本
--hard
撤销工作区所有未提交的修改内容,暂存区、工作区都回退到上一个版本,然后删除之前的所有提交信息
特别地,HEAD~n
是上 HEAD^
默认是 HEAD~1
,特别地 ~0
是当前版本; ~n
等效于 ^
例如:
git reset --hard origin/master
git reset --hard HEAD^3
git revert dfb02e # 撤销提交
git status
查看有哪些文件被修改过,与commit版本不同
缩略版:
git status -s
其中:M是更改,A是增加了,AM是增加后又更改了
git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥
git diff 文件名
查看与已add相比,当下的异同
git diff 版本号1 版本号2 文件(夹)
版本2为新,版本1为旧,查看更新,如:
git diff HEAD HEAD^
在分支里特别有用
记得按enter继续显示,按q退出显示
可以显示暂存区(即add的内容)和上一次提交的差异:
git diff --cached [file]
或
git diff -staged [file]
也可以不指定文件
可以显示摘要:(修改的文件和行数目)
git diff --stat
可以查看已缓存的和为缓存的区别:
git diff HEAD
git log
从近到远查看commit日志
查看完毕按q退出
git log --pretty=oneline
日志显示在一行
git log -1
查看最后一次日志
用 --oneline
选项来查看历史记录的简洁的版本
用 --graph
选项,查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项
用 --reverse
选项逆向查看(由远到近),不能跟 --graph
合用
用 -n
只查看最近的 --reverse
也是)
用 --author 人
只查看某人提交的代码
用 --since
和 --before
指定日期,可以执行几个选项,但是你也可以用 --until
和 --after
,可以跟 ={年-月-日}
或其他格式
用 --no-merges
选项以隐藏合并提交
用 --stat
还能统计各文件增删数目
用 -p
还能具体罗列修改了什么(增删)
用 -m
使得 merge 跟常规 commit 显示一样
如:
git log --oneline --reverse
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
合并历史:
git log --graph --pretty=oneline --abbrev-commit
git show master@{yesterday}# 显示master分支昨天的状态 git whatchanged # 显示提交历史对应的文件修改
git reflog
可以查看各个版本号
记录的命令有:
- commit
- reset
- checkout
- merge
git rebase
列表查看指定文件历史修改记录
git blame 文件名
列出 git index
包含的文件:
git ls-files
git reset --hard 版本
版本HEAD是当前版本,HEAD^上一版本,上上^^,上若干个HEAD~n,n是整数
也可以写版本id,不用写全,但是不能写太少(即便你认为已经唯一了),大概五位即可。
回退后该版本以后版本不可访问,但在未关闭git之前,可以用git 版本号回撤
添加SSH到远程仓库如github
git remote
查看所在目录的git有多少个远程仓库
查看详细权限
git remote -v
有push权限和fetch权限。
显示某个远程仓库的信息
git remote show 地址
测试连通性:
git ls-remote 远程仓库名
在本地仓库目录下运行:
git remote add 远程仓库名 [email protected]:github用户名/git仓库名(.git)
如:
git remote add origin [email protected]:michaelliao/learngit.git
分支:
git checkout -b 本地分支名 远程仓库名/远程分支名
使用 -m
绑定别的分支,例如如果别人的代码不是 master 分支是 main 分支,可以:
git remote add origin [email protected]:lr580/learn_pull_request.git -m main
git switch main
几种效果等价的git clone写法:
git clone http://github.com/CosmosHua/locate new git clone http://github.com/CosmosHua/locate.git new git clone git://github.com/CosmosHua/locate new git clone git://github.com/CosmosHua/locate.git newgit clone 时,可以所用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码
git clone [email protected]:fsliurujie/test.git #SSH协议 git clone git://github.com/fsliurujie/test.git #GIT协议 git clone https://github.com/fsliurujie/test.git
git remote set-url 远程仓库名 新URL(https或ssh)
git remote rm 远程仓库名
git push 远程仓库名 本地分支名
如果是第一次推送,加-u(则以后可以简写git push)(全称是 --set-upstream
)
在初始化后,需要通过add,commit后才能进行push,否则会报错。
第一次在github推送,会有一个警告验证key,输入yes即可
git push 远程主机名 本地分支名:远程分支名
当且仅当本地名字和远程分支名字同名,可以省略冒号。如果远程分支不存在会新建。
git push origin master:notes #例子,本地master命名为远程notes
如果不行,输入完整格式,如把本地当前分支推送到远程
traps
,如果没有远程那个分支就新建:git push origin HEAD:refs/heads/traps
强制推送:--force
删除远程的主机的一个分支:--delete
git push origin :hotfixes/BJVEP933 # 删除远程仓库的hotfixes/BJVEP933分支 git push --tags # 把所有tag推送到远程仓库
time out 无法 push,可以 ping 通的一种解决办法 参考
找到C判用户文件夹
.ssh/config
,追加:Host github.com User YourEmail(你的邮箱) Hostname ssh.github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa Port 443
测试并输入yes:
ssh -T [email protected]即可。
git pull 远程仓库名 远程分支名
本质是
git fetch
加上git merge FERCH_HEAD
git fetch 远程仓库名
可以拉取特定一个远程仓库,或git fetch 远程仓库名 远程分支名
把远程仓库的分支合并到当前分支
也可以直接拉网站,如:(点下载那里可以复制 ssh 地址)
[email protected]:985892345/ExpressManagementSystem.git
如果获取失败,要指定本地分支和远程分支的链接
git branch --set-upstream-to=远程仓库名/远程分支 本地分支
或:
git fetch --all
git pull 远程仓库名 本地分支名
如果因fatal: refusing to merge unrelated histories
而失败:
git pull origin master --allow-unrelated-histories
强制用远程仓库覆盖本地版本:
git fetch --all
git reset --hard origin/master
git pull
例如把远程的 master
合并到本地的 brantest
分支:
git pull origin master:brantest
若fatal: Couldn't find remote ref master,通常证明远程仓库是空的
只获取单一文件:先 git fetch URL.git
,再 git checkout 文件名
,如:
git init
git fetch [email protected]:rushcheyo/AHOI-2021-junior.git
git checkout solution.pdf
点fork,在自己的账号下克隆了一个仓库,之后使用:
git clone 仓库地址
git clone [email protected]:用户名/git仓库名
会新建文件夹的,名字为仓库名字,之后要cd之后才会进入
可以克隆到指定位置,将会以指定目录为 clone 根目录:
git clone 仓库地址 目录
仓库地址也可以是HTTP或git开头的超链接,如
git://github.com/schacon/grit.git
注意,同样从无到有是抓取远程仓库,git pull
不会获取 remote 信息,而且事先要 git init,而 git clone
会获取 remote 信息。
git remote rename oldname newname
修改本地仓库名
让 git 获取本地没有的数据:
git fetch origin
通常做完之后需要 merge
合并一下
git fetch # 获取所有远程分支(不更新本地分支,另需merge) git fetch --prune # 获取所有原创分支并清除服务器上已删掉的分支
git branch
带星号是当前分支
git branch --contains 50089 # 显示包含提交50089的分支
git branch -a # 显示所有分支
git branch -r # 显示所有远程分支
git branch #所有本地分支
git branch --merged # 显示所有已合并到当前分支的分支
git branch --no-merged # 显示所有未合并到当前分支的分支
查看分支历史:
git show-branch
git show-branch --all
查看当前的分支是哪个分支:
git branch --show-current
git checkout -b 分支名 #或
git switch -c 分支名
创建并切换到新分支
git branch 分支名
创建但不切换
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录
git checkout -b master_new master_copy
后者可以是远程分支,如:
git checkout -b devel origin/develop
git checkout --orphan gh-pages
中的--orphan
是 Git 命令的一部分,用来创建一个孤立的分支。具体来说,--orphan
选项会创建一个新的分支,该分支没有任何父提交记录。这意味着新分支上的第一个提交将成为该分支的根提交,完全独立于任何其他分支的历史记录。
git merge 分支名
把某个分支合并到当前分支,这个分支可以是远程的,如 fetch 后 git merge remotes/origin/master
,其中 remotes/
指明远程。
如果出现冲突,必须手动解决
合并分支时一般会用fast forward模式,删除分支后丢失分支信息;
如果关闭,则历史上可以看到分支信息:
git merge --no-ff -m "新commit描述" 分支名
可以直接合并一个远程分支,如:
git merge origin/master
如果分支历史不一样,可以加 --allow-unrelated-histories
合并发生冲突,查看冲突的全部文件:
git status
打开对应文件,能看到冲突双方都被同时写了,自行保留哪个(用 vscode 的话可以一键式,如果 vscode 做不了,可以 chmod 一下),一个个手动解决,解决完毕后:一个个 git add,然后 git commit
完整示例:当前版本A(master),上一个版本B(b2262ebc),以B为基础修改得到C,把A,C合并
git checkout b2262ebc git checkout -b 新分支 # 分支名是新分支,B为基础 git add . # 和 git commit -m "对C的修改" git checkout master # 回到A master git merge 新分支 #A,C合并;若有冲突手动处理
把另一个分支的一个或多个提交复制到当前分支:
git cherry-pick commitID
git branch -d 分支名
删除已合并的分支
如果要删除未合并(会丢失修改)的分支,使用-D,即强制删除
git branch -m master master_copy # 本地分支改名
git checkout 分支名 #或
git switch 分支名
回到切换前的分支
git checkout -
git stash
隐藏目前尚未提交commit的分支
git stash lish
git stash apply #恢复
git stash drop #删除储藏
或
git stash pop
恢复指定的stash
git stash apply stash@{0} #第一个
git cherry-pick 版本号
将所做的修改复制到别的分支
标签的本质是让id更好记忆
分类:轻量级的(lightweight)和含附注的(annotated)
轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。
而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。
一般我们都建议使用含附注型的标签,以便保留相关信息;
当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题
git tag
git tag 标签名
为当前id创立标签
标签创立在commit id上。用以指向该id
git tag 标签名 id
为某id创立标签
git tag -a 标签名 -m 注释 id
说明文字
-a
表示创建带注解的标签
PGP签名标签命令
git tag -s <tagname> -m "一个标签"
git show 标签名
显示标签指向的id的信息
git tag -d 标签名
git push 远程仓库名 标签名
git push 远程仓库名 --tags #同步所有
git push 远程仓库名 :refs/tag/标签名 #远程删除
gitk
内置图形化窗口
可以查看版本记录,
git --version
查看某个对象:
git ls-tree HEAD
查看 SHA1 HASH:
git rev-parse HEAD
开源的分布式版本控制系统
其他版本控制工具有:CVS, Subversion(即SVN)
Git 的内容存储使用的是 SHA-1 哈希算法
Git 没有一个全局的版本号
- **工作区:**就是你在电脑里能看到的目录。
- **暂存区:**英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- **版本库:**工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
- 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。
- 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
- 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。
- 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
- 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
- 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
- 当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
- 当执行 git checkout . 或者 git checkout -- 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
- 当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
/etc/gitconfig
文件:系统中对所有用户都普遍适用的配置。若使用git config
时用--system
选项,读写的就是这个文件。~/.gitconfig
文件:用户目录下的配置文件只适用于该用户。若使用git config
时用--global
选项,读写的就是这个文件。- 当前项目的 Git 目录中的配置文件(也就是工作目录中的
.git/config
文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config
里的配置会覆盖/etc/gitconfig
中的同名变量。
在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings$USER。
此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位
对大文件的管理,参考 LFS
仓库单文件大小限制100MB 参考,推荐仓库总大小不超过1GB
检查有没有 ssh key,或者使用现成的
ls -al ~/.ssh
如果看到 id_rsa.pub
或 id_ed25519.pub
文件,这表示你已经有 SSH 公钥。
可以直接复制现成的如 id_rsa.pub
测试:
ssh -T [email protected]
如果是新 touch 的,要注意文件的权限,如:
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh
成功如:
Hi lr580! You've successfully authenticated, but GitHub does not provide shell access.
先找到一个非空仓库,fork一下
自己测试时可以开小号,小号提交要换git账号邮箱(可能要切全局),或者索性直接在网站上在线提交
fork的意义是把别人的仓库当前版本克隆一份到自己的仓库
注意fork后别人再commit是不会同步到自己这里的,如果想要同步,可以点击fetch按钮的fecth and merge:
然后可以自己对这个仓库作修改,如在本地 remote add 一下自己 fork 后自己得到的代码仓库(注意到这个仓库的分支是main分支不是master,所以要先在 remote add
的时候改一下)
然后进行任意修改并 push 到自己 fork 的仓库
然后点击网站上 contibute 按钮,点击 open pull request
特别注意并不是所有的都可以 pull的,例如历史完全不一样(拿自己的另一个仓库完全覆盖他的仓库)就不可以提交,会有对应的英文提示
可以的时候,进行留言然后提交;当通过时有邮件发送给自己
当有人发出 pull request 时,自己会收到邮件,打开对应的代码仓库,点击 pull request 栏目,可以选择相应的通过或拒绝别人的请求,然后可以留言,之后便通过了改变
如有个main先传了,然后传了个master。希望把main删了,因为先上的自动成了default。所以要到settings找到default branch,有多个branchs的情况下有个两箭头按钮,即switch,改了即可。然后codes点分支点view all branches把main删了。
意思这样不会更新main分支的贡献者信息,contributors还在,如果要清空需要重开或其他办法。
GPT4:GitHub的Contributors统计是根据在仓库中提交过的所有更改自动生成的,包括所有分支和历史版本。因此,一旦提交被推送到仓库,就无法从GitHub的用户界面中删除或编辑Contributors列表
仓库转 page:如果在 github 仓库选择部署,会得到结果为 <username>.github.io/<reponame>
的 url。
每个仓库的 page 是相互独立的,可以开多个。
也可以设置默认,即取消掉
<reponame>
,参见其他地方设置。
对仓库选择 settings,可以看到 page 设置。
- 具体参见:我的个人博客搭建建站过程。
- 具体参见:
latex.md
笔记的 Jekyll。
部署一个 npm 项目到 github page,详见:
web.md
的 npm - 部署。
相当于是袖珍版的代码仓库:代码片段;可以选择私有(通过URL他人可查看)或公开(一切人可查看)
在 这里 ,也许需要魔法上网
单个文件限制大小2GB 参考 ;点击开箱即用,记得给每个release一个版本号tag
2FA 是 two factor authentication,提倡用户使用,见 here。在官方的 这篇文章,提出使用 2FA 提高账号安全性。
基于时间的一次性密码(Time-based One-time Password,简称TOTP),由一系列 APP 生成,可以使用任意 TOTP app。
按照官方指引操作即可。或参考 here,下载名为 authing 令牌的 TOTP app,然后用这个 app 扫 github 弹出的二维码。
如果 TOTP app 不可用,需要使用恢复码,在下一步下载这下恢复码。格式为 10 个十六进制数用 -
隔开。可以从 here 获取。
到此为止,已经设置了 TOTP app。测试可以正常 commit。
建一个跟自己用户名同名的仓库,其 README.md
会展示在自己的 github 主页。
一些参考的统计信息:参考
项目信息 参考
按 t 快捷键,或在 go to file 输入框 (add file / code 按钮左边),可以按文件名查找,可以找到文件夹下含搜索字符串的文件名
按 .
,把 github.com 重定向到 github.dev,可以以在线 vscode 形式查看代码;例如 here
- 如果修改的是别人的仓库,那么提交的时候,会本地 fork 一份
- 把
github.com
改为github1s.com
,是一个只读的 vscode 编辑器 sample gitpod.io/#
+完整(https开始的)原链接 (可以选择不同的开发环境,如 idea),这个环境可以运行代码 sample
代码单行/多行高亮,在url后+#L行号
或 #L行1-L行2
表示区间 [行1,行2]
empty 仓库不可以 fork
按stars, forks 等排序 参考
awesome+关键字,可以关键字领域的汇总
DevCloud
这个笔记是为了写作业要求而弄的
-
Epic是公司重要战略举措;
中文通常翻译为史诗,指公司的关键战略举措,可以是重大的业务方向,也可以是重大的技术演讲.企业通过对Epic的发现、定义、投资、管理和落地达成,使得企业的战略投资主题得以落地,并获得相应的市场地位和回报。 Epic的粒度比较大,需要分解为Feature,并通过Feature继续分解细化为User Story来完成最终的开发和交付。 Epic通常持续数月(months),需要多个迭代才能完成最终的交付。Epic应该对所有研发人员可见,这样可以让研发人员了解他们交付的Story承载怎样的战略举措,让研发人员能更好的理解其工作的价值。
Epic通常和公司的经营、竞争力、市场环境紧密相关,举例如下: 例1 市场差异化:用户体验全面超越竞争对手 例2 更好的解决方案:新增支持工业互联网的解决方案 例3 增加收入:产品需要在下个财季增加100万付费用户 例4 重大技术方向:产品需要全部切换为容器
-
Feature是对你的用户有价值的功能;
中文通常翻译为用户故事,User Story的简称。是从用户角度对产品需求的详细描述,更小粒度的功能。Story承接Feature,并放入有优先级的backlog中,持续规划、滚动调整优先级,始终让高优先级的Story更早的交付给客户。 优秀的Story应遵循如下的INVEST原则: Independent:每个用户故事应该是独立的,可独立交付给客户。 Negotiable:不必非常明确的阐述功能,细节应带到开发阶段跟程序员、客户来共同商议。 Valuable:对客户有价值。 Estimable:能估计出工作量。 Small:要小一点,但不是越小越好,至少在一个迭代中能完成。 Testable:可测试。 Story通常持续数天(days),并应在一个迭代内完成交付。
Story符合INVEST原则,举例如下: 推荐模板:用户<角色>…希望<结果>…以便于<目的> 例1 作为项目经理,希望通过过滤处理人,以便于快速查询指定人的需求。 例2 作为开发人员,希望将无用的信息进行折叠,以便于减少视觉干扰。 例3 作为测试人员,希望将测试用例和需求关联,以便于跟踪需求的验证。
-
Story是分解的细粒度的开发交付的内容,是用户的细分场景;
中文通常翻译为特性,代表可以给客户带来价值的产品功能或特性。 Feature向上承接Epic,向下分解为User Story。相比Epic,Feature更具体形象,客户可以直接感知,通常在产品发布时作为ReleaseNotes的一部分发布给客户。 Feature通常持续数个星期(weeks),需要多个迭代完成交付。
Feature应该对客户都有实际的价值,特性的描述通常需要说明对客户的价值,与产品的形态、交付模式有关,举例如下: 推荐模板:用户<角色> …希望<结果>… 以便于<目的> 例1 用户A希望提供导入、导出功能,以便于用户批量整理数据,更高效。 例2 用户B希望提供超期的邮件通知,以便于用户及时处理任务。 例3 用户C希望优化鼠标拖动的体验,以便于让用户操作更快。 例4 用户D希望增加昵称功能,让用户更个性化。
-
Task是完成需求的过程性的工作。
在迭代计划会议中,将纳入迭代的Story指派给具体成员,并分解成一个或多个Task,填写“预计工时”。
Task通常为过程性的工作,举例如下: 例1 开发人员A需要在今天准备好类生产环境。 例2 开发人员B需要在本周末完成项目组的权限设定。 例3 开发人员C需要进行代码Review。
控制台-DevCloud-项目管理,买一个基础版,点立即使用,点新建,只能选Scrum。
点击规划,可以创建思维导图规划,编辑更多,在空行填入描述。弄好规划可以退出去工作项看到东西。
在最上面设置看成员管理可以拉人。
上方代码-代码托管可以新建仓库。
点击自己,点个人设置,点代码托管,添加 SSH/HTTPS 密钥密码管理。