0. 基础
add
git add aall,添加被修改(modified)、被删除(deleted)、新文件(new)到暂存区
git add uupdate,添加被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add .添加新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
commit
git commit -m "版本信息"提交暂存区到版本库并带上版本信息
git commit -m "消息" --amend改善提交,即修改代码或修改版本信息后,再提交hash不变,不会产生新的Commit
git init本地初始化一个git仓库
1. 查看
git log显示所有的提交记录(包括hash, 作者信息,提交消息和时间),按q退出
git reflog可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git status显示工作路径下文件的状态,如未追踪、已修改、已删除等
git diff详细显示每个追踪的文件和上次commit的版本的不同之处
2. 恢复
git reset --mix(默认)变动:
- 保留工作区变动
- 把暂存区放到工作区
- 当前Commit和要回退到的Commit的差异放到工作区
- 将HEAD直接指向要回退到的Commit
使用场景:
- 执行命令后,再 add -all 一次,再commit一次,达到合并一连串的Commit成一个新的Commit的效果
- reset HEAD 清空暂存区内容
git reset --hard变动:
- 清空工作区的变动
- 清空暂存区
- 将HEAD直接指向要回退到的Commit
使用场景:
- 放弃工作区所有修改,包括暂存区(使用restore并不能清空该区),直接回退到上一个Commit
- 把回退到某个Commit后的Commit全部删除
git reset --soft变动:
- 保留工作区得变动
- 保留暂存区,
- 把当前Commit和要回退到的Commit的差异放到暂存区
- 将HEAD直接指向要回退到的Commit
使用场景:
- 如过reset后直接再commit,相当于合并一连串的Commit成一个新的Commit
3. 删除
git remove删除文件
git remove -f强制删除文件
git remove --cache是文件从暂存区删除并脱管
4. 分支
创建分支
git branch "分支名"只是在当前分支上添加一个新的指针,并不会复制一份Commit
切换分支
git checkout <分支名>或新版git switch <分支名>切换分支相当于把HEAD指向要切换的分支,原来HEAD指向master,切换后如图
创建分支的同时切换到新创建的分支
git checkout -b <分支名>查看所有分支
git branch删除分支
合并别的分支到当前分支
git merge <别的分支>将父分支合并到子分支
只是简单的将父分支指向子分支,因为子分支已经包含父分支所有内容
移动当前分支到别的分支(变基)
git rebase <别的分支>可视化移动分支和删除分支
git rebase -i <Commit的标识>如:git rebase -i c3可以可视化操作c5、c4,不包含c3把别的Commit捡到当前分支
git cherry-pick <别的Commit标识>把分支指向别的Commit
git branch -f <要操作的分支> <别的Commit标识>如 master 分支本来指向 c4,执行命令后如图
5. 标签
创建标签
git tag <标签名> <Commit标识>获取某个Commit距离最近的标签
git describe <某个Commit的标识>返回结果格式:标签名_离Commit的距离_g当前Commit的哈希值
6. 获取
拷贝远程仓库全部分支到本地
git clone ssh://user@domain.com/repo.gito代表远程仓库名master代表分支名,git clone 时默认远程仓库名为origin
不能直接切换到远程仓库分支,然后commit远程分支,只能commit和远程分支绑定的本地分支
把远程所有分支的变动下载到本地
git fetch ssh://user@domain.com/repo.git但不会修改我们的本地分支把本地的某个分支在远程的变动下载到本地
git fetch origin <本地分支>但不会更新本地分支把远程的某个Commit下载到本地,并同步更新本地分支到下载下来的
git fetch origin <远程Commit标识>:<本地其他分支>本地分支不存在会自动创建git pull相当于
git fetch远程分支之后再git merge远程分支到相应的本地分支git pull --rebase相当于
git fetch远程分支之后再git rebase本地分支到远程分支一般用来解决:当我们push我们的分支到远程仓库时由于该分支在远程仓库已经被别人更新过,我们要先把远程分支fetch到本地,再把本地分支rebase之后才能push
git pull origin 远程分支拉取远程的某个分支,并把拉取的分支merge到当前分支
pull远程的某个分支到本地某个分支,然后将pull的分支merge到当前分支
git pull orgin <远程分支>:<本地分支>本地分支不存在会自动创建
7. 推送
推送当前分支到远程仓库
git push推送本地某个分支到远程仓库
git push origin 本地分支orgin是默认的远程仓库名推送本地的某个Commit到远程仓库的某一个分支
git push origin <Commit标识>:<远程仓库分支>远程仓库分支不存在会自动创建
8. 远程追踪
将本地的某个分支追踪到其他远程分支
git checkout -b 本地分支 origin/远程分支即本地分支和远程分支不再是默认的绑定状态将远程分支绑定到其他本地分支
git branch -u origin/远程分支名 本地分支名
























































