git常用命令备忘录

0, 初始化版本库

$ git init //将目录变为git可以管理的仓库
//配置提交者信息
$ git config --global user.email "[email protected]"
$ git config --global user.name "your name" 

1, git clone

本地仓库为零时,可以直接克隆远程库,此时库与库的连接自动建立

$ git clone *****.git  //克隆远程库代码 支持https git协议
$ git branch  //查看当前的分支 一般默认为master
$ git clone -b remote_branch ****.git 
//将远程库克隆,取其中remote_branch分支到本地工作区
$ git branch -a //查看本地分支与远程分支
$ git remote -v //列出与本地仓库关联的所有远程库

2, 本地库与远程库关联

先有本地库代码,后有远程库,想将本地代码推送至远程库,需进行库关联,还有分支关联

$ git remote add origin 远程库地址.git 
//关联远程仓库,并将远程库取名为origin, 此名是自定义的
$ git push -u origin [本地分支名:]远程分支名
//本地分支名省略时,默认代表当前分支 
//-u代表建立分支间联接 下次push可直接省略本地分支名 origin为远程库名
$ git push 远程库名 远程分支名
//联接建立好后,第二次push可相对简化
$ git remote -v //查看与当前库相关联的远程库

3, 本地仓库与远程库同步

$ git pull //非fork项目的同步
//fork项目的同步
$ git remote add usp 远程项目地址 //usp为自定义远程库别名
$ git fetch usp && git merge usp/master 
//此处以远程的master分支举例

4, git checkout 检出与切换分支

对应的工作区 暂存区都会相应匹配

$ git branch -r //查看所有远程分支
$ git checkout -b 本地分支名 origin/远程分支名
//在新建本地分支并切换到该分支 将远程分支代码拉到此分支
$ git checkout 本地已存在的分支 //切换到此分支
$ git checkout 标签名或远端分支名 
//在本地建立匿名分支,切换到此分支,拉取代码到此分支

5, 修改代码与提交

$ git add files //文件提交到暂存区
$ git status //查看当前文件的状态
$ git commit  -m "注释" //文件提交到本地仓库
$ git rm --cached files 
//将上次add到暂存区的files 改动丢弃 不影响工作区

6, git pull && git push冲突处理

pull本地代码库为最新版本时常会出现冲突错误,一般是由于更新下来的内容与本地修改的内容有冲突

$ git stash //先将工作区与暂存区内的修改存入栈
$ git stash list //查看栈中所有变量
$ git pull //重新拉取最新代码
$ git stash pop //从栈中恢复工作区 暂存区内容
//此时系统自动合并冲突,若解决不了,则需要手动解决再提交

push时发生冲突需要先pull

$ git pull //未发生冲突
$ git push //继续push
$ git pull //发生冲突
$ git status //查看冲突文件 
// 手动merge 修改冲突文件
$ git add 冲突文件
$ git commit files  
//提交所有改动文件, 包括已merge的冲突文件与pull下来已发生修改的文件
$ git push  //重新push
$ git pull //更新本地代码到最新版本

7, 撤销命令checkout && revert && reset

7.1 commit层面

git reset用于未被提交到remote的改动,即撤销local的修改。除了移动 HEAD, 还可以用于更改工作区与暂存区

  • –soft:修改HEAD,不修改暂存区与工作区
  • –hard:修改HEAD,暂存区与工作区
  • –mixed:修改HEAD 暂存区,不修改工作区 默认行为
$ git reset <last good SHA>

git revert 用于你已经push到远端后,想要撤销某个commit, 它会生成一个新的commit 内容与指定SHA相反

$ git revert <SHA>

git checkout 用于将HEAD指针 在各个 分支 间移动,也就是分支切换

$ git checkout branch_name

7.2 file 层面

git checkout 用于将暂存区或版本区的内容拷贝至工作区, 用于撤销工作区的修改,需小心使用

$ git checkout file //将暂存区内容覆盖工作区
$ git checkout HEAD file //用版本区内容覆盖工作区与暂存区

git revert没有file层面的操作
git reset 用来撤销暂存区内容

$ git reset HEAD file //将版本区HEAD指向内容覆盖暂存区
$ git reset <commit> file //将版本区中的commit来覆盖暂存区

8, git diff 文件比较

$ git diff file // 工作区与暂存区比较
$ git diff HEAD file //工作区与HEAD版本区比较
$ git diff --staged 或 --cached file 
//比较暂存区与版本区HEAD
$ git diff commitid file //工作区与某次commit id比较
$ git diff --cached commitid file //暂存区与某次commit id比较

猜你喜欢

转载自blog.csdn.net/jiulixiang_88/article/details/80910365