git
主要记录一下git的实践原理,根据不同场景使用对应的git命令。
使用原理
git分支
git通过分支来管理代码。分支可以理解为提交历史中指向特定提交的指针。
git仓库通常有一个默认分支(主分支)master/main。为了更好管理代码,就可以创建不同分支来开发,防止对同一份代码进行开发一直有冲突。在后期合并开发时可以统一处理冲突。(只要是不同人对同一份代码进行开发,总是会有冲突的,解决就行,不用抗拒)
不同工作区域
在使用git管理代码时,主要有这么几个区域:工作区域,暂存区,储藏区,本地仓库以及远程仓库。
1.工作区(workplace): 即我们开发的区域。
2.暂存区(stage): 一个缓冲区域,修改完的代码在提交之前要放到暂存区,再提交到仓库。这个缓冲的作用 (我现在的理解):
(1)可以选择性的提交更改,可以将自己想要提交的代码放到缓冲区,再进行提交同时还能保留暂不想提交的更改。
(2)在提交之前可以有这个区域,查看将要提交的更改,避免出错。
(3)可以将多次的提交代码分组,版本管理的时候逻辑清晰,便于管理。
3.储藏区(stash): 一个小仓库,可以临时保存对代码的更改。
在切换分支或者做其他任务的时候,将当前更改先放到仓库,是一个比较独立的区域。
场景
场景一
在工作区域对一个分支进行开发的过程大致是:先将远程仓库中分支的最新代码获取到本地分支,在本地仓库进行开发后,将修改后的代码先暂存提交到本地仓库,在将本地仓库代码推送到远程仓库。
bash
# 1.拉取分支最新的代码
git pull
# 2.将修改暂存
git add . # 所有修改
git add path/to/file # 暂存特定文件
# 3.将暂存代码提交到本地仓库
git commit -m '提交信息'
# 4.将本地仓库推送到远程仓库
git push
场景二:从分支a拉取分支b进行开发
bash
# 1. 将当前切换到分支a
git checkout a
# 2.在分支a下新建分支b
git branch b
# 3.切换到分支b
git checkout b
### 结合2,3两个代码可以通过以下命令
git checkout -b b
切换分支还可以用switch
,相应代码如下
bash
git switch a # 切换到a分支
git switch -c b # 在当前分支创建并切换到新分支
场景三:将分支a合并到分支b
分支a中对代码进行了改动,需要将这些改动都同步到分支b上
bash
# 1.切到分支b
git checkout b
# 2.将分支a合并到分支b(当前分支)
git merge a # 该命令可能后有冲突,手动更改
或者通过cherry-pick
,在分支a上有一些改动并提交到仓库中该提交会有相应的哈希值
bash
# 切换到分支b
git checkout b
# 将分支a上的提交commit1合到分支b
git cherry-pick commit1_hash_value
场景四:本地代码与远程仓库建立连接
1.首先在github或者其他平台建立一个仓库(仓库名以repo_name
为例)
2.在workplace操作,命令操作的路径为代码文件夹路径
bash
#1.初始化仓库:将本地代码git化
git init
#2.将所有当前文件夹下的代码暂存
git add .
#3.将所有的代码提交到本地仓库
git commit -m "提交信息"
#4.建立连接之前要设置一下用户名与邮箱
#(如果全局设置过了,可以不用再次设置了)
git config --global user.name "username"
git config --global user.email useremail@qq.com # 这边邮箱好像有引号没引号都可以
# 与远程仓库建立连接
git remote add origin '远程仓库的地址'
git push -u origin master
###
-u参数是--set-upstream的简写,它将本地分支与远程分支关联起来。通过使用-u参数,你可以在将来的git push命令中省略远程分支的名称。
origin是远程仓库的名称。在典型的情况下,远程仓库的名称为origin,但也可以是其他名称,具体取决于你的配置。
master是要推送到远程仓库的本地分支的名称。在这种情况下,它表示将本地的master分支推送到远程的master分支。
###
git 路漫漫...