git高级命令

2020-04-09

上次讲了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  关联本地分支与远程分支``