您现在的位置是:首页 >技术教程 >git笔记(git命令,git基本操作)网站首页技术教程

git笔记(git命令,git基本操作)

CNOLZP 2023-05-28 12:00:02
简介git笔记(git命令,git基本操作)

史上最浅显易懂的Git教程《廖雪峰-git教程》
《廖雪峰-git教程》是我目前看到最详细的GIT入门教程,以下仅个人学习时的摘录(不定期更新),建议有时间的小伙伴自行学习《廖雪峰-git教程》

以下操作涉及变更

命令描述
git init将当前目录初始化为git仓库,生成一个.git的隐藏文件(git命令必须在git仓库目录下执行,即拥有.git文件夹的目录;同理,操作的文件也必须在git仓库目录下)
git add xxx.txt将xxx.txt添加到仓库中(将文件放入git的暂存区)
git commit -m "wrote a xxx.txt file"提交xxx.txt文件并记录提交描述(将暂存区的文件提交到当前分支)
git reset --hard XXX回退到指定版本
git reset --hard HEAD回退至最新版本(当前版本),HEAD^ 上一版本,HEAD^^ 上上版本,几个 ^ 对应回退到的版本,为了简化,回退至100版本可使用git reset --hard HEAD~100
git reset --hard commit_id回退到指定版本
git checkout -- file撤销工作区的修改(将暂存区中的file替换掉工作区中的file,使得工作区与暂存区数据一致)
git checkout HEAD -- file将工作区和暂存区的文件回退至HEAD一致
git reset HEAD xxx.txtgit add xxx.txt后,将暂存区的修改撤销掉(unstage),退回工作区
git rm xxx.txt + git commit -m "remove xxx.txt"将删除操作同步至本地仓库
git rm --cached xxx.txt删除暂存区的xxx.txt,工作区未删除

以下操作不涉及变更

命令描述
git status查看仓库当前状态,查看哪些文件被修改
git diff查看difference,查看修改但未提交的不同(具体到文件内容的差异)
git diff HEAD -- xxx.txt查看xxx.txt文件在工作区和版本库里面最新版本的区别
git log查看版本历史
git log --pretty=oneline简化输出的版本历史(打印出版本号和备注,忽略其他信息)
git blame xxx.txt以列表形式查看文件的历史修改记录(版本号+时间+commit描述)
git reflog查看命令历史(类似Linux系统下的history)
git log --graph --pretty=oneline --abbrev-commit查看分支合并图

基本操作

撤销操作

##修改工作区的文件,但未添加到暂存区
#工作区的文件还原和暂存区一致(注意,'checkout --' 不是还原到和版本库中一致)
git checkout -- xxx.txt #效果:工作区变更为与暂存区一致

##工作区中的文件修改后,添加到暂存区,并未commit到版本库
#撤销暂存区的修改
git reset HEAD xxx.txt #效果:暂存区变更与版本库一致(工作区不改变)
#工作区改为与暂存区一致
git checkout -- xxx.txt #效果:工作区与暂存区一致

删除文件操作

## 方式一
#删除工作区和暂存区的xxx.txt
git rm xxx.txt
#提交
git commit -m "remove xxx.txt"

## 方式二
#删除暂存区xxx.txt
git rm --cached xxx.txt
#提交
git commit -m "remove xxx.txt"
#删除工作区xxx.txt()
rm xxx.txt

分支

命令描述
git branch列出分支
git branch {branchName}创建分支
git branch -d {branchName}删除分支
git branch -D {branchName}强制删除分支
git checkout {branchName} / git switch {branchName}切换至已有分支
git checkout -b {branchName} / git switch -c {branchName}创建并切换分支
git merge {branchName}将{branchName}分支与当前分支合并(Fast forward模式)
git merge --no-ff -m "merge with noff" {branchName}将{branchName}分支与当前分支合并(–no-ff 普通模式合并)
git stash保存当前工作现场(将当前分支的工作区和暂存区的修改保存/隐藏,使工作区与版本库一致)
git stash list查看保存的工作现场记录(多次git stash产生多个工作现场记录)
git stash apply stash@{0}回到指定的工作现场
git stash drop stash@{0}删除指定的工作现场记录
git stash pop回到指定的工作现场并删除指定的工作现场记录
git cherry-pick {commit_id}复制一个特定的提交到当前分支
  • 使用--no-ff合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
  • git switch -c {branchName},新分支是已当前分支的当前工作区为快照创建的;注意:若当前分支存在未提交的修改,创建的新分支含有这部分修改的内容

question:不同分支的暂存区相同吗?为什么创建分支testing中修改xxx.txt并git add xxx.txt,不进行git commit操作;切换至master分支后,git status可以获取在testing分支的修改信息,此时在master下git commit执行成功,切换至testing分支,xxx.txt退回到未修改的状态

远程仓库

命令描述
git remote add origin url
git push --set-upstream origin testing
git pull
git push
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。