add
git add :不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除
git add -u ,-u : 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
git add -a ,-a :表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。
git add -p :这个命令可以让你逐条的选择你的改动进入commit, 对你要的改动选‘y’, 不要的选‘n’就行。
bash
git bash变为不可编辑不可退出状态解决办法:https://blog.csdn.net/taquguodedifang/article/details/77671058
按字母键c;(可以修改了);
按下esc键(退出编辑状态);
连着按两次打写Z,然后就退出了
branch
git branch -d cheng(本地分支名称):删除本地分支,不能在当前分支删除当前分支,需要切换到别的分支;
git branch -m old new:重命名本地分支(修改分支名字)
git branch -a :查看线上分支;
git branch -vv:查看本地分支关联的远程分支;
git branch -r:查看远程分支(有时显示的不是最新的分支情况,r是remote的缩写)
commit
git commit --amend:修改最近一次commit 信息(i:进行输入,ESC/:wq)
git rebase -i commit号:修改任意一次commit信息
git show commitID :(查看commit修改内容)
git rebase -i xxx(要删除的记录的前一个版本号): 删除commit记录(本地的)
输入i进入编辑页面,把要删除的版本号前边的pick改为drop,然后摁Esc退出编辑模式,并输入:wq回车保存(把要删除的版本号前边的pick改为s,一般保留第一个为pick)
删除本地未push的commit记录(代码恢复至未commit的状态):
git log 选取此条commit记录之前的commit id
git rest id
git log cheng(本地分支) ^origin/master :查看本地已commit但未push的记录
git push origin HEAD --force: 覆盖线上的commit,亦可以强制上传git reset 版本号;
上一步若本地分支与要上传到的远程分支名字不一致会重新创建一个远程分支,so:
git push origin HEAD:master(要上传的远程分支) --force
当git commit 之后,但未push的,不想要这条commit的,可以git reset --hard 之前的版本号,然后中间未push的commit版本就会消失了;
checkout
参考链接:https://www.cnblogs.com/qufanblog/p/7606105.html;
git checkout 文件名 或者 git checkout .:放弃本地修改(还未git add的);
git checkout -b [分支名]:创建并切换到新的分支
git checkout [分支名]: 切换分支
git checkout -b [分支名] origin/dev:切换到新建的分支,并关联线上某分支
若报错’origin/aaa’ is not a commit and a branch ‘bbb’ cannot be created from it,
1、若线上分支bbb是新建的,可能是因为本地代码不是最新的,并未关联到新建的线上分支bbb,可以 执行:git fetch -all
git checkout [commit号]:切换到commit号
cherry
git cherry -v :查看已提交但是未传送远程代码仓库;
参考链接http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
git cherry-pick:将指定的提交(commit)应用于其他分支
clear
git clean 命令用来从你的工作目录中删除所有没有track过的文件
git clean -n :告诉你哪些文件将被删除,他只是一个提醒,不会真的删除文件
git clean -f:删除当前目录下所有没有被track的文件,不会删除.gitnore文件指定的文件夹和文件,不管这些文件有没有被track过
git clean -f [path]:删除指定路径下没有被track的文件
git clean -df 删除指定路径下的没有被track的文件和文件夹
git clean -xf 删除当前目录下所有没有被track的文件,不管它是否是.gitnore文件里面指定的文件和文件夹
git reset --hard git clean -df 运行后,工作目录和缓存区回到最近一次commit一模一样的状态
config
git config user.name //
cat config //查看现在的git配置文件
git config credential.helper store // 设置记录主密码, 但这个记录密码是全局的
diff
git diff :比较【暂存区】与工作区之间的差异
git diff commitID 比较【给定commitId】与【工作区】的差异
git diff --cached commitID(如果省略commit,那么就是默认指HEAD):比较【暂存区】与【给定提交ID】的差异
git diff comit1 commit2:比较:指定的两次提交commit1与commit2的差异
fetch
git fetch -p:删除本地版本库中的remote,同上(删除掉没有与远程分支对应的本地分支)
git fetch origin tag:获取远程tag
git fetch origin:将远程最新数据(包括代码和分支)拉取到本地
log
git log --since =2023-02-20 --until==2023-02-24 --author=“csn” --pretty=tformat: --numstat:查看更改代码行数(日期和姓名可以更改)
git log --since =2023-03-06 --until==2023-03-10 --author=csn --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END {printf added lines: %s, removed lines: %s, total lines: %s\n, add, subs, loc }’ :需要在git里边运行,而非vscode终端,否则会报awk不是函数、脚本之类的错误
push
git push --tags:把本地tag推送到远程
git push --tag version:推送某一个tag
上面的不用执行 git tag -a tagversion(tag版本号) commit(commit号)
git tag (查看tag号是否有自己刚打的版本)
git push origin tagversion(tag版本号)
git push origin --delete 远程分支名:删除远程分支
git push origin 本地分支:远程分支(可以是远程上边没有的,这样就可以新建远程分支) :把本地分支的代码push到新建的远程分支(相当于新建远程分支);
git push origin 本地分支:远程分支,例:git push origin cheng:csn2
当本地文件pull以后和线上的还存在版本不一致,尝试删除本地某个目录然后再pull
git push origin --delete tag :删除tag
remote:
git remote add origin 源地址:添加源;
git remote rm origin :删除已添加的源;
git remote show origin:显示远程仓库的信息;
git remote prune [origin]:删除本地版本库中的remote
reset
reset(只能回滚最新的提交,无法满足保留最后一次提交只回滚之前的某次提交)
git reset --soft HEAD^ :撤销最近一次的commit
git reset --hard HEAD^ :连add也撤销
HEAD^ :表示上一个版本,即上一次的commit,几个代表几次commit,若回滚两次就是HEAD^
–soft :不删除工作空间的改动代码,撤销commit,不撤销add
–hard :删除工作空间的改动代码,撤销commit且撤销add
stash:
git stash:本地代码已修改,线上代码有更新,想在当前分支拉取线上最新的代码(把当前的修改存储起来)
git stash pop (把之前本地修改的代码恢复了,用于git stash之后)
流程如下:
git add xxxx(添加需要提交的文件名字):,本地代码有多个文件修改,但只需要提交部分文件
git stash -u -k:忽略其他文件,把现修改的隐藏起来
git commit -m “”
git pull origin dev:拉取新的代码
git push origin dev:推送
git stash pop:恢复之前忽略的文件