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


xingzhu
keep trying!keep doing!believe in yourself!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 星竹!