Git—帮你提升效率的命令和注意事项

一、操作命令

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导致代码丢失

你可能感兴趣的:(Git—帮你提升效率的命令和注意事项)