Git 40个常用命令

Git 40个常用命令

# 1. 检测 git 是否安装成功
git --version


# 2. 配置 username, email
git config --global user.name "user" 
git config --global user.email "user@qq.com"


# 3. 查看自己的配置
git config --global --list


# 4. 新建仓库 或者 直接使用
git init project cd folder git init


# 5. 克隆远程分支
git clone git@git.xxx.com:php/file.git


# 6. 还原单个文件
git reset 9b7e88b7c2c4ec8a046 app/Services/ClubService.php


# 7. 查看分支的所有操作记录
git reflog


# 8. 回退到指定的版本(不可撤销)
git reset --hard 版本id


# 9. git 替换项目中的文件名 rname 变成 rname.md
git mv rname rname.md


# 10. 查看分支
git branch 
git branch -v 
git branch -a   #查看远程分支 


# 11. 切换分支
git checkout master


# 12. 从 master 拉下一个新分支
git checkout master 
git pull origin master 
git checkout -b new_branch


# 13. 本地添加/删除分支
git branch addUrl 
git branch -d addUrl 
git branch -D addUrl


# 14. 删除远程分支
git push origin --delete dev


# 15. 使用远程 gold 分支在本地创建 gold (但不会切换到该分支)
git fetch origin gold:gold


# 16. 查看整个版本所有分支的衍生历史最近4个
git log --oneline --all -n4 --graph(分支线)


# 17. 合并多个commit内容
    # 1).查看历史记录
    git log 
    # 2).摘取希望合并到的commitid
    git rebase -i c6f8d7ac1bc3501050c661cf4b594d790ed9c33a 
    # 3).第二个pick改为s,输入wq保存退出
    # 4).若第3)步有冲突,解决冲突后,执行
    git rebase --continue
    # 5).修改commit信息,wq保存退出
    # 6).再次查看历史记录
    git log


# 18. 查看类型/打开类型
git cat-file -t 9b7e88b7c2c4ec8a046   # 查看
git cat-file -p 9b7e88b7c2c4ec8a046   # 打开


# 19. 修改最后一次 commit 内容,并提交
git commit --amend


# 20. 修改指定一次 commit 提交的描述
# 找到Parent的commit码
git rebase -i 9b7e88b7c2c  # 产生一个交互
pick 改为 reword


# 21. 工作区修改差异
git diff


# 22. 工作区恢复文件
git checkout .              # 所有文件
git checkout -- index.php   # 单个文件


# 23. 删除工作区
git rm index.php


# 24. 暂存区与工作区差异
git diff --cached 
git diff -- index.php   # 单个文件比较


# 25. 取消暂存区的内容
git reset head                      # 所有文件
git reset -- index.php              # 单个文件
git reset -- index.php master.php   # 多个文件


# 26. 比较commit 提交的文件
git diff 9b7e88b7c2c4ec8a046 77ee88b7c2c4ec8a046


# 27. 合并解决冲突
    # 1). 查看当前文件状态
    git status  
    # 2). phpstrom编辑器:vcs->git->resolve confilcts
    # 查看冲突文件,本地分支与目标分支对比,查看差异化文件,合并处理
    # 3). 再次查看文件状态
    git status 
    # 4). 无冲突文件后执行
    git merge --continue


# 28. 提交代码
    # 1). 添加文件到暂存区
    git add .git add 文件 
    # 2). 提交到本地仓库
    git commit -m "提交功能"
    git --amend  "最后一次提交做修正"
    # 3). 推送到远程仓库
    git push origin 分支名


# 29. 分支合并
    # 1).切换目标分支
    git checkout 分支名 
    # 2).更新分支源文件
    git pull origin 分支名 
    # 3).注意查看冲突文件
    git merge 需合并的分支名 
    # 4).查看文件状态,是否有冲突
    git status  
    # 5).推送本地合并
    git push origin 分支名 
    # 6).查看分支合并记录
    gitk 或 git log 


# 30. 危险命令 撤回版本(不保留修改)
    # 1).查看分支记录
    gitk 
    # 2). 退回某一次提交 SHA1 ID
    git reset --hard 9b7e88b7c2c4ec8a046  


# 31. 危险命令 撤回版本(保留修改的内容)
git reset 9b7e88b7c2c4ec8a046


# 32. 保存栈
git stash git stash save "文本"                      #添加文本
git stash list                                      #查看列表
git stash apply                                     #重复使用
git stash apply stash@{1} git stash pop             #一次使用
git stash pop stash@{1} git stash drop stash@{1}    #删除
git stash drop clear                                #删除所有


# 33. 落后分支解决
    # 方法一:
        # 1).切到master分支
        git checkout master 
        # 2).master分支拉到最新
        git pull origin master 
        # 3).切回落后分支
        git checkout report_debug 
        # 4).rebase master
        git rebase master 
        # 5).提交,需要强推.
        git push origin report_debug -f 
    # 方法二:
        # 1).新建版本分支
        git checkout -b fix_action 
        # 2).摘取某一个记录
        git cherry-pick bbe3a03a385af25ab4e8d8177060f86a80e1eb7f 
        # 3).提交记录
        git push origin fix_action


# 34. 将上面的commit id为0771a0c107dbf4c的提交添加到B分支上面
git checkout B git cherry-pick 0771a0c107dbf4c    #发生冲突
# 继续操作 
git add .  # 将文件标记为已解决
git cherry-pick --continue   # 继续进行cherry-pick操作
# 取消本次cherry-pick操作
git cherry-pick --abort   # 取消这次cherry-pick


# 35. Git pull 强制拉取master并覆盖本地代码
git fetch --all 
git reset --hard origin/master 
git pull origin master


# 36. 远程分支落后本地分支
# 1). 删除远程分支
git branch -D preview 
# 2). 重新拉取分支
git fetch origin preview:preview


# 37. git – rebase不能提交和停止解决方法
git status
#  rebase in progress; onto 9c168a5 You are currently rebasing branch 'master' on '9c168a5'. (all conflicts fixed: run "git rebase --continue") nothing to commit, working directory clean
git branch  
#  (no branch, rebasing master) develop master  

#  解决方案:git rebase --skip 


# 38. idea 目录加入.gitignore无效的解决方法
git rm -r --cached .idea            #文件夹
git rm --cached data_center.iml     #文件


# 39. 在PATH处输入要忽略的文件 
git update-index --assume-unchanged PATH 


# 40. 指定远程仓库
git remote set-url origin
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 6
slowlyo
# 1. 检测 git 是否安装成功
git –version

# 2. 配置 username, email
git config –global user.name “user”
git config –global user.email “user@qq.com“

# ...

处理成这样的格式, 会不会好看一点~

10个月前 评论
PHPer技术栈 (楼主) 10个月前
DogLoML

补充一个仓库瘦身的命令。如果不小心提交了应该忽略的文件,比如dist目录或者uploads的图片,秘钥文件等,仓库一下子变大几十甚至上百兆,此时删除文件并提交推送,那么该文件仍然可以在历史中查看恢复,仓库体积也并不会缩小。

如果想要彻底删除无法恢复,可以用下面的命令将其从git历史中删除,然后强制推送(强制推送前注意备份,防止误操作)。

之前把vendor目录提交上去了,导致git仓库特别大下载很慢,用这个之后,git仓库缩小了几十mb

// 删除.env文件
git filter-branch -f --index-filter 'git rm -rf --cached --ignore-unmatch .env' HEAD

// 删除vendor目录及目录下的文件
git filter-branch -f --index-filter 'git rm -rf --cached --ignore-unmatch vendor/*' HEAD
10个月前 评论

切换分支可以用

git switch master
10个月前 评论
fatrbaby

git rebase 一直没怎么玩儿明白

10个月前 评论
DogLoML 10个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!