一、提交代码的流程
pull:是下拉代码,相等于将远程的代码下载到你本地,与你本地的代码合并
push:是推代码,将你的代码上传到远程的动作
完整的流程是:
第一种方法:(简单易懂)
1、git add .(后面有一个点,意思是将你本地所有修改了的文件添加到暂存区)
2、git commit -m""(引号里面是你的介绍,就是你的这次的提交是什么内容,便于你以后查看,这个是将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中)
3、git pull origin master 这是下拉代码,将远程最新的代码先跟你本地的代码合并一下,如果确定远程没有更新,可以不用这个,最好是每次都执行以下,完成之后打开代码查看有没有冲突,并解决,如果有冲突解决完成以后再次执行1跟2的操作
4、git push origin master 将代码推至远程就可以了
第二种方法:
1、git stash (这是将本地代码回滚值至上一次提交的时候,就是没有你新改的代码)
2、git pull origin master(将远程的拉下来)
3、git stash pop(将第一步回滚的代码释放出来,相等于将你修改的代码与下拉的代码合并)
然后解决冲突,你本地的代码将会是最新的代码
4、git add .
5、git commit -m""
6、git push origin master
这几步将代码推至了远程
最后再git pull origin master 一下,确保远程的全部拉下来,有的你刚提交完有人又提交了,你再拉一下会避免比的不是最新的问题
转自:https://www.cnblogs.com/zhanglingbing/p/9391098.html
二、git撤销本地修改与回退版本
1. 使用 git checkout
撤销本地修改
即放弃对本地已修改但尚未提交的文件的修改,还原其到未修改前的状态。
注意: 已 add
/ commit
的文件不适用个方法,应该用本文提到的第二种方法。
命令如下:
git checkout . # 撤销对所有已修改但未提交的文件的修改,但不包括新增的文件
git checkout [filename] # 撤销对指定文件的修改,[filename]为文件名
2. 使用 git reset
回退项目版本
可以回退到任意已经提交过的版本。已 add
/ commit
但未 push
的文件也适用。
命令如下:
git reset --hard [commit-hashcode]
# [commit-hashcode]是某个 commit 的哈希值,可以用 git log 查看
因此一般用法是先用 git log
查看具体commit的哈希值,然后 reset
到那个版本。
说明:
这两个命令都不会对新增文件起作用。因为新增的文件是还未加到 git
的记录里面的,即属于未被 tracked
的状态,所以撤销修改和回退均对其不影响。我们直接手动删除文件就行了。
三、git撤销commit
当我们写完代码后,我们一般都是
git add . // 添加所有文件 git commit - m "xxxxxx"
当我们git commit
完之后,还没有执行git push
,想修改/撤销这个commit
,怎么办?
1、如果只是想修改注释,可以这样操作
git commit --amend
这个时候进入vim
编辑,直接修改即可,修改完注释,退出vim
编辑
:wq
保存已编辑的注释,重新git push
即可
2、要撤回commit
git reset --soft HEAD^
这样就能成功的撤回你刚刚的commit
操作。
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
注意,这个命令仅仅是撤回commit操作,写的代码仍然保留
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^
和 git reset HEAD^
效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,会删除工作空间代码!!!恢复到上一次的commit状态。
四、问题:Please enter a commit message to explain why this merge is necessary, especially if it merges an updated upstream into a topic branch
- press "i" (i for insert)
- write your merge message
- press "esc" (escape)
- write ":wq" (write & quit)
- then press enter