前言
Git知识的补充
参考:阮一峰 Git 教程
命令
stash暂存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 保存当前未commit的代码 git stash
# 保存当前未commit的代码并添加备注 git stash save "备注的内容"
# 列出stash的所有记录 git stash list
# 删除stash的所有记录 git stash clear
# 应用最近一次的stash git stash apply
# 应用最近一次的stash,随后删除该记录 git stash pop
# 删除最近的一次stash git stash drop
# 暂存未被add 的文件,以及新加的文件,无 -u 不包含。 git stash push --keep-index -u
|
reset****重置
重置后需要git push -f强制推送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 并且会改变暂存区 git reset HEAD^ # 倒退指针的同时,不改变暂存区 git reset --soft HEAD^ # 倒退指针的同时,改变工作区 git reset --hard HEAD^
# 如果不指定回滚的位置,那么等同于撤销修改。 # 撤销上一次向暂存区添加的所有文件 $ git reset # 无任何效果 $ git reset --soft # 同时撤销暂存区和工作区的修改, # 回复到上一次提交的状态 $ git reset --hard
|
revert回滚
1 2 3 4 5 6 7 8 9 10 11 12
| # 查看日志(对应的commitID) git log # 将现有的提交还原,恢复提交的内容,并生成一条还原记录 git revert <commitID>
// git revert 是只会回滚当前的 commit // 一次回滚多个 git revert xxx^..HEAD // 包含 xxx,不写 ^ 是不包含 git revert --continue // 推荐:一条 commit git revert --no-commit xxx^..HEAD && git commit -m "..." git revert -n xxx^..HEAD // 简写
|
Sourcetree对应的操作
操作reset重置


Git项目更换地址
1 2 3 4 5 6 7
| git remote rm origin
git remote add origin XXX
|
git 学习补充
参考:参考笔记 参考笔记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| # 1. git 查看配置信息 git config --global user.name git config --global user.email git config --list git status # 查看状态 git diff # 当前做的那些更新没有暂存? git diff --cached 或者git diff --staged (1.6.1以上版本) # 有哪些更新已经暂存起来准备好了下次提交 git log --oneline # 查看当前分支地目录,其他分支看不到
# 2. 为常用指令配置别名,在用户目录,创建 .bashrc 文件 touch ~/.bashrc # .bashrc 文件中可选择如下配置 # 用于输出git提交日志 alias git-log='git log --pretty=oneline --all --graph --abbrev-commit' # 用于输出当前目录所有文件及基本信息 alias ll='ls -al'
# 3. 使用 git reset 后,如果想要恢复之前的代码 # 查看所有的 git 已经删除的提交记录,再恢复即可 git reflog
# 4. git 分支处理 # 创建分支 git branch dev # 创建并切换到该分支 git checkout -b dev # 删除分支 git branch -d b1 # 删除分支时,需要做各种检查,如果有没有合并的到主分支的代码就会提示 git branch -D b1 # 不做任何检查,强制删除 # 合并分支 git merge 分支名称 # 当前分支地最后一次提交 git branch -v # 新建一个分支并指定其提交对象(也就是哪个commit) git branch dev hash值
# 5. 连接远程仓库 git remote add <远端名称> <仓库路径SSH> # 远端名称默认都为 origin git push -u 是 git push--set-upstream 的缩写 git push -u <远端名称> <分支名称> git remote # 查看远程仓库 git branch -vv # 查看仓库与远程的连接情况 git clone 地址 文件夹名称 # git clone 可以在后面指定文件夹名称
# 6. git fetch 与 git pull # git fetch 抓取,就是相当于把线上的记录在log里卖可以看到 origin/master 最新的 # 但是没有和本地的 master 合并 git pull 拉取相当于 git fetch 、git merge origin/master
# 7. git add 与 git commit 合并写法 git commit -a -m "xxx" git commit # 注释比较多的时候可以使用
# 6. git rm # 相当于 删除文件后执行了 git add 添加到暂存里了 git mv # 同理是修改文件名
# 7. git 撤销暂存提交 git reset HEAD 名称
# 8. git 撤销 commit 另外方式,只能最新的注释写错 git commit --amend
# 9. git tag # 给某一次提交打上标签 git tag -l 'v1.*' # 列出以 v1.开头的所有 9.1 轻量标签 git tag v1.0 git tag v1.0 提交对象哈希 9.2 附注标签 git tag -a v1.0 git tag -a v1.0 提交对象哈希 git tag -a v1.0 提交对象哈希 -m "我的注释信息" 9.3 查看标签 git show tagname 9.4 删除标签 git tag -d v1.0 9.5 基于标签创建分支 git checkout -b <新分支名> <标签名> 9.6 查看远程所有tag git ls-remote --tags origin 9.7 推送 tag git push origin [tagname] #将tagname标签提交到服务器 git push origin --tags #将本地标签一次性提交到服务器 9.8 拉取远程所有 tag git fetch --tags
# 10. 远程仓库 git remote -v # 显示远程仓库 git branch -u origin/dev # 跟踪一个远程分支 git branch -vv # 查看本地分支与线上分支对应关系 git push origin --delete dev # 删除远程分支
# 注意:git clone 时有其他分支,git branch 没有其他分支,只需要切换即可。
# 11. pull request # pr 之后仓库可以连接多个远程,然后拉取最新的代码 # 如下:git remote add 新名词 地址
|
git 撤销 merge 的代码
1 2 3 4 5 6 7 8 9
| // 1. 使用 revert // 当 master 合并 dev 分支后 git revert -m 1 xxx // 取消合并到之前的 master git revert -m 2 xxx // 取消合并到之前的 dev // 直接 git revert xx 会报错
// 2. 使用 reset // 直接使用 git reset --hard xxx 就可以 // 如果在这个 xxx 之前有其他 dev 的 commit 也会一起重置
|
git 合并远程分支
1 2 3 4
| // 直接本地合并远程分支 git merge remotes/origin/xxx // 或者 master 直接合并远程的 dev git pull origin dev
|
git 代理
ssh https 克隆失败,改用 https 并且配置代理
1 2 3 4 5 6 7 8 9 10 11
| # 验证配置 git config --global --get http.proxy git config --global --get https.proxy
# 配置Git使用HTTP代理 git config --global http.proxy 'http://127.0.0.1:7890' git config --global https.proxy 'http://127.0.0.1:7890'
# 取消代理 git config --global --unset http.proxy git config --global --unset https.proxy
|