上次讲了git的一些常用命令,此篇文章主要谢谢git的一些高级操作
感谢tidus
代理设置
Socks5代理(SSR为Socks5代理)
git config --global http.proxy 'socks5://127.0.0.1:10808'
git config --global https.proxy 'socks5://127.0.0.1:10808'
http代理
git config --global http.proxy http://127.0.0.1:10808
git config --global https.proxy https://127.0.0.1:10808
只对Github进行代理
git config --global http.https://github.com.proxy https://127.0.0.1:10808
git config --global https.https://github.com.proxy https://127.0.0.1:10808
代理需要设置用户名和密码时
git config --global http.proxy socks5://username:passwd@127.0.0.1:1080
查看当前代理设置
git config --global --get http.proxy
git config --global --get https.proxy
取消代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
对比工具difftool及合并工具mergetool设置
在用户目录的.gitconfig文件中增加以下配置
[diff]
tool = bc4
[difftool]
prompt = false
[difftool "bc4"]
cmd = \"d:/program files/Beyond Compare 4/BComp.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
tool = bc
[mergetool]
prompt = false
keepBackup = false
[mergetool "bc"]
cmd = "\"d:/Program Files/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
调用时使用-d,在BC中以目录形式进行对比,更为直观,可以调用beyond compare进行比较。
git difftool -d HEAD^ HEAD
工作常用命令
查看工作区状态
git status
比较工作目录中未暂存的文件与已提交文件之间的差异,如果文件已暂存则无法看到差异,需要加上
--staged
参数
git diff
查看指定版本与工作区中当前文件的差异
git diff HEAD -- <file>
查看日志 常用参数
--graph --pretty=oneline --abbrev-commit -<n>
git log
查看引用日志
git reflog
退回到指定版本,可用
commit ID
,也可用HEAD
指针,回退多个版本可HEAD~n
来表示,--hard
参数会导致工作区内容也回退
git reset --hard HEAD^
如果文件未添加到暂存区,则该命令会使工作区的文件回退到最后一次提交的版本
git checkout -- <file>
丢弃所有未添加到暂存区的本地修改
git checkout .
删除所有未被追踪的文件和文件夹,如果文件已经添加到暂存区并又进行了修改,则该命令使工作区文件回退到暂存区的版本
git clean -df
丢弃暂存区的文件
git reset HEAD <file>
关联本地仓库与远程仓库
git remote add git@server-name:path/repo-name.git
向远程仓库推送分支,
-u
使本地的分支和远程分支关联起来
git push -u origin <branch-name>
查看远程仓库地址
git remote -v
创建并切换到分支
git checkout -b <branch-name>
创建与远程仓库对应的分支
git checkout -b <branch-name> origin/<branch-name>
查看当前分支,
-a
查看全部分支,-r
查看远程仓库分支,-vv
显示分支详细信息,如本地分支与远程分支关联关系
git branch
将本地分支与远程分支建立追踪关系,该参数等同于
-u
git branch --set-upstream-to=origin/branch-name branch-name
切换分支
git checkout <branch-name>
合并某分支到当前分支,
fast forward
模式,日志中看不到合并记录
git merge <branch-name>
普通模式,日志中可看到合并记录
git merge --no-ff -m "xxxxx" <branch-name>
删除分支,删除一个修改且没有合并过的分支需要用
-D
参数
git branch -d <name>
删除远程分支
git push --delete origin <branch-name>
隐藏当前工作区的修改
git stash
显示隐藏记录
git stash list
恢复隐藏
git stash apply <name>
删除隐藏
git stash drop <name>
恢复并删除隐藏
git stash pop
查看所有标签
git tag
创建标签并指定标签信息
git tag -a <tagname> -m 'xxxxx'
查看标签详细信息
git show <tagname>
删除标签
git tag -d <tagname>
将标签推送到远程仓库,使用
--tags
参数可推送所有未被推送过的标签
git push origin <tagname>
删除远程仓库标签
git push origin :refs/tags/<tagname>
修改本地及远程分支名
git branch -m oldName newName 修改本地分支名 git push --delete origin oldName 删除远程分支 git push origin newName 上传新命名的本地分支 git branch --set-upstream-to origin/newName 关联本地分支与远程分支``