1.git工作区、暂存区、本地仓库、远程仓库
命令 | 操作 |
git add '文件名/文件夹名' | 添加文件到暂存区 |
git commit -m 'message' | 提交暂存区文件到仓库区 |
git push | 上传到远程仓库 |
git clone 'url' | 下载项目 |
git fetch | 下载远程仓库的变动,不会自动合并和修改,用户在检查了之后决定是否合并到工作区 |
git pull | 从远程仓库拉取代码并合并到本地的版本,自动合并修改 |
git checkout | 切换分支 |
2.git pull
git pull | 从远端拉取代码,更新我们的仓库。git pull --merage的简写。 |
git pull --rebase | 将远程的最新内容拉到本地库之后直接移到到工作区 |
git rebase | 将提交到某一分支上的所有修改都移至另一分支上。即如果在B分支上使用git rebase A就是将B分支上的修改都变基(移到)A分支上 |
git pull但是不覆盖修改的代码
3.git commit
git commit | |
git commit --amend | 修改你最近的一次提交 |
git commit -a | 提交工作区自上次提交之后的变化,直接到仓库区 |
git commit -v | 提交时显示所有的diff信息 |
git commit --amend -m [message] | 使用一次新的提交,替代上一次提交(如果代码没有任何变化,则用来改写上一次提交的信息) |
git commit --amend | 重做上一次提交且更改提交信息 |
git commit --amend --no-edit | 补充上一次提交且不更改提交信息 |
4.git stash
git stash | 隐藏工作现场。保存当前的工作进度,把暂存区和工作区的改动保存到一个未完结变更的堆栈中;执行完这个命令后,可以随意切换分支,git stash 是本地的不会上传到服务器上 |
git stash save 'message...' | 添加本次草稿的注释 |
git stash list | 查看所有的隐藏,结果为: |
git stash apply n | 重新显示标识为n的隐藏,n为stash list结果里面的0、1、2、3 |
git stash drop n | 删除标识为n的隐藏。git apply恢复隐藏之后,需要手动删除list列表的记录 |
git stash pop | 恢复最新的进度到工作区 |
git stash pop stash@[stash_id] | 恢复指定的进度到工作区 |
5.git reset
git reset | 删除已跟踪的文件,将已commit的回退 |
git reset --hard | 彻底回退到某个版本,撤销工作区所有未提交的修改内容 |
git reset --mixed | git reset 默认方式,等同于git reset 修改内容还在,变成未add的状态, |
git reset --soft | 修改内容还在,变成已add未commit状态 |
6.git clean
git clean 用于删除工作目录中没有被tracked的文件
git clean -nxdf | 查看要删除的文件及目录,确认无误后再使用下面的命令进行删除 |
git clean -n | 不实际删除,只是进行演练,展示将要进行的操作,告诉你那些文件会被删掉 |
git clean -f | 删除文件 |
git clean -i | 显示将要删除的文件 |
git clean -d | 递归删除目录及文件(未跟踪的) |
git clean -q | 仅显示错误,成功删除的文件不显示 |
7.git diff
git diff 查看修改内容
git diff | 默认查看的就是工作区和暂存区之间所有文件的差异 |
git diff -- 文件名 | 查看具体某个文件在工作区和暂存区之间的差异 |
8.git log
git log | 查看提交历史 |
git log --oneline | 简化git log的默认输出 |
9.git cherry-pick
git cherry-pick 'id' 摘取某个commit_id到当前分支下,一个分支摘取另一个分支的某个commit提交
10.解决提交冲突
- git log 查看历史版本
- git reset --hard '版本id' 回退到上一个版本
- git pull --rebase 解决冲突
- git fetch 将自己提交的代码拉下来,解决出现的冲突
- git add '文件/文件夹' 重新add
- git commit 不需要再写-m
- git push
11.合并两次提交
- 在第一次提交之后继续修改工作区文件
- git add 将工作区提交到暂存区
- git commit --amend --no-edit 合并两次提交且不修改提交说明
或:git commit --amend 修改提交说明
- git push
12.git commit --amend 修改提交说明
修改最近一次提交的说明
i 进入编辑
esc 退出
:wq 退出该文件并保存
13.放弃本地修改,使用服务器代码覆盖本地代码
git fetch --all
git reset --hard origin/master
git pull
14.git revert 和 git reset区别
git reset会修改版本历史,会弄丢一些版本历史
而git revert 是根据commit逆向生成一个新的commit,版本历史不会被破坏
15.git commit提交信息写错了,但是还没有push,修改提交信息
git commit --amend --only 打开默认编辑器,在这里可以编辑信息
git commit --amend --only -m 'xxxxxx' 将信息修改成xxxxxx