工程建设招标网都有哪些网站,好的网站建设公司有哪些,网站搭建平台流程,义乌网红直播基地廖雪峰git教程 git – Linus在2周内用c写的
1.1 基本概念
版本控制系统#xff0c;追踪文本文件的改动#xff0c;文件、视频等二进制文件则不可追踪#xff08;微软的word也是二进制文件#xff09;HEAD 指向当前分支#xff0c;表示当前版本#xff08;最新的提交追踪文本文件的改动文件、视频等二进制文件则不可追踪微软的word也是二进制文件HEAD 指向当前分支表示当前版本最新的提交HEAD^ 上一版本HEAD^^ 上上版本HEAD~100 往上100个版本创建Git版本库时Git自动为我们创建了唯一一个master分支只要没有git add那么修改的内容就不会被放入暂存区就不会被提交远程库的名字就是origin这是Git默认的叫法也可以改成别的但是origin这个名字一看就知道是远程库
1.2 常用指令
mkdir learngit
pwd -- 用于显示当前目录
ls -ah -- 可查询隐藏的文件夹如.git
cat -- 读取文件的内容
rm test.txt -- 删除文件
git init -- 将某个目录变成Git可以管理的仓库
git add -- 告诉git把文件添加到仓库暂存区git add . -- 将工作区中所有未跟踪或者修改的文件添加到暂存区
git commit -m -- 把文件提交到仓库master分支
git log -- 告诉我们修改的历史记录由近到远
/ 或者只显示一行 git log --prettyoneline
git reset --hard HEAD^ -- 回退到上一版本
git reset --hard 1094a -- 回退到某一版本需要知道commit id并输入前几位
git reflog -- 即使关闭了git bash之后依然能记录之前每个步骤
git status -- 查询工作区的状态是否有新增文件文件是否有修改比如切回dev分支时可以先查询工作区的状态
git diff HEAD -- readme.txt -- 查看工作区和版本库里面最新版本的readme文件的区别
git rm test.txt -- 你在工作区删除了testgit status检测到了在确认要删除后使用git rmgit commit
git checkout -- test.txt -- 刚刚在工作区误删了test但是暂存区还有还原回来
git remote add origin -- 在本地创建了一个Git仓库后又想在GitHub创建一个Git仓库并且让这两个仓库进行远程同步这样GitHub上的仓库既可以作为备份又可以让其他人通过该仓库来协作
git remote -- 查看远程仓库信息
git remote -v -- 显示更详细信息
git push -u origin master -- 实际上是把本地当前分支master推送到远程第一次推送加 -u
git push origin master -- 之后再有提交推送无需加-u
git clone git仓库地址https或sshssh协议速度最快
git checkout -b dev -- 创建dev分支-b 表示branch创建并切换
git branch -- 查看当前分支当前分支前面会标一个*号
git checkout master -- 先切回master分支再合并
git merge dev -- 把合并指定分支dev到当前分支master
git merge --no-ff -m 不使用Fast forward模式合并 dev -- Fast forward模式下删除分支后会丢掉分支信息
git branch -d dev -- 合并完成后就可以放心地删除dev分支了
git switch -c dev -- git的新命令创建并切换到新的dev分支
git switch master
git log --graph -- 可以看到分支合并图
vim 文件名 -- 当不同分支合并产生冲突时可以查看文件
git log --graph --prettyoneline --abbrev-commit -- 查看分支合并情况
git stash -- 把当前工作现场“储藏”起来等以后恢复现场后继续工作场景当前dev分支还没开发完不能进行提交但有临时紧急任务需要新建分支来修复bug
git stash apply git stash drop -- 恢复工作区或者
git stash pop 恢复的同时把stash内容也删了
git stash list -- 查看被暂存的工作现场
git stash apply stash{0} -- 恢复stash{0}暂存
git cherry-pick 4c805e2 -- 能复制一个特定的提交4c805e2修复bug的提价到当前分支比如在master分支上修复了bug但是dev分支上也有这个bug通过复制的方式解决dev上的bug
git branch -D feature -- 丢弃一个没有被合并过的分支加-D强行删除
git tag v1.0 -- 打标签默认标签是打在最新提交的commit上的
git tag v0.9 f52c633 -- 在历史提交的特定commit id上打标签
git tag -a v0.1 -m version 0.1 发布 1094adb -- 添加备注
git tag -d v0.1 -- 删除标签
git tag -d v0.9 git push origin :refs/tags/v0.9 -- 删除已推送到远程的标签
git push origin v1.0 -- 推送标签到远程
git push origin --tags -- 一次性推送全部尚未推送到远程的本地标签
git tag -- 查看所有标签
git show v0.9 -- 查看某标签的详细信息 写了不该写的但是还没git add使用git checkout -- readme.txt可以撤销工作区的修改; 写了不该写的还git add了使用git reset HEAD readme.txt可以撤销暂存区的修改 命令git checkout – readme.txt意思就是把readme.txt文件在工作区的修改全部撤销这里有两种情况 一种是readme.txt自修改后还没有被放到暂存区现在撤销修改就回到和版本库一模一样的状态 一种是readme.txt已经添加到暂存区后又作了修改现在撤销修改就回到添加到暂存区后的状态。 命令git rm用于删除一个文件。如果一个文件已经被提交到版本库那么你永远不用担心误删但是要小心你只能恢复文件到最新版本你会丢失最近一次提交后你修改的内容。
1.3 创建合并分支过程图 分支合并冲突 手动修改冲突后不需要merge了
1.4 多人协作
多人协作的工作模式通常是这样
首先可以试图用git push origin branch-name推送自己branch-name分支的修改如果推送失败则因为远程分支比你的本地更新需要先用git pull试图合并如果合并有冲突则解决冲突并在本地提交即使没有冲突后push的同学不得不先pull在本地合并然后才能push成功没有冲突或者解决掉冲突后再用git push origin branch-name推送就能成功
如果git pull提示no tracking information则说明本地分支和远程分支的链接关系没有创建用命令git branch --set-upstream-toorigin/dev dev指定本地dev分支与远程origin/dev分支的链接
1.5 记录一个在学习git的过程中遇到的问题 学习时使用了以前创建的ying文件夹这个文件夹其实和以前github上的ying仓库关联了但是我忘了这件事 当我在推送ying工作区的内容到learngit2020时出现以下错误。因为此时我的本地ying和远程仓库的内容已经不一致了 先使用git pull --rebase origin master 取回远程主机某个分支的更新再与本地的指定分支合并 变基把分叉的提交历史“整理”成一条直线看上去更直观 看看此时的工作区多出了Users文件夹 再执行git push -u origin master 看看远程仓库ying的变化最新的已经更新上去了 ** 注意这里并没有实现推送到新的远程仓库learngit2020 本地库ying关联到远程库ying后再关联到另一个远程库learngit2020
git remote set-url origin gitgithub.com:StephanieHuang0801/learngit2020.git
git push origin master:master现在看看远程库learngit2020