git命令笔记

git常用命令

配置git

git config [options]

options(常用):

    --global	#使用全局配置文件在当前用户下
    --system	#使用系统配置文件 在/etc文件夹下
    --local		#使用库配置文件
    
eg:
$ git config --global user.name "name"		#用户名
$ git config --global user.email email		#邮箱
$ git config --global core.editor emacs		#文本编辑器
$ git config --global merge.tool vimdiff	#差异分析工具
$ git config --list							#查看配置信息

创建仓库

git init <dir>	#在dir目录下构建git仓库huo在当前目录下构建git仓库
git clone [repo/mydir] <directory>
repo:Git 仓库。
directory:本地目录。若为空会在当前目录下创建一个名为mydir的目录,

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
git add			#将文件加入暂存区
git commit		#将文件加入版本库
git reset [--soft|--mixed(默认)|--hard][version]		#版本回退-到[version]版本
    --soft 			#只回退版本库
    --mixed(默认)	   #版本库和暂存区
    --hard			#全部回退
git checkout -- filename		#撤销工作区修改
    一种是filename自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
    一种是filename已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态
git mv [from_name] [to_name]	#文件重命名
git rm	filename				#文件删除如果误删 git checkout --filename 撤销修改,否则commit
git bisect								#用来查找哪一次代码提交引入了错误
git grep								#检索文件中的文本内容
git log	[--pretty=oneline](一行输出)	#查看版本库提交的历史纪录
git reflog								#查看命令的历史纪录
git show [options] <object>				#用于显示各种类型的对象
git status								#查看工作区状态

分支管理

git branch [name]						#创建name分支
git branch								#查看所有分支
git checkout [name]	 					#切换到name分支
git switch [name]						#切换到name分支
git merge [name]						#用于合并name分支到当前分支

git stash								#可以把当前工作场景储存起来
git stash list							#查看保存的工作场景
git stash pop==git stash apply+git stash drop #恢复工作场景并删除存储纪录
git diff								#差异分析

git rebase								#变基操作
	#把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。
git rebase -i	#修改commit信息

git rebase  --onto  [master] [topic] 
  
            A---B---C topic
         /
    D---E---F---G master
    changed
                      A'--B'--C' topic
                 /
    D---E---F---G master
  
git rebase  --onto  [master] [topicA] [topicB]

                            H---I---J topicB
                           /
                  E---F---G  topicA
                 /
    A---B---C---D  master
    changed
                     H'--I'--J'  topicB
                /
                | E---F---G  topicA
                |/
    A---B---C---D  master
  
git rebase  --onto topicA~5 topicA~3  [topicA]

  E---F---G---H---I---J  topicA
  changed
  E---H'---I'---J'  topicA
  
	#删除barnchName分支startpoint之后包括endpoint的commit
git tag                         	    #打标签 commit 后的-m -a


远程合作

git remote add [alis] [repo]					 #增加远程仓库
git branch --set-upstream-to=origin/<branch> dev #将本地dev分支与远程关联
git fetch [alis] [master|dev]					 #从远程仓库拉代码 不会自动merge
git pull [alis] [master|dev]						 #从远程仓库拉代码 会自动merge
git push [alis] [master|dev]						 #将代码推到仓库
posted @ 2019-12-27 15:51  啾啾啾lhd  阅读(99)  评论(0编辑  收藏  举报