一、操作命令
1、拉取color-life分支
git checkout -b color-life
git status
git pull
git lg 查看本地和以前提交历史
git fetch origin color-life
git branch --set-upstream-to=origin/color-life color-life
git branch --set-upstream 本地关联远程分支
git rebase --continue
本地假如有代码改动的就把本地的代码先暂存
git add .
git commit -m"备注内容"
git push
git pull origin color-life
2、解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题
git stash list
查看本地仓库中都存储了几个stash版本
git stash pop
将仓库中的代码合到本地最新代码
git stash show
显示stash合并到本地代码后,哪些文件会修改,以及修改的概述
如果不小心把自己的内容搞丢了,可以使用 git fsck --lost-found
3、fetch更新本地仓库两种方式:
//方法一
$ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
$ git log -p master.. origin/master//比较本地的仓库和远程参考的区别
$ git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并
//方法二
$ git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
$ git diff temp//比较master分支和temp分支的不同
$ git merge temp//合并temp分支到master分支
$ git branch -d temp//删除temp
4、git reset
没有push,这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题.
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交commit_id(79f673d631b08907496ce792f429e1f00da25b73),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard 79f673d631b08907496ce792f429e1f00da25b73。
git reset --hard origin/color-life
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
5、git revert
已经push,对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令
git revert用一个新提交来消除一个历史提交所做的任何修改.
revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)
revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
两者区别
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit看似达到的效果是一样的,其实完全不同.
第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突(或git push -f强制推送).但是revert 并不会.
第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.
6、 git push -u origin master
上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
二、碰到的bug以及注意事项
1、在自己的分支下写代码,不要在项目分支下写代码,之后可以继续合并
2、git 提交、申请合并的描述,都要详细地写,切不可马虎应付,不然后面没法排查和回溯
3、不要再rebase状态下修改代码,拉下来后赶紧提交后,与服务器同步后再修改代码
碰到困惑是记得手动保存一下文件
4、checkout导致代码错乱:提交后再checkout
5、下班之前一定要git push ,以防本地一些意外的bug导致代码丢失