常用命令

  • commit太多了? 多个commit合并为1个 git rebase -i HEAD~4 (# 这个命令,将最近4个commit合并为1个,HEAD代表当前版本。将进入VIM界面,你可以修改提交信息。推送到远程分支的commit,不建议这样做,多人合作时,通常不建议修改历史。)

git操作

  • 创建分支并提交 git branch BRANCH_NAME && git co BRANCH_NAME && git push origin BRANCH_NAME:BRANCH_NAME

  • 在当前分支上打tag git tag -a TAGNAME -m "tag description"

  • 在某次提交上打tag git tag TAGNAME c809ddbf83939a89659e51dc2a5fe183af384233

  • 查看本地tag git tag

  • 推送本地一个tag到远程 git push origin TAGNAME

  • 推送本地所有tag到远程 git push origin --tags

  • 删除本地tag git tag -d TAGNAME

  • 删除远程tag git push origin :refs/tags/TAGNAME

  • 拉取并切换分支 git checkout -b BRANCHNAME origin/BRANCHNAME

  • 拉取标签到本地分支并切换 git checkout --no-track -b branch_NAME TAGNAME

  • 显示分支关系图 git log --graph --decorate --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

  • 显示远程地址 git remote -v

  • 基于tag打分支 git checkout -b fix-on-v1.2.6 v1.2.6.1

  • 导致代码为zip

    • git archive --output="d:\d-tmp\old-segment-2.zip" --format=zip bb649380240ebc7114d02f9857018ad484394648 --verbose
  • 本地已有仓库关联到远程

    cd existing_git_repo
    git remote add origin git@git-sample.com:sample/sample-project.git
    git push -u origin "master"
  • 获取提交记录中对应的修改文件列表

    • 目的:根据最近提交的代码,来判断要不要重新发布新版本,若没有修改.java/.go文件,可以考虑不发布
    • 获取最后一次提交记录的修改文件信息 git show --raw [--name-only]
    • 获取某次提交记录的修改文件信息 git show --raw $commit_id
  • 按提交内容查询commit列表,

    #######################
    # %h 简短哈希(前 7 位)
    # %ad = Author Date
    # %cd = Commit Date
    #######################
    git log --date-order --pretty=format:"%h %ad %cd %s" --date=short --grep "提交内容"

别名

http://eblog.valuetodays.cn/article/detail/38

常用分支合并操作

# 在当前分支上打tag
git tag -a v1.0.0 -m 'first release version'
# 在某次提交上打tag
git tag v1.0.0 c809ddbf83939a89659e51dc2a5fe183af384233
# 查看本地tag
git tag
推送本地一个tag到远程
git push origin v1.0.0
# 拉取并切换分支
git checkout -b BRANCHNAME origin/BRANCHNAME
# 常见的是基于某个tag拉取一个分支
git checkout -b BRANCHNAME v1.0.0
# 推送当前分支
git push
# 基于当前分支推送一个新的远程分支
# git push origin CURRENT_BRANCH:NEW_BRANCH
git push origin develop:feature-xxx

神技

常见问题处理

git这个命令常打错成gti的解决办法

去C:\Program Files\Git\etc\profile.d中,编辑aliases.sh,在alias ll=’ls -l’下面添加如下,重新打开git-bash,输入g就能替代git了

alias g='git'
alias gti='git'
alias gpl='git pull'

linux下可以

echo "alias g='git'" >> ~/.bashrc
echo "alias gp='git pull'" >> ~/.bashrc
echo "alias gti='git'" >> ~/.bashrc
echo "alias gpl='git pull'" >> ~/.bashrc

source ~/.bashrc

使用 TortoiseGit push 代码时出如下错误

TortoiseGitPlink Fatal Error

Disconnected: No supported authentication methods available (server sent: publickey)

解决:将客户端程序替换为git的ssh.exe的程序,这样在推送时会自动加载本地公钥,服务器就能验证通过了。操作为:TortoiseGit的设置、网络、ssh client、选择 $GIT_HOME\usr\bin\ssh.exe即可

git pull 时每次都要输入用户名和密码的解决办法

git config --global credential.helper store

git-for-windows 安装

尝试安装并获取配置(建议在虚拟机中执行),并复制出.inf文件
Git-2.37.3-64-bit.exe /SAVEINF="c:/tmp/Git-2.37.3-64-bit_conf.inf"

使用配置自动化安装
Git-2.37.3-64-bit.exe /SILENT /LOADINF="Git-2.37.3-64-bit_conf.inf"

问题

Q: permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
A: chmod 600 fileName

附件

_gitpull.sh

【附件】_gitpull.zip

作者:张三  创建时间:2022-04-18 12:50
最后编辑:张三  更新时间:2025-10-14 14:13