- Remote:远程主仓库
- Repository:本地仓库
- Index:Git追踪树,暂存区
- workspace:本地工作区
一般代码提交流程为:
- 工作区
git status查看状态git add .将所有修改加入暂存区git commit -m "提交描述"将代码提交到本地仓库git push将本地仓库代码更新到远程仓库
git add 进阶
- 场景1:工作区
当改动了工作区的某个文件时,想恢复修改前,用命令
git checkout --flie
- 场景2:暂存区
当不但改动了工作区的某个文件时,想恢复修改前,还
git add添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
git commit 进阶
- 场景1:更改commit 信息
git commit --amend -m “新提交消息”
- 场景2:漏提交
git add <file>git commit -m“提交消息”此时,git 上会出现两次 commitgit add <file>git commit --amend --no-edit --no-edit表示提交消息不会更改,在git上仅为一次提交
- 场景3:提交了错误文件
git reset删除指定的 commit
--mixed默认选项,会把暂存区里的东西重置到指定提交状态,并且指针指向这个提交。
修改版本库,保留暂存区,保留工作区
git reset --soft HEAD~1
将版本库软回退1个版本,软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区。
修改版本库,修改暂存区,修改工作区
git reset --hard HEAD~1
将版本库回退1个版本,不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本
git版本回退,回退到特定的commit_id版本,可以通过git log查看提交历史,以便确定要回退到哪个版本(commit 之后的即为ID)
git reset --hard commit_id
git revert
撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。
// 撤销前一次 commit
git revert HEAD
// 撤销前前一次 commit
git revert HEAD^
// 撤销指定的版本,撤销也会作为一次提交进行保存。
git revert commit-id
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去, 版本会递增,不影响之前提交的内容
分支branch
-
查看,创建项目分支
git branch
git checkout -b [name_new_branch] -
删除分支
git branch -d [name_branch] -
切换分支
git checkout [branch-name] -
分区合并
git merge [your_branch]
注意:如果你合并master ,首先需要切换到master 分支下进行合并。 -
分区对比
git diff [branch]..[branch] -
重命名branch
git branch -m [branch] [new_name_branch]
远程 remote
-
添加远程地址
git remote add origin [git_address] -
拉取远程主机某分支的更新,再与本地的指定分支合并(相当与fetch加上了合并分支功能的操作)
git pull -
分支推送到远程的版本
git push origin master
优化操作
拉取代码 pull --rebase
tip:rebase 在git 中,算得上是『危险行为』,
使用 git pull --rebase比直接 pull 容易导致冲突的产生,如果预期冲突比较多的话,建议还是直接 pull。
注意:
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase