做网站网络合同,国美网站建设特点,网站建设的仿站,合肥地区建网站公司02 【本地库操作】
1.git的结构 2.Git 远程库——代码托管中心
2.1 git工作流程
代码托管中心用于维护 Git 的远程库。包括在局域网环境下搭建的 GitLab 服务器#xff0c;以及在外网环境下的 GitHub 和 Gitee (码云)。
一般工作流程如下#xff1a;
1#xff0e;从远程…02 【本地库操作】
1.git的结构 2.Git 远程库——代码托管中心
2.1 git工作流程
代码托管中心用于维护 Git 的远程库。包括在局域网环境下搭建的 GitLab 服务器以及在外网环境下的 GitHub 和 Gitee (码云)。
一般工作流程如下
1从远程仓库中克隆 Git 资源作为本地仓库。
2从本地仓库中checkout代码然后进行代码修改
3在提交前先将代码提交到暂存区。
4提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
5在修改完成后需要和团队成员共享代码时可以将代码push到远程仓库。
团队内部协作 跨团队协作 2.2 Github:开源社区
Github线上仓库结构介绍 Github Issues
作用发现代码BUG但是目前没有成型代码需要讨论时用或者使用开源项目出现问题时使用
fork与git clone的区别
1.区别
git clone 是在自己电脑直接敲命令结果是将github仓库中的项目克隆到自己本地电脑中了(就是下载过来)
fork是直接访问github网站在项目页面中点击fork然后自己github项目中就会多出一个复制的项目
2.用法
如果我们想要修改他人github项目的话我们直接git clone代码到本地是不能push的所以我们使用fork先把代码复制到自己的github仓库然后git clone到本地修改然后在提交push这里的push是push到自己github仓库了我们自己的github仓库中的代码是fork源的一个分支这时候我们想要把修改的代码提交给他人的话就可以在自己github上pull requests等其他人看到后就可以把代码做一个合并
3.初始化配置
以本地计算机的G:\Desktop\git的工作目录在其中新建一个项目文件夹git_demo后打开。
执行git init对git存储库初始化 查看.git文件夹中的信息 文件./.git/config用于记录该本地库的配置信息。
注意.git 目录中存放的是本地库相关的子目录和文件不要删除也不要胡 乱修改。
3.1 设置签名
签名由user. name (用户名)和user. email (Email地址)组成用于对不同开发者的身份作区分包括项目/仓库级别、系统用户级别。 这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。 项目/仓库级别与系统用户级别必须有一个设置生效。 3.1.1 项目/仓库级别 具有更高的优先级签名; 各个本地库的签名信息相互独立互不干扰。 git config user.name dselegent
git config user.email dselegentqq.com配置文件的修改保存在Project/.git/config文件中。 3.1.2 系统用户级别 若未设置项目/仓库级别的签名时使用用户级别的签名。 git config --global user.name dselegent
git config --global user.email dselegentqq.com配置文件的修改保存在~/.gitconfig文件中。 级别优先级
就近原则项目级别优先于系统用户级别二者都有时采用项目级别 的签名如果只有系统用户级别的签名就以系统用户级别的签名为准二者都没有不允许
3.2 配置编辑器
使用命令git config [--global | --system] core.editor [...]为 Git 的配置编辑器。
3.3 配置信息
使用命令git config --list查看 Git 的配置信息。 4.版本控制
4.1 在项目中新建文件
在G:\Desktop\git中新建文件test1.txt后打开。 hello git!4.1.1 查看状态
使用git status查看工作区、暂存区状态 对于master分支本地库暂未有任何被提交的内容、暂存区亦未有任何可提交的内容(可用git add命令追踪新建的文件) 存在未追踪的文件test1.txt (可用git add file... 命令将文件载入暂存 区以待提交)。 4.1.2 添加到暂存区
用git add test1命令将文件test1.txt添加到暂存区。 警告此时根据转换文本文件行尾换行的配置默认按照Windows风格检出后用Unix的风格替换提交(将LF转换为CRLF) 本地工作目录不受这一替换的影响。 对于master分支本地库暂未有任何被提交的内容、暂存区有以下新文件的改变可被提交:test1.txt (可用git rm --cached fi1e... 命令将文件撤出暂存区)。 从暂存区撤出文件的命令不会影响工作区的文件。 touch 文件名 创建文件 git add 文件名 将文件添加到暂存区 git add 文件名1 文件名2 文件名3 将多个文件添加到暂存区 git add . 添加当前目录下的文件到缓存区注意有空格在.前面 4.1.3 提交到本地库
用git commit test1 -m first commit命令将文件test1.txt提交到本地库。 在master分支上创建了一个根提交(ID号:da56888) 。注释内容为: first commit 。这次提交修改/新建了1个文件,插入了1行内容。 对于master分支暂存区暂未有任何可提交的内容工作目录的文件系统树完全一致。 4.2 修改文件内容
对文件test.txt做出 1 处修改后保存
hello git!
second4.2.1 查看状态 对于master分支存在未暂存的修改: test1.txt (可用git add file... 命令将文件更新到 暂存区以待提交或用git restore file... 命令丢弃工作目录的更改)。暂存区没有可提交的修改(可用git add 命令将修改添加到暂存区或用git commit -a 将修改暂存后立即提交)。 4.2.2 添加到暂存区 4.2.3 提交修改到本地库
使用git commit text -m My second commit”命令提交修改到本地库而不必单独用编辑器注释修改。 4.3 查看提交的版本记录 每一个提交记录(commit)都有一个hash值作为提交记录的键与提交人、提交时间以及提交注释对应。在当前的版本中有(HEAD - master)的标记即用HEAD指针指向当前版本。 版本间的切换通过移动HEAD指针完成。 若日志信息太多可用空格键向下翻页、b键向上翻页、q键退出。 可用git 1og --prettyoneline 命令以每个提交历史仅占1行的方式显示日志; 可用git 1og --oneline命令显示更简略的日志信息此时只截取显示40位hash值的前7位; 可用git reflog 命令显示带HEAD指针移动次数的简略信息。. git reflog命令可显示HEAD指针前后的全部提交日志;其他日志查看命令只显示从当前版本往后的提交日志。 DSDS MINGW64 /g/Desktop/git/git_demo (master)
$ git log --prettyoneline
a087691b1b36033551860de2923512caaa593b06 (HEAD - master) My second commit
da568881807198113fa60debe615bcd0cc7834e1 first commitDSDS MINGW64 /g/Desktop/git/git_demo (master)
$ git log --oneline
a087691 (HEAD - master) My second commit
da56888 first commitDSDS MINGW64 /g/Desktop/git/git_demo (master)
$ git reflog
a087691 (HEAD - master) HEAD{0}: commit: My second commit
da56888 HEAD{1}: commit (initial): first commit4.4 版本的切换
版本前进后退的本质是HEAD指针的位置的移动。
4.4.1 版本的直达
使用git reset --hard hash_len_7命令。 4.4.2 版本后退
方法一
使用git reset --hard HEAD[^...]执行版本的后退每个^符号后退 1 版不加^符号则恢复成当前指针所指位置的状态。
git reset --hard HEAD^ 表示回退一个版本
git reset --hard HEAD^^ 表示回退两个版本
git reset --hard HEAD^^^ 表示回退三个版本
git reset --hard HEAD^^^^ 表示回退四个版本 方法二
使用git reset --hard HEAD~[NumberOfSteps]执行版本的前进~符号后的数字注明了连续后退的步数。
git reset --hard~3 表示回退三个版本 做了第三次提交之后才回退版本 4.4.3 reset 命令的 3 个参数 使用git help command命令用浏览器查看特定命令的本地帮助文件如git help reset。 –soft 仅在本地库移动HEAD指针。 –mixed
在本地库移动HEAD指针且重置暂存区。 –hard
在本地库移动HEAD指针且重置暂存区和工作区。 4.5 文件的删除与找回
前提文件存在时的状态提交到了本地库。 核心 1.文件删除前已提交到本地库git reset --hard HistoricalRecords 2.文件删除前未提交到本地库git reset --hard HEAD。
4.5.1 创建待删除文件
创建test2.txt文件并写入一行内容test2。
添加到暂存区后提交 4.5.2 删除文件
删除文件 rm -rf 文件名 通知要删除某文件 git rm 文件名 删除缓存区的该文件 git reset . 清空暂存区所有文件 git commit -m注释 将仓库文件删除 使用rm test2.txt命令删除test2.txt文件。 删除后的状态 暂存并提交 4.5.3 找回文件
将版本回退到删除文件前的那个版本即可完成对文件的找回。 若文件的删除变化只添加 (add) 到了暂存区而未提交 (commit) 到本地库则可使用git reset --hard HEAD命令找回文件。 4.6 文件差异性比较
对于test1.txt文件修改前 修改后 使用git diff filename命令默认用于当前文件与暂存区对应文件的差异比较 若使用git diff hash_len_7|HEAD|HEAD^[^...] filename命令则可用于当前文件与特定历史版本或已暂存前文件的差异比较。 使用不带文件名的diff命令则可比较工作区的所有文件。 4.7 分支管理
Git 分支是由指针管理起来的可以快速创建、切换、合并与删除适用于大型项目的开发。在分支上开发调试后合并到主分支的策略使每个人的开发模块式相互独立不影响到其他人。 1.主分支默认的master分支只用来发布重大版本更新各版本可以有不同的标签以便于查找 2.日常开发应该在其他分支上完成如develop 3.对于新增功能 (feature) 、用于预发布 (release) 、Bug 修复 (bug/hot_fix) 的临时性分支应在使用完毕后及时删除以免分支的混乱。 4.多人开发时可分别创建自己专属的分支当阶段性工作完成后应该合并到上级分支。 4.7.1 创建分支
使用git branch BranchName命令创建名为BranchName的新分支如git branch hot_fix。
4.7.2 查看分支
使用git branch -v命令可查看分支的详细 (verbose) 信息哈希值和名称。 列出全部分支后分支名称前以星号*标注的是当前分支。 当前分支已在各命令行的括号()中提及。 4.7.3 切换分支
使用git checkout BranchName切换到指定分支如git checkout hot_fix。 4.7.4 合并分支
在hot_fix分支中产生修改 使用git checkout master命令切换到接受合并的分支后在使用git merge BranchName命令合并分支 4.7.5 分支合并的冲突产生
分支的同一位置同时发生不同的修改时将在相互合并分支时产生冲突。需要执行手动的冲突解决。 在hot_fix分支上修改添加到暂存区后提交 在master分支中的同一位置做出不同的修改添加到暂存区后提交 并尝试将hot_fix合并到master 自动合并失败需要手动修复冲突然后提交结果。 4.7.6 分支合并的冲突解决 不同于 SVNGit 产生冲突后不会产生新的额外文件。 对于产生冲突的文件Git 会在冲突发生出做出特定的标记 hello git!
dsHEAD ---
hot_fix2:master --- 这是当前分支的内容hot_fix2 ---hot_fix --- 这是用于合并的内容
1.编辑文件删除特殊符号把文件修改到满意为止后保存退出 2.使用git add filename命令将此文件添加暂存区 3.使用git commit -m fix merge命令提交冲突修复执行冲突修复时不能添加具体的文件名。 4.7.7 删除分支 注意在删除分支时要退出该分支 1 先切换到别的分支: git checkout master
2 删除本地分支 git branch -d hot_fix
3 若是删除不了能够强制删除git branch -D hot_fix
4 有必要的状况下删除远程分支git push origin --delete hot_fix