git命令常用命令整理

589 阅读3分钟

常用命令

git init //初始化仓库
git status //查看工作区的状态
git add [文件名] // 将文件从工作区添加到暂存区
git commit -m 'xxx' //讲暂存区中的文件提交到版本库 .git中
git log //查看commit次数日志
git reset --hard cmmitId //根据每次commitid 进行版本切换
git log --pretty=oneline //简化日志
git reset --hard HEAD^ //直接回退到上一个版本 麻烦是回退之前的版本后,最新的commitid 没了
git reflog //历史版本包括已经被删除的 commit  记录和 reset 的操作
git reset --hard  commitid //可以返回最新版本
git checkout --[文件名] //工作区commit后撤销
git reset HEAD // 撤销add 绿字变红字
git checkout -- [文件名] //撤销更改 红色变无色

拉取远程代码

git clone [远程url] //拉取远程分支到本地 会自动关联
git clone -b [远程分支] [远程url] //clone特定分支上面的代码;本地的分支名会以远程拉去的分支名
git remote add origin [url] //本地仓库和远程仓库建立关联
git remote //查看当前本地仓库所关联的远程仓库
git push [远程主机] [本地分支名]:[远程分支名]

分支操作

git branch //查看分支
git branch -a // 查看远程分支+本地分支
git branch -r //查看远程分支
git checkout -b [分支名] //**在当前分支**新建分支并切换到新建分支上
git checkout [分支名] //切换分支
git branch -d [分支名] //删除分支,没有merge的分支不能删除
git branch -D [分支名] //强制删除,没有merge也可以删除
**合并分支前先切换到master分支**
git merge [分支名] //合并分支

情况:

1,在本地切换分支并拉去远端分支

方法一:

//首先先获取远端的最新分支情况(前提分支已经在远端建立)

git fetch [远程主机名]//获取远端最新分支 
git fetch [远程主机名] [分支名] //获取特定分支名
git branch -r //可以查看远程分支是否有想要的分支
git checkout -b [本地分支名] [远程主机名]/[远程分支] // eg. git checkout -b test origin/test 
git push [远程主机] [本地分支名]:[远程分支名] //推送到远端

使用该方式会在本地新建分支,并自动切换到该本地分支,采用此种方法建立的本地分支会和远程分支建立映射关系。通过git pull 可以直接将代码pull上去。

方法二:

git fetch [远程主机名] [远程分支名]:[本地分支名]
git checkout [刚刚的本地分支名]
使用该方式会在本地新建分支,但是不会自动切换到该本地分支,需要手动checkout 分支,切换分支后不需要在merge 代码已经合并到本地的分支名中
采用此种方法建立的本地分支不会和远程分支建立映射关系。
git push [远程主机名] [本地分支名]:[远程分支名]

方法三:

git fetch [远程主机名] [远程分支名]
git checkout -b [新建的本地分支名] 
git log -p FETCH_HEAD //查看更新日志
git merge FETCH_HEAD //与当前分支合并

2,误在本地master分支拉去了远程其他分支代码(本地master代码被覆盖)

git reset --hard [远程主机名]/[远程分支] //git reset --hard origin/master 在从远程的master分支还原 

git fetch 和 git pull 区别

git fetch是将远程主机的最新内容拉到本地的.git版本库中(只是引用),并不会在工作区显示出来,用户可以决定是否merge到工作区中。 git pull 则是将远程主机的最新内容拉下来直接合并到工作区中,即:git pull = git fetch + git merge