git 使用

git基础

git log --oneline # 精简一行显示
git log -(n)
git reflog # 还可以显示分支指针diffgit diff [文件名] ---》 将工作区中的文件和暂存区中文件进行比较
git diff --->比较工作区中和暂存区中 所有文件的差异
git diff [历史版本][文件名] ---》比较暂存区和工作区中内容重置当前工作区git checkout path #恢复单个文件
git checkout .resetgit reset --hard [索引]
git reset --mixed [索引] # 本地库的指针移动的同时,重置暂存区,但是工作区不动
git reset --soft [索引] # 本地库的指针移动的时候,暂存区,工作区都不动

eg.最近两次的提交

git reset --hard HEAD~2
git reset --hard HEAD^^修改基本信息# 查看
git config user.name
git config user.email

修改

git config --global user.name "xxx"
git config --global user.email "xxx"分支管理# 查看分支
git branch -v
git branch -a # 所有分支,包括远程

创建分支

git branch branch01

删除本地分支

git branch -d branch_name

删除远程分支

git branch -r -d origin/branch-name
git push origin :branch-name

切换分支

git checkout

拉远程分支1

git checkout -b dev origin/dev

拉远程分支2

git checkout origin/dev_sun # 直接切换到远程分支,本地没有会创建
git checkout dev_sun # 再切换到本地的分支,已经自动关联

查看分支的绑定情况

git branch -vv远程分支# 查看远程分支
git remote -v

远程地址起别名

git remote add https://xxxxx

推送远程分支

git push origin(远程库别名或地址) master(分支名)绑定远程分支
git pull时,提示There is no tracking information for the current branch.
Please specify which branch you want to merge with.说明本地分支没与远程分支绑定,直接指定拉,可以指定远程分支git pull origin master也可以命令指定git branch --set-upstream-to=origin/master master

删除分支

删除本地分支

git branch -d

删除远程分支

git push origin --delete 分支合并

stash
暂存当前工作区代码
git stash save 'zjm'
git stash pop
常用git stash命令
(1)git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list  :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash

commit管理合并
git rebase -i
git rebase -i [startpoint] [endpoint]

eg:
git rebase -i HEAD~3

git rebase -i 36224db其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。粘贴到另一个分支上git rebase [startpoint] [endpoint] --onto [branchName]

eg:
git rebase 90bc0045b^ 5de0da9f2 --onto master

git checkout master
git reset --hard 0c72e64简单命令:git cherry-pickcommit范围前开后闭当前HEAD处于游离状态,实际上,此时所有分支的状态应该是这样:所以,虽然此时HEAD所指向的内容正是我们所需要的,但是master分支是没有任何变化的,git只是将C~E部分的提交内容复制一份粘贴到了master所指向的提交后面,我们需要做的就是将master所指向的提交id设置为当前HEAD所指向的提交id就可以了,即:git checkout master
git reset --hard 0c72e64修改删除otherpull操作同时做了fetch和merge操作fetch+merge操作:---》为了保险,慎重 pull --->代码简单,省事设置代理# 设置当前代理
git config http.proxy http://127.0.0.1:7890

取消当前代理

git config --unset http.proxy

设置全局代理

git config --global http.proxy http://127.0.0.1:7890

取消全局代理

git config --global --unset http.proxy

查看代理

git config --global --get http.proxy
git config --global --get https.proxy创建分支并关联远程分支1. 切换到被copy的分支(master),从服务器拉取最新版本
$git checkout master
$git pull

  1. 从当前分支copy出新的开发分支 命名dev分支
    $git checkout -b dev
    Switched to a new branch 'dev'

  2. 把新建的分支push到远端
    $git push origin dev

  3. 拉取远端分支
    $git pull
    There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    git pull
    If you wish to set tracking information for this branch you can do so with:
    git branch --set-upstream-to=origin/ dev

pull时发现,当前的分支并没有和本地分支关联,根据提示进行下一步:

  1. 关联
    $git branch --set-upstream-to=origin/dev

  2. 再次拉取 验证
    $git pull强拉git fetch --all && git reset --hard origin/dev && git pull

原文地址:https://www.cnblogs.com/khal-Cgg/p/15393282.html