#(0)基础配置【注:远端操作时必须指定远端仓库的位置,以便拉取/推送操作的进行。】
git remote add origin https://github.com/user/repo.git #添加远端仓库
git remote show #查看已配置的远端仓库
#####登录认证相关步骤,请看杂七杂八部分的内容,此处略过...#####
#(1)获取:拉取远程代码到本地的远程分支中,并不与本地主线分支合并。
git fetch
git branch -r #查看本地拉取下来的远程仓库的分支
git status origin/main #查看本地的远程仓库的状态
git log origin/main #查看本地的远程仓库的日志
git merge origin/main #将拉取下来的本地远程仓库与本地仓库进行合并
#(2)拉取:拉取远程代码到本地的远程分支中,并与本地主线分支合并。
git pull #从远端拉取当前分支,并于本地的当前分支合并
git pull origin main #从远端拉取 main 分支,并于本地的 main 分支合并。哪怕当前分支是 dev 分支,依旧不影响对 main 分支进行更新。
#(3)推送:推送本地代码到远程仓库并合并
git push
git push origin main
#(4)克隆:复制一份远程仓库的内容到本地
git clone https://github.com/user/repo.git
1.4、分支、检出、重置、存档、标签(支线操作)
bash复制代码
#(1)分支:从当前的主线任务中分离出来另外一条支线,此时主线和支线的文件环境完全相同,同时两者各自的工作动作也不会影响到对方。此后,若支线的实验工作成功了,主线便可以合并支线直接收获支线的劳动成果,若失败了删除支线即可。
git branch #查看分支
git branch dev #创建 dev 分支
git switch dev #切换到 dev 分支
#(2)检出:直接跳转到指定的 某个分支、某个提交、某个标签 的环境,方便随时查阅当时的现场情况。【注:仿佛穿越过去一样】
git checkout main #跳转到分支
git checkout 8fc7720e4bc5304e1550a7f120e4f02c203d4f07 #跳转到提交
git checkout v1.0.0 #跳转到标签
#(3)重置:重置工作区的 HEAD 指向、以及暂存区的状态、以及工作区的内容。
git reset HEAD~1 #混合重置:撤销 commit、保留代码、取消暂存(回到"未暂存区")
git reset --soft HEAD~1 #软重置:撤销 commit、保留暂存状态
git reset --hard HEAD~1 #硬重置:撤销 commit、删除暂存、删除工作区改动
#(4)存档:导出某个版本的代码(但不包含 Git 历史),相当于是检出到某个位置,然后将当前位置环境中的文件全部压缩到一个包中。
git archive -o project.zip main
#(5)标签:给某个 commit 打一个"名字",方便未来定位或记忆这个特殊的节点状态
git tag v1.0.0 #给当前 HEAD 位置(即最近的 commit)打一个标签
git tag tag_name commit #给指定 commit 打一个标签
git push origin --tags #推送 tag 标签【注意:git push 默认并不会推送标签记录,标签记录需要像这样去提交。】
注:关于重置三种状态的区别。
1.5、合并、重基(合并操作)
bash复制代码
#(1)合并:把两个分支"合并在一起",并保留分叉结构,能清晰看到分支是怎么合并的,历史记录清晰。
git switch main
git merge dev
#(2)重基:把你的提交"搬到另一个分支后面",使得提交历史会比较整洁,但会重写提交历史,无法看清分支是怎么合并的。【注意:重基时,switch 所在的分支不同,则最终形成的提交记录亦有所不同,这一点很重要。】
git switch dev
git merge main
HEAD 相当于数据结构链表中的头指针,通过这个头指针来在各个提交记录的节点上进行移动,进而展现不一样的目录树以及其它的操作。通常 HEAD 默认指向 master 分支的最后一次更新。通过移动 HEAD,就可以比较容器的变更到要使用的 commit,而非一定要取得 commit 的 id 值之后才能进行。