git rebase
回到某个提交状态, 删除之前的1
git rebase --onto master~3 master
删除 add 的文件
如果要删除文件,最好用 git rm file_name,而不应该直接在工作区直接 rm file_name。
如果一个文件已经add到暂存区,还没有 commit,此时如果不想要这个文件了,有两种方法:
1,用版本库内容清空暂存区,git reset HEAD
2,只把特定文件从暂存区删除,git rm —cached xxx
配置用户密码不用每次输入
显式配置(不安全)
1 | git config --global user.name "xxxx" |
上述指令输完后, 会生成~/.gitconfig
文件, 内容如下:1
2
3
4
5[user]
name = hellozhaozheng
email = hellozhaozheng@foxmail.com
[credential]
helper = store
之后, 再次输入密码, 密码和账号会显式存储在~/.git-credentials
文件中.(显式存储, 不安全)
秘钥配置 ssh
step 1: 生成公钥1
2
3ssh-keygen -t rsa -C "hellozhaozheng@foxmail.com"
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key
step 2: 查看已生成的公钥1
2cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
step3: 复制已生成的公钥添加到git服务器
step4: 使用ssh协议clone远程仓库 or 如果已经用https协议clone到本地了,那么就重新设置远程仓库1
git remote set-url origin git@xxx.com:xxx/xxx.git
常用指令
初始化当前本地文件夹为仓库
git init
添加文件:
单个: git add readme.md
全部: git add -A / git add ./
提交修改: git commit -m “must write commit”
查看状态: git status
查看日志: git log
版本回退:
回退一个: git reset -hard HRAD^
回退两个: git reset -hard HARD^^
回退多个: git reset -hard HEAD~100
首次连接: git remote add origin https//www.github…
提交: git push origin master
更新本地仓库:
git fetch origin master 获取
git merge origin/master 合并
如果将别人的仓库拉到了自己的仓库里, 为了push成功:
- 删除.git相关
- git rm rf —cached ./themes/next
- git add ./themes/next
- git commit -m “next”
- git push origin master
子模块: 可以独立提交
从远程库更新本地的单个文件
只显示更改的文件的名字
https://segmentfault.com/q/1010000006760132
git
git checkout misc: 切换分支
git stash: 暂存到缓存里, 新建另一个编辑
git stash pop: 从缓存理加载出刚刚的分支, 这里可以和chechout结合使用来切换分支同时将刚刚修改的操作添加到当前分支中
若要提交新的commit:
先切换分支: git checkout misc
再查看状态: git status
添加修改: git add .
提交: git commit -m “..”
推送: git push origin misc
查看提交结果: git log —oneline —decorate
更新master到本地分支:1
2
3
4
5
6
7
8
9
10
11
12
13
14//查询当前远程的版本
$ git remote -v
//获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])
$ git fetch origin master [示例1:获取远端的origin/master分支]
$ git fetch origin dev [示例2:获取远端的origin/dev分支]
//查看版本差异
$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差异]
$ git log -p dev..origin/dev [示例2:查看本地dev与远端origin/dev的版本差异]
//合并最新代码到本地分支
$ git merge origin/master [示例1:合并远端分支origin/master到当前分支]
$ git merge origin/dev [示例2:合并远端分支origin/dev到当前分支]
---------------------
git merge orgin vino
解决冲突:
git mergetool
:diffg RE
:diffg LO
vimdiff3
忘记切换分支, 提交到了错误的分支:
git reset HEAD~1
git stash
git checkout target_branch
git stash pop
git add .
git commit -m “…”
git push origin target_branch
比较本地分支和远端分支的区别
(先要更新本地的远程分支?)
git diff vino origin/vino
git diff vino origin/master
用某一个分支的文件覆盖另一个分支的文件
用git checkout branch — filename
如: 分支test上有一个文件A,你在test1分支上, 此时如果想用test分支上的A文件替换test1分支上的文件的话,可以使用git checkout test1, 然后git checkout test — A