# ---------git-开发时常用操作------------
1、git pull --rebase
# 开发分支dev提交代码
git banch 查看分支
git status
git add .
git commit -m '提交的内容描述'
git pull --rebase # 保证当前分支最新
git push # 提交
# 合并到master
git checkout master
git status
git pull --rebase # 保证当前master最新
git merge dev # 合并dev分支
git status
git push origin master # 提交
2、git stash
# 暂存当前修改,有修改本次不提交,可暂时保存起来,提交后再pop出来;
# 保存当前未commit的代码
git stash
# 保存当前未commit的代码并添加备注
git stash save "备注的内容"
# 列出stash的所有记录
git stash list
# 应用最近一次stash,随后删除该记录;
git stash pop
# 应用最近一次的stash
git stash apply
# 删除stash的所有记录
git stash clear
# 删除最近的一次stash
git stash drop
3、git reset --soft
# 回退你已提交的 commit,并将 commit 的修改内容放回到暂存区。
git reset --hard会被提及的比较多,它能让 commit 记录强制回溯到某一个节点。
git reset --soft的作用正如其名,--soft(柔软的) 除了回溯节点外,还会保留节点之后所有的修改内容。
ps: 在reset --soft指定 commit 号时,会将该 commit 到最近一次 commit 的所有修改内容全部恢复,而不是只针对该 commit。
# 恢复最近一次 commit
git reset --soft HEAD^
对于已经 push 的 commit,也可以使用该命令,不过再次 push 时,由于远程分支和本地分支有差异,需要强制推送git push -f来覆盖被 reset 的 commit。
应用场景:当前分支上最新几条提交记录全部都是你修改某个功能提交的代码,想要合成一条记录比较美观,有时候测试需要提交后更新到指定测试环境才能测试,某个功能多次修改会提交多次记录,这时使用 git reset --soft f1525ea383c(这个commit之后全部是你对同一个功能的修改记录) 将这个功能的所有修改全部回复到你本地工作环境,重新将全部内容commit成一条记录(git add ./ ;git commit -m '提交的内容描述';),然后使用git push -f ;注意不要包含其他人的commit,不然其他人的commit内容记录会变成是你提交的;
4、git revert
将现有的提交还原,恢复提交的内容,并生成一条还原记录。
应用场景:有一天测试突然跟你说,你开发上线的功能有问题,需要马上撤回,否则会影响到系统使用。这时可能会想到用 reset 回退,可是你看了看分支上最新的提交还有其他同事的代码,用 reset 会把这部分代码也撤回了。由于情况紧急,又想不到好方法,还是任性的使用 reset,然后再让同事把他的代码合一遍(同事听到想打人)。
# revert 掉自己提交的 commit
git revert 51dcdcd9.......
因为 revert 会生成一条新的提交记录,这时会让你编辑提交信息,编辑完后 :wq 保存退出就好了。
# ---------git-开发时常用操作------------END
git init # 初始化本地git仓库(创建新仓库)
git clone http://xxxx/dev # clone远程仓库
git status # 查看当前版本状态(是否修改)
git add xyz # 添加xyz文件至index
git add . # 增加当前子目录下所有更改过的文件至index ;保存新的添加和修改,但是不包括删除
git add -A # 保存所有的修改(修改和删除、新建)
git commit -m 'xxx' # 提交
git log # 显示提交日志
git log -1 # 显示1行日志 -n为n行
git show HEAD # 显示HEAD提交日志
git diff # 显示所有未添加至index的变更
git diff HEAD^ # 比较与上一个版本的差异
git branch # 显示本地分支
git branch --contains 50089 # 显示包含提交50089的分支
git branch -a # 显示所有分支
git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
git stash # 暂存当前修改,将所有至为HEAD状态
git stash list # 查看所有暂存
git stash pop # 将文件从临时空间pop下来
git merge origin/master # 合并远程master分支至当前分支
git push origin master # 将当前分支push到远程master分支