下载仓库
git clone [email protected]:.../blog.git
配置默认编辑器为vim
git config --global core.editor vim
# --edit 编辑配置
git config -e
# 编辑全局配置
git config --global -e
配置保存帐号密码
git config --global credential.helper store
显示当前仓库改动状态
git status
改动完成后暂存文件(暂存了才能commit,命令行操作注意路径,git status会显示路径)
git add README.md
一个一个add嫌麻烦,可以一次性全add进去
# add modified & new file
git add .
# --update 仅add更新的文件,不会add新文件(untracked files)
git add -u
# add all changes, modified + untracked + deleted
git add -A
全add可能会添加到不想加的文件,可以使用.gitignore文件来排除,然后在.gitignore文件中添加排除项
touch .gitignore
命令行下其实有交互式的add操作
git add -i
add的其它替代方案
- 使用vscode,全程可视化操作,全平台都有安装包
提交代码(这么敲会进入vim编辑界面,编辑好退出就可以了)
git commit
提交代码2(-m参数带上了日志信息,直接就提交了)
git commit -m "一些日志..."
更新代码
git pull --rebase
上传代码(注意上传前要先更新)
# 向默认关联的远程分支推送
git push
# 向指定远程分支推送
git push -u origin/master
检出其它分支
git checkout -b new_local_branch_name origin/remote_branch_name
# 查看本地分支 local branch
git branch
# 查看本地远程分支 remote-tracking branch
git branch -r
# 查看本地所有分支 local branch & remote-tracking branch
git branch -a
# 重命名本地分支
git branch -m oldname newname
# 删除本地分支
git branch -d local_branch_name
# 强制删除本地分支
git branch -D local_branch_name
# 查看本地分支upstream
git branch -vv
# 设置push/pull默认关联分支 --set-upstream-to
git branch -u origin/master
查看日志
# 显示日志
git log
# 最近2个日志
git log -2
# 全部修改
git log -p
# 日志统计
git log --stat --summary
设置别名
# git log -> git lg
git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) %C(bold green)%as%C(reset) %C(white)%s%C(reset) %C(dim white)%an<%ae>%C(reset)%C(bold yellow)%d%C(reset)' --all"
# git status -> git st
git config --global alias.st status
remote远程地址
# 查看所有远程地址
git remote -v
# 修改远程地址
git remote set-url origin [email protected]:.../blog.git
# 重命名
git remote rename origin origin2
删除未被托管的新增文件
# -d 清理untracked目录和文件,-f 强制清理
git clean -df
垃圾回收
git gc
git branch像less一样显示问题
git config --global paper.branch false
子模块submodule
# 添加子模块到指定目录
git submodule add [email protected]:alex-shpak/hugo-book themes/hugo-book
# 初始化,更新
git submodule update --init --recursive
git submodule init
git submodule update
# 更新所有子模块
git submodule foreach git pull
搜索历史记录脚本
search_str='some messages for search'
search_path='./filename_or_pathname'
commits=$(git log --pretty=format:"%h")
while IFS= read -r commit
do
echo $commit
git show $commit | grep "$search_str"
done <<< $commits