其实我第一次用git,就是你这篇文章里的样子。
那个demo1.html。
vi demo1.html

真的,一模一样。
当那一刻按下i的时候,认为整个世界都变得安静起来了,仿佛自己犹如一个真正意义上的程序员了。
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>
hello world
</title>
<script type = "text/javascript">
window.onload = function()
{
let oBtn = document.getElementById("btn");
let oPra = document.getElementById("p0");
let number_0 = parseNumber(oPra.textContent);
oBtn.onclick = function()
{
oPra.textContent = number_0 + 1;
alert("finished!");
}
}
</script>
</head>
<body>
<button id = "btn">click this button to plus 1</button>
<p id = "p0">0</p>
</body>
</html>
然后git status,看着红字,完全不知道它在说什么。

绿了,高兴。
红了,慌。
:wq
后来我发现,大多数人学Git,都卡在那个“暂存区”上。
到底什么是暂存区啊,我代码存哪儿了
有人跟我说,你就当它是购物车。
git status
不是。
购物车你放进去,结账的时候全买了。
git status --short
但是暂存区的情况并非如此,你执行git add这个操作,就仿佛是将货物从货架取出来,然后紧握着放在自己的手里。
攥着,还没放进购物车。
然后你git commit,才扔进购物车。
git add demo1.html
这个比喻也很烂,我知道。
git add --all
但没办法,这东西本来就很抽象。
有位大哥制作了一款3D游戏,你将文件拖动到名为“暂存区”的那个格子之中,它便会从标记为“未追踪”的那块墙处飞到了命名为“已暂存”的那块墙那里。
我第一次看到那个动图,突然就懂了。
是这个东西,本来就不该用命令行教。
为什么我们总在怕git
有个用了十年Git的老程序员,写了一篇吐槽,说——
git reset demo1.html
我每天都在用,但我并不喜欢它。
我所需求的并非哈希串,并非分布式呈现,并非那些于我而言压根用不上的所谓“强大”。
我只是想:改个东西,存一下,万一改崩了,能回去。
就这么简单。
他想要一个叫“Gitlite”的东西。
git commit -m git "the first commit"
我也想要。
分支?平行宇宙,但你会迷路
很多人把分支比作平行宇宙。
听起来很酷。
可是实际情况是,你从main切换出去,吭哧吭哧用了三天时间去修改,再切换回来时,已然忘掉自己当初为何要在那个时间节点分裂出去了。
像不像你半夜两点冒出来的创业灵感。
第二天醒来:这啥。
git pull 报错那一刻,血压拉满
你原文里写了:
git pull,然后出错了。
fatal: to merge。
你加了参数,解决了。
但你没写那一瞬间的感受。
就是那种,明明每一步都对,但它就是不给过的委屈。
而后我晓得了,那并非是你的过错,乃是两个版本自同一个祖先分支出去的时间太过漫长,以至于彼此之间谁都认不出谁了。
你得把它们摁在一起,说:
你们以前是一家人。
### 有没有不这么难的办法
其实有。
git remote add origin https://gitee.com/hhhmoonhhh/demo_of_mine
少用命令行,多用界面。
这不是懦弱,这是跟工具和解。
有用VSCode的Git图形的人,有使用GitHub Desktop的人。
那些,点一下便能够add,点一下便能够commit,在冲突之际,红绿蓝标识得极为清晰明了。
这才是人该用的东西。
你看那些老程序员,嘴上说着命令行最高效。
但你真看他,也是git gui。
写完那个demo1.html之后呢
你会遇到冲突。
你会忘记push。
你会把密钥放错地方。
git pull origin master --allow-unrelated-histories
你会看着那串长长的commit hash,像看天书。
但是,你也会在某一日,进行git log --oneline这样的操作,然后,突然发觉——。
哦,原来我改了这么多版。
每一版都有记录。
每一版都还活着。
这大概就是版本控制,最温柔的地方。
不是控制。
是保留。
git pull origin master
你那天晚上写demo1.html的时候,心里想的是什么呢。
我已经忘了。
但Git还记得。
git push origin master
谢谢你看完。
下次遇到git pull报错,记得先深呼吸。
是它不够懂你。

Comments NOTHING