一:从本地分支branch_a提交修改到远端分支branch_b
$ git status # 可选操作,用于查看本地的修改状况
$ git add xxxxx # xxxxx代表想要提交文件的具体路径
$ git commit -m "commit_message"
$ git stash -m "stash_message" # 可选操作,若本地有没有commit的改动又想保留此改动,则需要执行此操作
$ git pull origin branch_b # 将远端分支branch_b的修改拉下来(若有冲突,要先处理冲突再push)
$ git push # 将commit的修改推上远端同名分支,然后再创建merge request合入branch_b分支
$ git stash pop # 将本地暂存的修改弹出
tips:
使用git log命令查看版本号时,如想退出查看log的状态,可在英文输入法下输入q
git status打印出的信息中绿色表示add过的修改,红色表示尚未add的修改,此命令可在git add 操作前后执行,用于明晰即将提交的到底是什么修改
二:一次push了多个commit,但其中又有某一个commit是不想要的
# 一次push了commit1、commit2、commit3,但是想撤销commit2的修改并保留commit1、commit3的修改
$ git log # 查看commit的版本号
$ git revert -n commit commit2的版本号 #
三:撤销提交到暂存区的修改(退回本地)
用git status
查看时,会发现有些自动提交到暂存区的修改(就是绿色显示的文件名,我感觉是合并分支、弹出暂存导致的),使用如下命令可进行处理
# 将暂存区的修改退回到本地
git reset --mixed head
# 若执行上一句命令时,弹出提示 unstaged changes after reset,则需要将这些修改回退
# 可使用 git diff head -- path查看具体的修改
# 修改回退完成后再次执行git reset --mixed head
四:从远端拉完代码到本地后,不想要了(撤销git pull的误操作)
1、使用git reflog
命令查看历史变更记录
fdb70fe HEAD@{0}: pull origin newpbft: Fast-forward
40a9a83 HEAD@{1}: checkout: moving from guan to master
b3fa4c3 HEAD@{2}: commit: copy from newpbft, first init
71bf0ec HEAD@{3}: checkout: moving from newpbft to guan
71bf0ec HEAD@{4}: commit: 1. add moveStore() to clean up certStore and blockStore.
1006d67 HEAD@{5}: commit: 1. Add PBFT branch to Puppeth.
fa3fb56 HEAD@{6}: commit: 1. change some errors about packages and vars
5f40fdc HEAD@{7}: checkout: moving from master to newpbft
40a9a83 HEAD@{8}: clone: from https://github.com/yeongchingtarn/geth-pbft.git
2、使用git reset --hard HEAD@{n}
,回退到指定的版本
如上图的记录中可运行git reset --hard 40a9a83
五:git stash pop时遇到冲突
背景:暂存了修改文件a、b、c、d,拉远端分支后,想要把暂存的修改弹出,弹出时文件b、c、d正常弹出,文件a遇到冲突:
用git status
查看会发现文件b、c、d的状态已经变成了Changes to be commited(文件名字是绿色的),如果想要撤销本次自动提交到暂存区的修改,可使用git reset --mixed head
修改虽然已经应用到工作区,但由于遇到了冲突,所以stash list里保留了此次修改,如不需要可使用git stash drop
删除
六:git push会进入编写提交信息的界面,输入:wq不能退出
[按esc]输入:wq
后提示不能成功退出编辑器,反而提示:
E45: 'readonly' option is set (add ! to override)
其实提示信息写的很全,告诉你出错原因是现在是只读模式,:wq表示保存并退出是不能起效的,解决办法是在后面加!来强制退出,最后我使用的是:q!
,表示不保存且强制退出wim编辑器