新手必看:Git分布式版本控制与GitHub协作全攻略

📅 2026/7/18 22:29:24 👁️ 阅读次数 📝 编程学习
新手必看:Git分布式版本控制与GitHub协作全攻略

你是否经历过这样的绝望:熬夜写完的代码被误删,想找回却无计可施?和新同事协作时,他的修改直接覆盖了你三天的成果,项目瞬间崩盘,你却连是谁改的都不知道?又或者,你想为项目添加一个新功能,却生怕把原本稳定运行的版本搞砸?

如果你点头了,那么恭喜你——Git,正是为你解决这些问题的“后悔药”与“时光机”。作为当今最强大的分布式版本控制系统,Git不仅能帮你精确记录每一次文件变动,让你在任意版本间自由穿梭,更是团队协作的基石。

然而,对于新手来说,Git那抽象的工作区和暂存区概念、动辄十几个参数的命令,确实像一堵高墙。别担心,这篇文章正是为你打破这堵墙而生。我将带你从零开始,用最通俗易懂的语言和实战命令,一步步掌握Git核心操作,并打通与GitHub远程仓库的协作全流程。无论你是学生、开发者还是技术爱好者,跟着这份攻略走一遍,你将从此告别“代码丢失恐惧症”,自信地驾驭你的项目。

git分布式控制系统

github远程仓库

cmd命令

查看文本文件内容:type 文件名 删除文件:del 删除文件夹啊:rd

修改管理类

修改文件

cmd 变仓库:git init #文件多了.git文件——版本库 创建文件 添加文件到仓库(暂存区stages):git add 文件名 #添加多个空格分开 提交文件到仓库:git commit -m "说明内容" #全部提交,-m相当于添加注释 每次修改都要重复以上完整操作 git commit提交更改暂存区的所有修改提交到master分支

查看

查看仓库状态:git status #modified:需要提交的修改 查看具体修改内容:git diff 文件名 #红色原内容、绿色现内容 查看工作区和版本库里面最新版本的区别:git diff HEAD -- 文件名 # 有输出说明有未提交改动 查看以往操作命令:git relog #可以得到commit id 查看修改历史:git log #显示-m后的说明内容,乱码是commit id 如果嫌输出信息太多加上--pretty=oneline参数

回溯

回到之前的版本:git reset --hard HEAD^ ^是上一个版本,^^是上两个版本 也可写成HEAD~100,上100个版本,推荐这种写法 HEAD是当前版本 通过commit id(一般写前几位)git reset --hard 1094a(例)也可以回溯到后面的版本 撤销暂存区修改:git reset HEAD <文件名> --hard会回退到上个版本的已提交状态(一般使用这个) --soft会回退到上个版本的未提交状态 --mixed会回退到上个版本未添加

撤销修改

💡

从来没有被添加到版本库就被删除的文件,是无法恢复的!

丢弃工作区的修改:git checkout -- 文件名

删除

先手动删除 git rm 文件名 #功能与git add文件名差不多

远程仓库

github仓库可以作为备份,也可协作

  1. 登陆GitHub,打开“settings”,点击“SSH and GPG Keys”,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴C:\Users\Administrator\.ssh\id_rsa.pub文件的内容

    查看是否存在:dir %USERPROFILE%\.ssh ssh-keygen -t rsa -C "邮箱"
  2. 创建SSH Key(git bash):
  3. 勾选Initialize this repository with a README,自动我们创建一个README.md文件

查看远程仓库命令:git remote -v

添加远程仓库

  1. 右上角找到+按钮,点击new repository
  2. name填入文件名
  3. 关联命令:
git remote add origin git@github.com:Github账户名/仓库名.git

远程库的名字为origin(在.git/config里)

4.本地库的所有内容推送到远程库:

git push -u origin master 第一次推送要加-u, 目的: 把本地的master分支内容推送到远程新的master分支 把本地的master分支和远程的master分支关联起来

后续上传命令(去掉-u):

git push origin master

删除远程仓库

1.

git remote rm 仓库名

2.在github网站删除

远程仓库克隆

git clone git@github.com:Github账户名/仓库名.git

多人协作开发时每人克隆一个

分支

在不影响已上线的功能情况下开发新功能,避免不可逆转的局面

主分支可以独立运行

将未push的分支整理为直线:git log --graph --pretty=oneline --abbrev-commit

1.创建分支:

git checkout -b 分支名(一般为dev) git switch -c 分支名

2.查看当前分支:

查看分支合并图:git log --graph

git branch * 表示当前分支 git log --oneline --graph

3.上传流程和master一样

4.切换分支:

git checkout -b 分支名 #未创建 git checkout 分支名 git switch -c 分支名 #未创建 git switch 分支名 #已创建

5.合并分支:

Git默认Fast forward模式合并分支时可能丢失分支信息

不想删除合并时添加添加--no-ff参数

merge成功自动提交,merge失败不提交

git merge 分支名

6.删除分支:

git branch -d 分支名 强行删除:git branch -D 分支名

当前分支:<<<<<<<

分割:=======

合并分支:>>>>>>>

💡

发生冲突时再次添加提交可以合并

Bug分支

创建分支来修复bug

存储未完成工作:git stash #可以存储多次 查看已存储的未完成工作:git stash list 删除存储内容:git stash drop 恢复存储内容(不删除):git stash apply 有多个存储内容时git stash apply 存储编号 恢复并删除存储内容:git stash pop. 把某个提交的操作复制到当前分支:git cherry-pick commidID

分支多人协作

查看远程库信息:git remote 查看远程库详细信息:git remote -v #没有推送权限,就看不到push的地址 将本地提交推送到远程仓库:git push 远程仓库名(origin) 分支名

抓取分支:

远程克隆:git clone git@github.com:账户名/仓库名.git 抓取最新提交:git pull #失败则说明本地和远程未链接 git pull失败:git branch --set-upstream-to=远程库名(origin))/本地分支名 本地分支名

标签

在需要打标签的分支上:git tag 标签名 #打在最新提交上 如果要给标签指定说明:git tag -a 标签名 -m "说明内容" commitID 查看标签名:git tag 给历史提交打标签:git tag 标签名 commitID 查看标签信息:git show #按字母顺序排序 删除标签:git tag -d 标签名 删除远程标签: 先删除本地标签 再删除远程标签:git push origin :refs/tags/标签名 #冒号后是标签路径 推送标签到远程:git push origin 标签名 推送所有标签到远程:git push origin 标签名

使用github

fork创建克隆仓库,clone下载

至此,你已经完成了从Git小白到能独立协作开发者的蜕变!

我们从一个文件的修改开始,逐步建立版本库,穿梭于时空之间;接着,我们登陆GitHub,学会了如何将本地代码安全地备份到云端,并与他人共享;最后,我们涉足了Git最强大的分支管理领域,掌握了并行开发、紧急修复Bug以及多人协作的标准流程。

这些操作和命令并不是死记硬背的“咒语”,而是你驾驭代码世界的“工具箱”。在未来的编程道路上,git statusgit log将成为你最常使用的“眼睛”,而addcommitpushpull将成为你与团队协作的肌肉记忆。

当然,Git的海洋远不止于此,还有更高级的钩子(Hooks)、子模块(Submodule)和交互式变基(Rebase)等待你去探索。但请相信,有了今天打下的坚实基础,你将能轻松理解并掌握它们。

最后,送给你三句心法:

  1. 多提交,勤推送—— 不要怕commit太多,这是你安全的“存档点”。

  2. 遇到冲突莫慌张—— 冲突不是bug,是沟通的契机,细心阅读冲突标记并解决它。

  3. 不熟悉的操作,先在测试仓库中练手—— 放心大胆地尝试,错了就git reset,大不了重新克隆。

现在,就打开你的终端,从git init开始,亲手建立一个属于你自己的仓库吧!如果在实践过程中有任何疑问,或希望了解更深度的技巧,欢迎在评论区留言,我们一起交流成长。祝你在版本控制的世界里,游刃有余,尽享编码的乐趣!