Git从0到熟练
Git 从0到熟练From MagnoliaGit 简单认知git的一个工作流四层工作区暂存区本地仓库远程仓库安装配置过程略建立连接在GitHub上创建一个远程仓库并拿到该仓库的url在本地创建一个文件作为本地仓库本地仓库初始化git unit建立连接:git remote add 远程仓库在本地操作的名字 url显示连接是否成功:git remote -v完成连接本地操作修改后将文件添加到暂存区 git add 文件 or git add .(添加全部修改到暂存区)git status如果此时想撤回此操作:git reset HEAD如果确认提交:git commit -m 备注,如果未备注会打开默认编辑器,在终端出现触发i键进入insert然后输入我们的备注后按esc后再输入wq退出如果提交后想撤回:(1) :撤回至暂存区git reset --soft HEAD~1(推荐)(2) :直接撤回git reset --hard HEAD~1工作区某文件返回上一次保存状态:git checkout 文件名远程操作push到远程仓库的操作git push (-u) 远程仓库在本地操作的名字 分支名字分支给当前选中分支拿到最新仓库状态:git pull每一个分支我们可以给他写一个分操作:git branch 新分支名字此操作是基于当前选中分支进行的复制操作团队开发中这个本地分支别人是看不到的只有push上远程仓库队友才能拿到你的分支进行操作展示当前拥有的分支git branch切换分支git checkout 分支名字在新分支进行修改,记住此时相当于在工作区如果我们不进行提交那么切换到主分支时会发现主分支也进行了修改这就达不到我们的目的了所以请务必提交如果不想有如下操作git stash,此时我们会发现其消失了存储到了临时空间取出用git stash pop接下来我们进行合并操作git merge然后直接push到github仓库。我们这步操作其实是不安全的因为我们直接对远程仓库进行了覆盖修改而未经审核。接下来我们删除本地的分支git branch -d 分支名字这样就变得干净了团队开发好了接下来我要说的是真正安全的操作同样进行pull操作和git reset --hard origin/main不同该操作强制将远程下载覆盖本地在这里我要说的是有是你想完全丢弃你在本地写的领先于远程仓库的时候可以考虑用这个即你添加的功能被废弃创建新分支git checkout -b dev1(发现和之前学的不一样对吧这一步是创建新分支并且切换到新分支)git push -u origin 新分支名字给远程仓库创建分支建立联系这样我们在团队协作才能进行pr操作,同时让别人pull的时候能拿到你的其他分支内容接着开始写新功能,新东西接着保存然后我们进行在分支进行pull操作然后就会触发PR接着在github上审核和合并最后我们再切回到本地仓库和主分支然后我们就可以在远程和本地删除该分支了本地删除git branch -d 分支名字远程删除git push origin --delete 你的分支名 or 直接在github上删除补充操作:看你的日志:git log看你改了什么git diff or git diff工作区vs暂存 --cached(暂存vs本地)忽略文件在根目录创建这个.gitignore我这里没有体现但当你在用ide工具是这个就格外重要让代码仓库干净加入类似以下内容编辑器自动生成的文件.idea/.vscode/*.swp*.swo系统文件.DS_StoreThumbs.db日志logs/*.log依赖包举例node_modules/vendor/临时文件tmp/temp/冲突解决略下载远程文件不合并git fetchgit rebase仓库克隆常用git clone 仓库url之后我将实操这个仓库克隆补充 建议先优先fork别人的仓库再克隆从GitHub上搜索你想要clone的仓库然后点击代码文件会看见htmlssh选择ssh接下来配置一下SSH密钥打开电脑终端输入ssh-keygen -t ed25519 -C 你的GitHub邮箱生成密钥然后直接按三次回车查看并复制公钥cat ~/.ssh/id_ed25519.pub,终端会输出一大段以ssh-ed25519 开头,你的邮箱,结尾的内容,把这一整段全部复制去 GitHub 粘贴公钥:打开 GitHub → 右上角头像 → Settings,左边找到 SSH and GPG keys,点 New SSH key,Title 随便写My Mac,Key 类:Authentication key.把刚才复制的一大段内容粘贴到 Key 里,点 Add SSH key测试是否成功ssh -T gitgithub.com,再输入yes开始克隆:git clone github上复制的SSH链接 注意你在哪个文件夹打开的终端就克隆在哪里.如果你clone别人的仓库而不是fork别人的仓库再克隆自己的你就无法push上去也就是无法对远程仓库修改当然你自己重新创建了一个仓库那另说。你在push之后会有pr此时是向原仓作者做贡献做修改。声明本人通过该方法来帮助自己学习如果有误恳请您批评指正我必将虚心接受谢谢。