git部分常用命令

git部分常用命令

git命令日常记录,可能存在不准确的地方,仅供参考。

常用:

git status 查看状态

git pull 更新代码
git pull 相当于是git fetch + git merge
git pull -r 也就是git pull –-rebase,相当于git fetch + git rebase
git pull origin 更新指定远程分支代码

git push 推送修改到远程
git push origin 推送到远程某分支上
git push origin HEAD:refs/for/分支名 提交代码到远程等待评审

git log 查看提交记录信息 (以便确定要回退到哪个版本)
git log --pretty=oneline 查看提交信息 简洁版
git log -n n代表数量,查看多少条commit记录
git log -p 控制输出每个commit具体修改的内容,输出的形式以diff的形式给出

git reflog 查看所有命令操作记录,可以看已经删除了的和git commit --amend的commit 记录,而log不能

git add 添加指定修改或新增文件到暂存区
git add . 添加所有修改的文件或新增的额文件(不包括删除文件)到暂存区
git add -u 更新修改文件或删除文件(不包括新增文件)到暂存区
git add -A 添加所有修改到暂存区包括所有情况

git commit -m “commit remark” 提交到本地仓库
git commit -am “commit remark” add并提交到仓库
git commit -a -m “commit remark” add并提交到仓库
git commit --amend 更改commit提交
git commit —amend -m “msg” 更新commit提交且修改提交msg

git show 查看对应的修改

git clone url 克隆代码到本地
git clone -b url 克隆指定分支代码到本地
git clone -b --depth 1 克隆某分支的最新一次提交记录,某些情况不成功。。
git clone -b --single-branch --depth 1 克隆某分支最新一次提交记录
git clone -b --single-branch 只克隆某分支

git stash(save) msg 将工作区和暂存区(未提交)修改内容储藏,保存储藏msg信息
git stash pop 恢复最近一次储藏内容到工作区,并删除这次储藏区内容,只可恢复一次
git stash apply 恢复最近一次储藏内容,不会删除这次隐藏区内容, 可重复恢复到多个分支
git stash drop 恢复最近一次储藏内容
git stash clear 清空储藏区内容
git stash list 查看储藏区内容 显示为stash@{0}列表
git stash apply stash@{0} 恢复某次储藏内容,不会删除某次隐藏区内容
git stash pop stash@{0} 恢复某次储藏内容,并删除某次隐藏区内容,如果已经add后的文件stash起来,pop后还是
git stash drop stash@{0} 恢复某次储藏内容
备注:不加stash@{1},默认操作的是最近一次,不管是save,pop,apply还是drop

git diff 比较当前文件和暂存区文件差异
git diff 比较两次提交之间的差异
git diff 在两个分支之间比较
git diff origin/ 在两个分支之间比较,本地和远程
git diff --staged 比较暂存区和版本库差异
git diff --cached 比较暂存区和版本库差异
git diff --stat 仅仅比较统计信息,不会显示改动内容
git diff --stat commitIdOld commitIdNew 比较两个commit id 之间的修改行数
git diff commit1 commit2 > patch.diff(commit之间前开后闭原则) 生成patch文件方式1

git format-patch 【commit id】…【commit id】生成patch文件
git apply patch.diff 应用diff文件
git am .patch / git apply .patch 应用patch文件, am 成功后会直接提交并保留提交信息,apply只是修改了文件不会提交
git apply/am /*.patch 可以apply一个文件或某个目录下多个文件
(注:解决patch文件冲突步骤:
(1)git apply/am .patch --reject 强制合入不冲突的文件,冲突文件会生成.rej文件
(2)git add file 解决完冲突后,将所有文件添加到暂存区
(3)git am --resolved 此时即可合入(提交)完成)

git remove 查看远程库信息
git remove 查看远程库详细信息

gitk 启动提交记录面板,清晰看到提交信息,提交时间和id等

分支

注:分支没有子分支的概念,项目的分支是平行关系

git branch 查看本地分支
git branch -a 查看远程分支
git branch 创建分支

git checkout 切换分支
git checkout -b 创建并切换到该分支上

git branch -d 删除某个分支
git branch -D 强制删除某个分支

git fetch origin : 使用远程分支在本地创建分支(但不会切换到该分支),如果本地不存在该分支, 则会自动创建一个新的本地分支,

git checkout -b origin/ 在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致

git checkout --track origin/branch_name 这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name

git chekcout – 或git chekcout . 撤销还没有添加到暂存区(工作区)的修改

重点

git reset (–mixed 默认)HEAD /
改变add和commit的记录,恢复到某个版本的状态

git reset (–soft) HEAD~1/HEAD /
改变commit的记录,添加文件记录不变,恢复到某个版本的状态

git reset (–hard) HEAD~1/HEAD /
改变add和commit的记录同时工作区的代码也会恢复到某个版本

git reset HEAD – 将add过的某文件从暂存区删除

git revert / HEAD~1/HEAD
提交记录及工作区代码会恢复到以前某个版本

( 注:1.由于cmd认为^符号是换行,无法准确识别,所以可以写成HEAD或HEAD1
2.在 Git中,用HEAD表示当前版本,也就是最新的提交commit id,上一个版本就是HEAD,上上一个版本就是HEAD^,上100个版本写成HEAD~100, HEAD指向当前分支上的最新一次commit
3.git reset是直接删除指定的commit,把HEAD向后移动了一下
4.git revert是一次新的特殊的commit,HEAD继续前进,本质和普通add commit一样,仅仅是commit内容很特殊:提交的内容是与前面普通commit文本变化的反操作)

git merge 合并某分支到当前分支
git merge -m “commid msg” 合并某分支到当前分支,添加commit备注信息
git merge v1.0 --no-commit --no-ff 合并某分支到当前分支,不自动提交?
git merge —abort 中断合入

git cherry-pick 合并别的分支上某提交记录到当前分支,自动提交到本地
git cherry-pick --continue 合并别的分支上某提交记录到当前分支,并继续合入
git cherry-pick --abort 合并别的分支上某提交记录到当前分支,撤销执行合入
git cherry-pick com1…com9 合并com1到com9的所有更改 前开后闭(1,9]
git cherry-pick -n 合并别的分支上某提交记录到当前分支,不自动提交到本地
git cherry-pick -e 合并别的分支上某提交记录到当前分支,可以修改提交信息

git rebase -i 合并某分支到当前分支,-i表示弹出可视化页面,随便按个字母进入编辑模式,DD可直接删除某pick
git rebase --continue 合并某分支到当前分支,并继续执行
git rebase --abort 合并某分支到当前分支,撤销执行
git rebase –skip 合并某分支到当前分支,跳过某次执行
git rebase -i HEAD/ 可视化你要合并的分支提价记录,还可删除某些提交,相当于多个cherry pick

( rebase参数详解:
1. pick就是说保留该commit, 也可以用缩写p
reword, 和pick类似, 但可以修改commit时的提交信息(中间会弹出 来让你修改commit).可以用缩写r代替 (紫红色).
2.squash, 使用该commit但合并到前一个老的commit去(常用), 可以用缩写s代替
3. fixup, 和squash类似, 但会舍弃commit信息, 可以用缩写f
4.edit, 使用commit, 但停下来进行修改, 可能用于merge冲突, 可以用缩写e代替
4. exec, 执行shell命令.可以用缩写x, x直接退出可视编辑页,
直接开始rebase
5.shift+:, wq ,保存编辑后的pick等记录)

rebase过程详解:
1.新分支2-1-6-2_xxx_feature,老分支2-1-6-1_xxx_feature, 在新分支上更新最新代码,顺便删除老分支(可选,为避免一些错误)
2.下载老分支最新代码并切换到老分支上,(git checkout 老分支名称)
3.在老分支上更新最新代码,(git pull 老分支名称)
4.在老分支上开始rebase,(git rebase -i 新分支名称)
5.出现可视化界面,DD删除某条pick
6.保存更改,shift+:wq
7.开始rebase,如果没有冲突直接回成功
8.有冲突需要找到冲突文件,解决冲突,然后add冲突文件,
然后继续rebase(git rebase --continue)
9.rebase成功之后,需要push到服务器,将修改push到新分支
最后一步,可由老分支切换到新分支

修改提交过的文件

git reset --soft commit_id
git add 修改或新增的文件
git commit --amend

修改提交的信息msg

git commit --amend
修改需要提交的msg信息:delete是删除信息
退出编辑msg状态:esc
进入可保存退出状态:shift+:
保存退出: wq
push到服务器

你可能感兴趣的:(常用工具,git,github)