你是否经历过这样的绝望:熬夜写完的代码被误删,想找回却无计可施?和新同事协作时,他的修改直接覆盖了你三天的成果,项目瞬间崩盘,你却连是谁改的都不知道?又或者,你想为项目添加一个新功能,却生怕把原本稳定运行的版本搞砸?
如果你点头了,那么恭喜你——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仓库可以作为备份,也可协作

-
登陆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 "邮箱" - 创建SSH Key(git bash):
- 勾选
Initialize this repository with a README,自动我们创建一个README.md文件

查看远程仓库命令:git remote -v
添加远程仓库
- 右上角找到+按钮,点击new repository
- name填入文件名
- 关联命令:
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 status和git log将成为你最常使用的“眼睛”,而add、commit、push和pull将成为你与团队协作的肌肉记忆。
当然,Git的海洋远不止于此,还有更高级的钩子(Hooks)、子模块(Submodule)和交互式变基(Rebase)等待你去探索。但请相信,有了今天打下的坚实基础,你将能轻松理解并掌握它们。
最后,送给你三句心法:
-
多提交,勤推送 —— 不要怕commit太多,这是你安全的“存档点”。
-
遇到冲突莫慌张 —— 冲突不是bug,是沟通的契机,细心阅读冲突标记并解决它。
-
不熟悉的操作,先在测试仓库中练手 —— 放心大胆地尝试,错了就
git reset,大不了重新克隆。
现在,就打开你的终端,从git init开始,亲手建立一个属于你自己的仓库吧!如果在实践过程中有任何疑问,或希望了解更深度的技巧,欢迎在评论区留言,我们一起交流成长。祝你在版本控制的世界里,游刃有余,尽享编码的乐趣!

779

被折叠的 条评论
为什么被折叠?



