学习链接:一小时掌握Git
xxxxxxxxxx
git init #在当前文件夹新建一个空仓库
工作区,暂存区,本地仓库:
文件状态:
未跟踪(Untrack):新创建的,未被git
管理起来的文件。
未修改(Unmodified):已经被git
管理起来,但是还没修改过的文件。
已修改(Modified):已修改的文件,但是还没提交到暂存区里的文件。
已暂存(Staged):修改后已经添加到暂存区里的文件。
xxxxxxxxxx
git status#查看仓库的状态
git status -s#-s表示简略模式
xxxxxxxxxx
git add file.txt#将file.txt添加到暂存区
xxxxxxxxxx
git commit #提交,该命令只会提交暂存区的文件,不会提交工作区的文件!
git commit -m "第一次提交"#-m命令来描述提交细节。
xxxxxxxxxx
git reset --soft 5af90b8#回退版本的id
git reset --hard HEAD^#“^”表示上一个版本
git reset HEAD^#mixed参数是默认参数
xxxxxxxxxx
git ls-files#查看暂存区的内容
xxxxxxxxxx
#误删回溯
git reflog#查看需要恢复的版本号
git reset --hard b270efb#恢复到这个版本
xxxxxxxxxx
git diff#比较工作区和暂存区的差异
git diff HEAD#比较工作去和版本库之间的差异
git diff --cached #比较暂存区和版本库之间的差异
HEAD:指向当前分支的最新提交节点。
HEAD^(HEAD~):上一个版本。
HEAD~2:上两个版本。
xxxxxxxxxx
git diff 31862cd fa76031#比较两个版本的差异
git diff HEAD~2 HEAD file.txt#只查看这两个版本中file.txt的差异
生效范围:不在版本库中的文件。
tip:
xxxxxxxxxx
echo 123 >> file.txt#>>表示追加
在.gitignore中添加temp/
表示忽略temp文件夹
xxxxxxxxxx
git push#本地修改提交到远程仓库
git pull#远程仓库的修改拉取到本地仓库
#git pull <远程仓库名> <远程分支名>:<本地分支名>
# 此处相同可以省略冒号后的内容
关联远程仓库:
xxxxxxxxxx
git remote add origin git@github.com:Syuu614/learngit.git#关联远程仓库
git branch -M main#指定分支的名称为main
git push -u origin main#:main #把本地main分支和远程仓库的main分支关联起来
xxxxxxxxxx
git remote -v#查看当前仓库所对应的远程仓库的别名和地址
xxxxxxxxxx
git branch#查看所有分支
git branch dev#创建一个名叫dev的分支
git checkout dev#切换到dev分支/恢复文件dev(该方法存在歧义:建议使用git switch命令)
git switch main#切换到main分支
git merge dev#将dev分支合并到main分支
xxxxxxxxxx
git log --graph --oneline --decorate --all#图形化的分支图
alias graph="git log --graph --oneline --decorate --all"#定义名为graph的命令
分支合并之后仍然存在,要手动删除。
xxxxxxxxxx
git branch -d dev#删除已经合并的分支,如果是-D就是强制删除。
xxxxxxxxxx
git checkout -b dev 244d35#恢复dev分支到ID为244d35的节点
xxxxxxxxxx
git switch dev#切换到dev分支
git rebase main#将dev分支的提交变基到main分支上,此时dev分支上的提交会添加在main分支的最新提交之后。
git switch main#切换到main分支
git rebase dev#将main分支的自出现dev分支之后的提交变基到dev分支上,此时main分支的自出现dev分支之后的提交会添加在dev分支的最新提交之后。