Git
约 625 字大约 2 分钟
常用命令
分支
命令 | 说明 |
---|---|
git branch -a | 列出分支 |
git remote show origin | 列出本地&远程分支 |
git remote prune origin | 删除本地无效分支 (慎用) |
git branch -d [branch name] | 删除本地分支 |
git push origin --delete [remote branch] | 删除远程分支 |
git checkout [branch name] | 切换到指定分支,不存在则报错 |
git checkout -b [branch name] | 不存在则新建 |
git checkout -b [branch name] origin/[remote branch] | 拉取远程分支代码并再本地才能关键分支 (先切换到要远程分支, pull一下,保持代码最新) 然后再拉取 |
git push origin feature/1234:feature/1234 | 推送本地分支到远程 |
tag
命令 | 说明 |
---|---|
git tag | 列出本地仓库所有的tag |
git ls-remote --tags origin | 列出远程仓库所有tag |
git tag [tag name] | 打标签 |
git push origin --delete tag [ tag name ] | 删除远程 标签 |
git tag -d [tag name] | 删出本地标签 |
git push origin [tag name] | 推送标签到仓库 |
git checkout [tag name] | 切换到指定标签 |
git checkout -b [ branch] [tag name] | 基于tag新建分支 |
显示分支与路径
vi ~/.bashrc 记得soure
function git_branch {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return;
echo "("${ref#refs/heads/}") ";
}
function parse_git_dirty {
local git_status=$(git status 2> /dev/null | tail -n1) || $(git status 2> /dev/null | head -n 2 | tail -n1);
if [[ "$git_status" != "" ]]; then
local git_now; # 标示
if [[ "$git_status" =~ nothing\ to\ commit || "$git_status" =~ Your\ branch\ is\ up\-to\-date\ with ]]; then
git_now="=";
elif [[ "$git_status" =~ Changes\ not\ staged || "$git_status" =~ no\ changes\ added ]]; then
git_now='~';
elif [[ "$git_status" =~ Changes\ to\ be\ committed ]]; then #Changes to be committed
git_now='*';
elif [[ "$git_status" =~ Untracked\ files ]]; then
git_now="+";
elif [[ "$git_status" =~ Your\ branch\ is\ ahead ]]; then
git_now="#";
fi
echo "${git_now}";
fi
}
PS1="[\[\e[1;35m\]\u\[\e[1;32m\]@hostname:\w\[\e[0m\]] \[\e[0m\]\[\e[1;36m\]\$(git_branch)\[\033[0;31m\]\$(parse_git_dirty)\[\033[0m\]]\$"
FAQ
权限不足
由于昨晚新增和修改了文件,今早到公司就进行了个pull的操作
却提示
来自 git.oschina.net:user/django
* branch master -> FETCH_HEAD
更新 c1dc841..f21e3fe
error: unable to unlink old 'study/app1/__pycache__/__init__.cpython-35.pyc' (权限不够)
....
....
#全是权限不足,第一反应是sudo的原因.没多想就直接sudo操作了,然后提示
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
搜索相关解决办法,基本解决办法都是说重新生成秘钥.然后复制到git,操作后并不能解决问题.
静下来想想,那出问题的可能就是别的权限了.
原来昨晚创建了新的文件夹用的是sudo创建的 秘钥的所属是当前用户,,文件夹的所属是root
然后更改文件夹所属就好了
chown user:group /dir