图示
名次解释
origin 默认远程仓库名
命令
命令 | 作用 |
---|---|
git clone git@github.com:UserName/projectName.git | 克隆远程库到本地 |
git remote add origin git@github.com:UserName/projectName.git | 绑定本地库到github中远程库 |
git push -u origin 本地分支名 | 配合上一个使用,推送本地分支到远程库分支,并且绑定本地分支与远程分支的推送关系. |
git push | 若当前本地分支与远程分支有推送关系,则可以直接使用此命令进行推送 |
git push -f | 强制推送本地仓库覆盖远程仓库 |
git status | 查看状态 |
git log | 查看日志 |
git reflog | 查看历史的分支 |
git branch | 列出所有本地分支 |
git branch -a | 列出所有分支(包括远程) |
git branch 新分支名 | 创建新分支,创建分支但依然停留在当前分支 |
git branch -d 分支名 | 删除某存在分支,如果在分支中有一些未merge的提交,那么会删除分支失败,此时可以使用 git branch -D 分支名 :强制删除dev分支 |
git add | 暂存 |
git commit - m "提交说明 " | 提交 |
git reset --soft HEAD^ | 撤销git commit,保留git add,不修改工作区。 |
git reset --mixed HEAD^ | 撤销git commit,撤销git add,不修改工作区。 |
git reset --hard HEAD^ | 撤销git commit, 撤销git add, 工作区恢复到上次commit的状态。 |
git reset HEAD 文件名 | 撤销暂存,文件返回最近的提交的储存内容 |
git checkout 文件名 | 撤销文件修改修改,文件返回最近的暂存区储存内容 |
git checkout 分支名 | 切换分支(该分支必须存在) |
git checkout -b 分支名 | 切换分支,如果不存在则创建该分支(在当前节点上创建) |
git merge --ff 分支名 | merge某分支到当前分支上. 快速合并.如果合并过程出现冲突,Git会显示出冲突并等待手动解决 |
git merge --ff-only 分支名 | merge某分支到当前分支上. 如果合并过程出现冲突,Git会自动abort此次merge |
git merge --no-ff 分支名 | merge某分支到当前分支上. 采用no-ff规则进行merge. |
git fetch | 只是拉取了远程 commit 数据,将本地上的远程仓库副本的 commit id 更新为latest |
git pull | git fetch + git merge/ git rebase |
merge参数的含义
--ff
fast-forward 默认参数,允许快速移动指针.
--no-ff
no-fast-forward merge时不允许快速移动指针.每次merge都必须生成一个merge专属节点!
一般出现在dev、release上首次集成(merge)特性分支时候,--ff
会与--no-ff
参数有明显区别,若使用该--ff
参数,此时dev会直接移动指针到这个特性分支的最新commit节点. 相对应的,若使用--no-ff
参数,则会新生成一个merge节点,然后将dev的指针移动到这个merge节点上.
--squash
将merge的所有内容commit合并到一个独立的节点上,然后merge到dev上.(此种手段肯定不会有快速移动指针的情况发生)
具体使用
克隆库有两种模式:使用https和使用ssh。
git clone https://***
这种克隆方式如果需要提交修改等,需要提供github账户和密码git clone git@****
这种克隆方式一开始就需要密匙,如果没有密匙,会被拒绝
获得密匙
本地创建
ssh
密匙$ ssh-keygen -t rsa -C "youremail@example.com" // 进阶版,加密性高的方案 $ ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
- 在主目录下找到
.ssh
文件夹,找到id_rsa.pub
这个文件,用VScode打开并复制文本内容 - 将文本内容添加到
GitHub
中的ssh
git配置推荐
git配置显示命令
git config --list
autocrlf
autocrlf 的作用是自动处理行结束符的转换。它有三个可能的设置值:
true:在 Windows 系统上常用。它会在提交时将 Windows 风格的行结束符(CRLF)转换为 Unix 风格的行结束符(LF),而在检出时将 LF 转换回 CRLF。这可以确保在不同平台之间共享代码时,行结束符的一致性。
input:在 Unix/Linux 或 macOS 系统上常用。它只在提交时将 CRLF 转换为 LF,而在检出时不做任何转换。这意味着在版本库中始终存储 LF,不管开发者的操作系统是什么。
false:禁用自动转换。Git 会将文件中的行结束符原样存储和检出,不进行任何转换。
safecrlf
safecrlf 是一个安全检查选项,用于防止不一致的行结束符被提交到版本库中。它有以下设置值:
true:如果检测到不一致的行结束符(例如,一个文件中同时存在 CRLF 和 LF),Git 会拒绝提交。这可以防止意外的行结束符混乱。
warn:如果检测到不一致的行结束符,Git 会发出警告,但仍允许提交。
false:禁用此检查,不进行任何警告或阻止。
配置代码
mac用户推荐
git config --global core.autocrlf input
git config --global core.safecrlf true
win用户推荐
git config --global core.autocrlf true
git config --global core.safecrlf true