赞
踩
由于个人记性不怎么好,对于版本控制工具的使用也不怎么常用,对于一些命令的使用参照各个博客,仅做个人记录。
2022-08-28 :经过了这么久的拖延,今天终于下定决心好好更新一下关于git操作的内容,因为自己也是通过诸多前辈的文章和视频,逐步摸索出一套git使用方案,从最基础的开始,再到项目基本使用,最后就是较为成熟和完善的团队协作开发。
追踪和未追踪:针对的是工作区文件的一个状态,追踪则表示文件被git纳入版本控制,未追踪则表示文件没有被git纳入版本控制。可以通过git add命令添加文件到暂存区进行跟踪。
远程代码仓库应该是我们最好理解的一个内容了,对应着一个云端的文件存储,通过git命令结合身份认证,能够将我们本地的代码(文本、图片等等)上传到一个服务器上【push】,即github或gitee。出了上传我们也能够下载回来【pull】。同时平台对于服务于无数个用户,对应的将代码存放容器命名为仓库,同时也拓展了仓库的一系列功能。
本地代码管理分为工作区、暂存区、本地仓库三部分。
工作区:我们打开项目的时候,一侧菜单文件目录中的所有内容就是我们的工作区,在这里我们可以进行增、删、改等操作,需要注意的是这里面不包括我们的.git隐藏文件夹内容。
暂存区:暂存区是一个很有意思的设置,位于.git目录下隶属于我们工作区和本地仓库的中间过渡件,它里面的内容既不是我们原本的代码,也不是我们修改后的代码,它是作为一个日志一样的存在,记录了我们所有在工作区的改动,包括文件、代码的增删改、重命名。暂存区存在最大的意义是记录了发生变化前后的部分状态,而不是直接存储前后两份文本,这显然是不合理的。
本地仓库:通过【commit】将暂缓区内的代码状态同步到本地仓库作为备份,形成一个版本,该版本保存了所有暂缓区内修改后的代码,是一个同步的、工作区某一个时刻的全部代码。
git的安装和配置文章有很多,小伙伴们可以参考:git的安装
这部分需要牢记的是如下几个命令:
git config --local -l #查看仓库级别的配置 优先级高
git config --global -l #全局环境下的配置信息 包括user.name和user.email两部分。优先级较高
git config --system -l #系统环境下的配置信息。优先级低
方式一的代码:
echo "# project_1" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/Super-chen-big/project_1.git
git push -u origin main
方式二的代码:
git remote add origin https://github.com/Super-chen-big/project_1.git
git branch -M main
git push -u origin main
git branch -M main 即将当前分支名称更改为main。
git remote add origin 远程仓库地址
我们要想将本地分支推送到远程仓库中,在远程仓库就必须有一个分支和本地分支关联起来。通过 git push -u <远程仓库名> <本地分支名> 即可完成,这条命令在远程仓库创建一个与本地分支同名的分支,并且将本地仓库分支和远程仓库分支关联起来,同时将本地仓库中分支的内容推送到远程仓库分支!
红色表示工作区有修改,但是没有提交到暂存区。需要git add指令来操作
绿色表示暂存区内存在没有同步到本地仓库的内容。需要git commit指令来操作
灰色的(use git push to publish your local commits)表示本地仓库有改变,即生成了一个新的版本,需要通过git push命令来同步到远程仓库。再次查询状态时,状态会变为nothing to commit, working tree clean
git add .
git add --all
git add -u .
git add -A .
git add *.html
区别git add . 和git add *;git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入
参照前辈在博客里的描述: git commit 主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里。
git commit -m "说明内容"
git commit -a -m "信息内容"
git commit --amend
参考了博客:git push 详解
参照下面这个命令格式,我们将常用的push命令及其含义罗列一遍。
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master #将本地的master分支推送到origin主机的master分支,不存在则新建。
git push origin :main #等同于git push origin --delete master
git push origin
git push
git push -u origin master
强烈推荐大家去看一看这一篇博客:git命令及git合并分支进行多人协作
git branch -r #列出所有远程分支。
git branch -a #列出所有分支。
git branch -vv #列出本地分支和远程分支的映射信息
查看远程仓库所有分支列表
git remote show origin
将远程仓库分支下载到本地分支:默认将自动切换分支
git checkout 远程分支名称
拉取当前分支在远程仓库对应分支最新文件内容
git pull
删除远程仓库指定分支
git push 远程仓库名称 --delete 远程分支名称
参考博客:git 创建本地分支 切换本地分支 合并本地分支
查看本地分支
git branch
查看远程分支
git branch -r
查看所有分支,包括本地和远程分支
git branch -a
创建本地分支
git branch <branchName>
切换本地分支
git checkout <branchName>
创建一个分支并切换到该分支
git checkout -b <branchName>
合并某分支到当前分支
git merge <branchName>
删除分支:只能删除非当前分支,和已经合并过的分支
git branch -d <branchName>
强制删除对应分支,哪怕他是没有经过合并的分支
git branch -D <branchName>
git log
git log --pretty=oneline
git log --pretty=oneline -2
git diff 查看工作区与暂存区的差别:必须是已经跟踪了的文件,即提交到暂存区的文件
git diff
查看工作区和本地仓库的差别:必须是已经跟踪了的文件
git diff HEAD
查看暂存区与本地仓库的差别 :必须是已经跟踪了的文件
git diff --cached
git fetch和git pull的区别
创建新的本地分支,切换本地分支,进行开发的时候,所遇到的代码版本问题
经过我的实际操作验证,得出结论。我们在创建代码分支的时候,相当于对之前分支代码进行了一次快照,我们在新分支上的一切更改,与原分支无关,这一点我们在切换分支的时候可以看到,工作区是不同的(新分支上,我新增了一个文件,切换回原分支的时候,文件消失。和之前的快照一样。)所以不需要担心代码隔离的问题。
关于使用git merge和git rebase的区别问题
相同点:都可以合并代码
不同点:
1.通过merge合并分支会新增一个merge commit,然后将两个分支以前的commit记录都指向这个新的commit,是一种非破坏性的操作,保留之前的每个分支的commit,现有分支不会被更改,但是会导致历史记录相对复杂。
2.rebase会先找到两个分支的第一个共同的commit祖先记录,提取在这之后的所有commit记录,将这些记录添加到目标分支的最新提交后面,变成了线性的记录,有效整合所有分支上的提交;主要好处是历史记录清晰,是在原有提交的基础上将差异内容反映出来,消除了git merge带来的不必要的合并提交。
3.rebase操作后会丢弃当前分支已经提交的commit,所以不要在已经push到远程以及和其他人正在协作开发的分支上执行rebase操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。