【笔记类】GIT命令

161 阅读3分钟

git最最基本命令(怎么克隆、上传)

#(将远程仓库的代码克隆到本地) git clone + 远程仓库地址

#(将工作区的改动添加到暂存区) git add .

#(将暂存区的文件提交到本地库) git commit -m [message]

#(将本地库的代码上传至远程仓库) git push

#(将远程库的更新拉取到本地库) git fetch

#(通过merge合并分支,通过 git config merge.ff 设置默认合并策略)

git merge 默认为fast-forward模式,不产生新commit,当ff模式无法实现时,切换为no-ff模式

git merge --no-ff 关闭ff模式,会产生一个新的commit

git merge --ff-only 强制使用ff模式,当ff模式无法实现时,报错

git merge --squash 压缩合并,会抛弃一些无用的提交

#(通过rebase合并分支)

git rebase 变基

git rebase --continue 解决冲突后,继续rebase

git rebase --abort 取消rebase

#(将远程库代码拉取到工作区)

git pull 这个命令等于 git fetch + git merge

git重要命令(几乎天天用)

#(瞄一眼文件状态) git status [-s]

#(看一眼我具体修改过哪些代码)

git diff 比较工作区和暂存区

git diff --cached 比较暂存区和本地库

git diff HEAD 比较工作区和本地库

#(查看当前分支的所有提交记录) git log [--pretty=oneline]

#(查看所有分支的所有操作记录) git reflog

#(切换分支)

git checkout + 分支名 => 切换到已有分支

git checkout --track origin/branch_name => 切换到一个新分支并跟踪远程同名分支

git checkout -b myBranch origin/branch_name => 切换到一个新分支并跟踪远程分支

#(分支相关命令)

git branch 查看已经检出的分支

git branch -a 查看所有本地库的分支

git branch -v 查看分支及最后一笔提交的commit id

git branch -vv 查看分支、commit id、关联的远程分支

git branch -D 删除分支

#(代码出问题了,我要回滚)

git reset + 版本号 => 默认--mixed模式,重置到某个commit id下,仅保留工作区

git reset --soft + 版本号 => 会保留工作区和暂存区内容

git reset --hard + 版本号 => 啥都不保留 在这里插入图片描述

#(只想重置某一笔提交)

git revert + commitId 撤销文件并提交

git revert -n + commitId 撤销文件,需要手动提交

revert后再次merge代码丢失问题

#(git reset只影响track了的文件,需要删除未track的文件用clean)

git clean -n 显示将要被删除的文件

git clean -f 删除未被track的文件

git clean -dn 显示将要被删除的文件和文件夹

git clean -df 删除未被track的文件和文件夹

#(切换分支时,除了commit提交外,还可以用stash贮藏)

git stash [save + 一些信息] 将不在本地库的修改贮藏起来(已不推荐)

git stash push [files] [-m message] 将不在本地库的修改贮藏起来(推荐)

git stash -u 保存所有文件

git stash list 查看贮藏记录

git stash show -p 显示最近一个贮藏的改动

git stash pop 弹出贮藏栈的顶层记录

git stash apply 恢复贮藏栈的顶层记录,保留在栈中

git stash drop stash@{num} 删除指定num的贮藏

git stash clear 删除所有贮藏

git进阶(玩点花的)

#(与上一次提交合并,会改变最近一次的commit id与message) git commit --amend

#(与上一次提交合并,会改变最近一次的commit id但不改变message) git commit --amend --no-edit

#(不想通过merge合并一整个分支,只需要其中几个commit)

git cherry-pick + hash => 抓取一个commit,生成一个新节点

git cherry-pick hashA..hashB => 抓取A到B中的所有提交,不包含A

git cherry-pick hashA^..hashB => 抓取A到B中的所有提交,包含A

#(这个命令很屌,可以认真学习) git rebase -i

git疑难杂症

git config core.ignorecase false => 让git区分文件大小写