目录
初始化配置
配置用户名
git config --global user.name "Your Name"
配置邮箱
git config --global user.email "[email protected]"
存储配置(存储用户名邮箱)
git config --global credential.helper store
创建仓库
创建一个新的本地仓库 (省略 project-name 则在当前目录创建)
git init <project-name>
克隆一个远程仓库
git clone <url>
四个区域
区域功能工作区在电脑里实际能看到的目录,也就是仓库的所在地暂存区暂存区也叫索引,用来临时存放未提交的内容,一般在 .git 目录下的 index 中本地仓库Git 在本地的版本库,仓库信息存储在 .git 这个隐藏目录中远程仓库托管在远程服务器上的仓库,如 GitHub
文件状态
状态描述已修改修改了但是没有保存到暂存区的文件已暂存修改后已经保存到暂存区的文件已提交把暂存区的文件提交到本地仓库后的状态
几个参数
参数描述main/master默认主分支orgin默认远程仓库HEAD指向当前分支的指针,当前版本HEAD^上一个版本HEAD上四个版本HEAD2上两个版本
特殊文件
文件名描述.gitGit 仓库的元数据和对象数据库.gitignore忽略文件,不需要提交到仓库的文件.gitattributes指向当前分支的指针.gitkeep使空目录被提交到仓库.gitmodules记录子模块的信息.gitconfig记录仓库的配置信息
添加和提交
添加一个文件到暂存区, 比如
git add .
就表示添加所有文件到暂存区
gitadd<file>
提交所有暂存区的文件到本地仓库
git commit -m "message"
提交所有已修改的文件到本地仓库
git commit -am "message"
撤销和恢复
移动一个文件到新的位置
gitmv<file><new-file>
从工作区和暂存区删除一个文件
gitrm<file>
或者
rm<file> 删除工作区,暂存区没删除
gitadd<file> 提交工作区的内容,相当于从暂存区是删除 <file>
从索引/暂存区中删除文件, 但是本地工作区文件还在, 只是不希望这个文件被版本控制
gitrm --cached <file>
恢复一个文件到之前的版本
git checkout <file><commit-id>
创建一个新的提交, 用来撤销指定的提交, 后者的所有变化将被前者抵消, 并且应用到 当前分支
git revert <commit-id>
重置当前分支的
HEAD
为之前的某个提交, 并且删除所有之后的提交
--hard
参数表示重置工作区和暂存区--soft
参数表示重置暂存区--mixed
参数表示重置工作区
git reset --mixed <commit-id>
撤销暂存区的文件, 重新放回工作区 (
git add
的反向操作)
git restore --staged <file>
查看状态或差异
查看仓库状态, 列出还未提交的新的或修改的文件
git status
查看提交历史,
--oneline
表示简介模式
git log --oneline
查看未暂存的文件更新了哪些部分
gitdiff
查看两个提交之间的差异
gitdiff<commit-id><commit-id>
查看工作区和版本库之间的差异
gitdiff HEAD
查看暂存区和版本库之间的差异
gitdiff --cached
远程仓库
添加远程仓库
git remote add<remote-name><remote-url>
查看远程仓库
git remote -v
删除远程仓库
git remote rm<remote-name>
重命名远程仓库
git remote rename<old-name><new-name>
从远程仓库拉取代码。 默认拉取远程仓库名
origin
的
master
或者
main
分支
git pull <remote-name><branch-name>
将本地改动的代码
rebase
到远程仓库的最新代码上 (为了有一个干净、 线性的提交历史)
git pull --rebase
推送代码到远程仓库 (然后再发起
pull request
)
git push <remote-name><branch-name>
获取所有远程分支
git fetch <remote-name>
查看远程分支
git branch -r
fetch
某一个特定的远程分支
git fetch <remote-name><branch-name>
分支
查看所有本地分支, 当前分支前面会有一个星号
*
,
-r
查看远程分支,
-a
查看所有分支
git branch
创建一个新的分支
git branch <branch-name>
切换到指定分区,并更新工作区
git checkout -b <branch-name>
删除一个已经合并的分支
git branch -d <branch-name>
删除一个分支,不管是否合并
git branch -D <branch-name>
给当前的提交打上标签, 通常用于版本发布
git tag <branch-name>
合并分支,
--no-ff
参数表示禁用
FastForward
模式, 合并后的历史有分支, 能看出曾经做过合并, 而
-ff
参数表示使用
FastForward
模式, 合并后的历史会变成一条直线
git merge --no-ff -m message <branch-name>
合并&挤压 (squash) 所有提交到一个提交
git squash <branch-name>
rebase
操作可以把本地未
push
的分叉提交历史整理成直线, 看起来更加直观。 但是, 如果多人协作时, 不要对已经推送到远程的分支执行
rebase
操作。
rebase
不会产生新的提交, 而是把当前分支的每一个提交都 “复制”到目标分支上, 然后再把当前分支指向目标分支, 而
merge
会产生一个 新的提交, 这个提交有两个分支的所有修改
git rebase <main>
说明: 参考学习: https://www.bilibili.com/video/BV1HM411377j/?spm_id_from=333.337.search-card.all.click
版权归原作者 星竹 所有, 如有侵权,请联系我们删除。