做企业网站的前景,商场设计方案ppt,建网站要买服务器吗,郑州网站托管助企Git学习 目录 Git学习1.基础1.1 Git Commit:提交记录1.2 Git Branch:创建分支1.3 Git Merge:合并分支的方式一1.4 Git Rebase:合并分支的方式二1.5 查看提交记录#xff1a;提交历史、详细信息、commit_hash1.6 在提交树上移动 2. 高级2.1 HEAD2.2 相对引用2.3 使用相对引用强…Git学习 目录 Git学习1.基础1.1 Git Commit:提交记录1.2 Git Branch:创建分支1.3 Git Merge:合并分支的方式一1.4 Git Rebase:合并分支的方式二1.5 查看提交记录提交历史、详细信息、commit_hash1.6 在提交树上移动 2. 高级2.1 HEAD2.2 相对引用2.3 使用相对引用强制修改分支位置2.4 撤销变更 3 进阶3.1 Git Cherry-pick3.2 交互式Rebase3.3 只提取一个提交记录3.4 修改之前的提交3.5 Git Tag3.6 Git Describe 4 远程仓库 1.基础
1.1 Git Commit:提交记录
当你在Git中进行更改并准备将这些更改保存到版本历史中时你需要使用git commit命令。 语法git commit -m commit message -m选项用于指定提交的消息。这是一个必需的选项你需要在引号中提供一个简短但有意义的消息来描述你的更改。 提交消息提交消息应该清楚地描述你所做的更改。它应该是简洁的但足够详细以便其他人能够理解你的更改的目的。 提交的内容git commit命令将你在工作目录中的所有已暂存更改提交到本地仓库中。这些更改包括新添加的文件、修改的文件和删除的文件。 提交历史每次使用git commit命令时都会创建一个新的提交对象并将其添加到版本历史中。你可以使用git log命令查看提交历史。 提交的顺序提交是按照提交的顺序进行的每个提交都有一个唯一的标识符commit hash。这些标识符可以用于引用特定的提交。 提交的修改如果你在提交后发现需要进行更改你可以使用git commit --amend命令来修改最后一次提交。这将创建一个新的提交对象替换掉之前的提交。 提交的作者每个提交都有一个作者和一个提交者。默认情况下这些值是根据你的Git配置自动设置的但你也可以使用git commit --author选项来手动设置。
这些是关于git commit命令的一些基本知识点。通过使用这个命令你可以将你的更改保存到版本历史中并与其他人共享你的工作。
1.2 Git Branch:创建分支
当你在Git中进行开发时你可以使用git branch命令来管理分支。 语法git branch [branch_name] 不带参数如果你只输入git branch命令它会列出所有的本地分支并在当前分支前面加上一个星号。 创建分支要创建一个新的分支你可以使用git branch命令后跟一个分支名称。例如git branch feature将创建一个名为feature的新分支。 切换分支要切换到一个已存在的分支你可以使用git checkout命令后跟分支名称。例如git checkout feature将切换到名为feature的分支。 创建并切换分支你也可以使用git checkout -b命令来创建一个新的分支并立即切换到该分支。例如git checkout -b feature将创建一个名为feature的新分支并切换到该分支。 删除分支要删除一个已存在的分支你可以使用git branch -d命令后跟分支名称。例如git branch -d feature将删除名为feature的分支。 查看远程分支要查看远程仓库中的分支你可以使用git branch -r命令。这将列出所有的远程分支。 查看所有分支要查看本地和远程仓库中的所有分支你可以使用git branch -a命令。这将列出所有的本地分支和远程分支。
通过使用这个命令你可以创建、切换、删除和查看分支以便在Git中进行更灵活的开发。
1.3 Git Merge:合并分支的方式一
当你在Git中使用分支进行开发时你可能需要将一个分支的更改合并到另一个分支中。这时可以使用git merge命令。 语法git merge branch_name 合并分支git merge命令用于将指定分支的更改合并到当前分支中。例如如果你在master分支上执行git merge feature则会将feature分支的更改合并到master分支中。 快进合并如果要合并的分支的提交历史可以直接应用到当前分支上那么Git会执行快进合并fast-forward merge。这意味着当前分支会直接指向要合并的分支的最新提交。 非快进合并如果要合并的分支的提交历史与当前分支有分叉那么Git会执行非快进合并non-fast-forward merge。这时会创建一个新的合并提交将两个分支的更改合并在一起。 冲突解决在合并过程中如果两个分支对同一个文件的同一部分进行了修改就会发生冲突。Git会在合并时标记出冲突的部分你需要手动解决冲突并提交解决后的文件。 合并冲突当发生冲突时你可以使用git status命令查看冲突的文件并手动编辑这些文件以解决冲突。解决冲突后使用git add命令将解决后的文件标记为已解决然后使用git commit命令提交合并结果。 合并策略Git提供了不同的合并策略可以通过git merge命令的--strategy选项来指定。常用的合并策略包括默认的递归合并策略recursive merge strategy、合并忽略空白字符ignore whitespace changes merge strategy等。
通过使用这个命令你可以将一个分支的更改合并到另一个分支中使得不同分支上的工作得以整合。在合并过程中需要注意解决可能发生的冲突。
1.4 Git Rebase:合并分支的方式二
当你在Git中使用分支进行开发时你可能需要将一个分支的更改应用到另一个分支上而不是简单地合并分支。这时可以使用git rebase命令。Rebase 实际上就是取出一系列的提交记录“复制”它们然后在另外一个地方逐个的放下去。Rebase 的优势就是可以创造更线性的提交历史这听上去有些难以理解。如果只允许使用 Rebase 的话代码库的提交历史将会变得异常清晰。 语法git rebase branch_name rebase操作git rebase命令用于将当前分支的更改应用到指定分支上。它会将当前分支的提交逐个应用到目标分支上并创建新的提交。 rebase与合并的区别与git merge命令不同git rebase命令会将当前分支的提交重新应用到目标分支上而不是简单地将两个分支的更改合并在一起。这样可以使提交历史更加线性和整洁。 冲突解决在rebase过程中如果两个分支对同一个文件的同一部分进行了修改就会发生冲突。与合并不同rebase冲突的解决方式是在应用每个提交时解决冲突。你需要手动解决冲突并使用git rebase --continue命令继续rebase操作。 rebase的优势相比合并rebase可以使提交历史更加整洁和直观。它可以将多个提交合并为一个减少了不必要的合并提交。 注意事项由于rebase会改变提交历史因此不建议在公共分支上进行rebase操作。如果你在公共分支上进行rebase可能会导致其他人的工作出现问题。 强制推送在变基后你可能需要使用git push命令的--force选项来强制推送到远程仓库。这是因为rebase会改变提交历史需要覆盖远程仓库中的提交。
通过使用这个命令你可以将当前分支的更改应用到目标分支上并使提交历史更加整洁和直观。在进行rebase操作时需要注意解决可能发生的冲突并谨慎使用强制推送。
1.5 查看提交记录提交历史、详细信息、commit_hash git log这个命令将显示提交历史包括每个提交的哈希值。默认情况下它会按照最新的提交显示在最上面。你可以使用上下箭头键来浏览提交历史。每个提交的哈希值通常是一个长字符串例如commit 1234567890abcdef。 git show这个命令将显示指定提交的详细信息包括提交的哈希值。你可以使用git show commit_hash来查看特定提交的详细信息。例如git show 1234567890abcdef将显示哈希值为1234567890abcdef的提交的详细信息。 git reflog这个命令将显示引用日志包括分支、标签和HEAD的移动记录。每个移动操作都会显示相应的提交哈希值。你可以使用git reflog来查看提交历史中的所有操作包括已经被删除的分支和重置操作。
这些命令可以帮助你查看提交的哈希值并在Git中进行提交历史的浏览和分析。提交的哈希值是唯一的可以用于引用特定的提交。
1.6 在提交树上移动
在Git中你可以使用一些命令来在提交树上前后移动。下面是一些相关的知识点 git checkout这个命令可以用于在提交树上移动到不同的提交。你可以使用提交的哈希值、分支名或标签名作为参数。例如git checkout commit_hash将使你移动到指定的提交。 git branch -f这个命令可以用于移动分支的指针到不同的提交。你可以使用分支名和提交的哈希值作为参数。例如git branch -f branch_name commit_hash将使指定分支的指针移动到指定的提交。 git reset这个命令可以用于将当前分支的指针移动到不同的提交并且可以选择是否保留更改。有三种不同的重置模式--soft、--mixed和--hard。--soft模式将保留更改--mixed模式将取消暂存的更改--hard模式将丢弃所有更改。例如git reset --soft commit_hash将将当前分支的指针移动到指定的提交并保留更改。 git cherry-pick这个命令可以用于选择性地将一个或多个提交应用到当前分支。你可以使用提交的哈希值作为参数。例如git cherry-pick commit_hash将将指定的提交应用到当前分支。
这些命令可以帮助你在提交树上前后移动从而在Git中进行更灵活的操作。请注意在移动提交或分支时要小心不要丢失或覆盖重要的更改。
2. 高级
2.1 HEAD
在Git中HEAD是一个特殊的指针它指向当前所在的分支或提交。 当前分支在大多数情况下HEAD指向当前所在的分支。例如如果你当前在master分支上那么HEAD将指向master分支。 最新提交如果你在进行提交操作后HEAD将指向最新的提交。这表示你当前所在的分支已经包含了最新的提交。 分离头指针Detached HEAD当你切换到一个特定的提交时HEAD将进入分离头指针状态。这意味着HEAD不再指向任何分支而是直接指向一个提交。在这种状态下你可以查看和修改提交但新的提交将不会与任何分支相关联。 HEAD的移动你可以使用git checkout命令来移动HEAD到不同的分支或提交。例如git checkout branch_name将移动HEAD到指定的分支git checkout commit_hash将移动HEAD到指定的提交。 HEAD的引用在Git中你可以使用HEAD来引用当前分支或提交。例如HEAD~1表示HEAD的父提交HEAD^也表示HEAD的父提交。 HEAD的重置你可以使用git reset命令来重置HEAD的位置。这可以用于撤销提交、移动分支指针或修改提交历史。 HEAD的用途HEAD在Git中有多种用途包括切换分支、查看提交历史、合并分支、重置提交等。它是Git中非常重要的一个指针。
理解和正确使用HEAD对于有效地使用Git非常重要。它可以帮助你在不同的分支和提交之间进行切换并进行各种操作。
2.2 相对引用
在Git中相对引用是一种引用提交的方式它使用相对于当前提交的位置来指定提交。相对引用可以帮助我们更方便地引用提交而不需要记住或输入完整的提交哈希值。下面是一些常用的相对引用
HEADHEAD是相对引用中最常见的一个。它指向当前所在的分支或提交。例如HEAD~1表示HEAD的父提交HEAD^也表示HEAD的父提交。分支名你可以使用分支名作为相对引用来引用该分支的最新提交。例如feature表示feature分支的最新提交。^在相对引用中^表示父提交。例如HEAD^表示HEAD的父提交feature^表示feature分支的父提交。fature^^表示feature分支的父提交的父提交。 若存在两个父提交则默认表示第一个父提交可以使用fature^2表示第二个父提交。 ~在相对引用中~表示向上移。使用 ~num 向上移动多个提交记录如 ~3表示向上移动3个记录。支持链式操作比如git checkout~^2~2表示先向上移动一次然后向第二个父提交移动一次再向上移动两次。
2.3 使用相对引用强制修改分支位置
要使用相对引用强制修改分支位置可以使用git branch -f命令。以下是具体的步骤 首先使用git branch命令查看当前的分支列表确定要修改位置的分支名称。 然后使用git branch -f branch-name commit命令将branch-name替换为要修改位置的分支名称将commit替换为要将分支移动到的目标提交的相对引用。 例如要将分支feature移动到当前分支的前一个提交上可以使用以下命令 git branch -f feature HEAD~1如果要将分支移动到另一个分支的最新提交上可以使用以下命令 git branch -f feature other-branch最后使用git branch命令再次查看分支列表确认分支位置已经被成功修改。
请注意使用相对引用强制修改分支位置会丢失分支上的所有未提交的更改。因此在执行此操作之前请确保已经保存并提交了所有重要的更改。
2.4 撤销变更
在Git中有几种方法可以撤销变更。以下是常用的几种方法 git checkout使用git checkout命令可以撤销对文件的修改。可以使用以下命令将文件恢复到最新的提交状态 git checkout -- file其中file是要撤销修改的文件路径。 git reset使用git reset命令可以撤销提交。可以使用以下命令将分支指针移动到之前的提交同时保留修改的文件 git reset commit其中commit是要回退到的提交的引用。 PS:虽然在你的本地分支中使用 git reset 很方便但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦 git revert使用git revert命令可以创建一个新的提交撤销之前的提交。可以使用以下命令撤销指定的提交 git revert commit其中commit是要撤销的提交的引用。 git stash使用git stash命令可以将当前的修改保存到一个临时区域以便稍后恢复。可以使用以下命令将修改保存到stash中 git stash save message然后可以使用git stash apply命令将修改恢复到工作区。
请注意这些方法都会对Git仓库进行修改因此在执行这些操作之前请确保已经保存并提交了重要的更改。
3 进阶
3.1 Git Cherry-pick
用于选择性地将一个或多个提交应用到当前分支上。它的作用类似于将某个分支上的提交复制到另一个分支上。 语法git cherry-pick commit其中commit是要应用的提交的引用。 应用单个提交可以使用git cherry-pick命令将单个提交应用到当前分支上。例如要将提交abc123应用到当前分支上可以使用以下命令 git cherry-pick abc123应用多个提交可以使用git cherry-pick命令一次性应用多个提交。可以指定多个提交的引用或者使用范围表示多个提交。例如要将提交abc123、def456和ghi789应用到当前分支上可以使用以下命令 git cherry-pick abc123 def456 ghi789或者可以使用范围表示 git cherry-pick abc123..ghi789冲突解决在应用提交时如果发生冲突Git会暂停应用过程并提示解决冲突。需要手动解决冲突后使用git add命令将解决后的文件标记为已解决然后使用git cherry-pick --continue命令继续应用提交。 应用顺序git cherry-pick会按照提交的顺序应用到当前分支上。如果有多个提交需要应用并且其中某个提交的应用会导致冲突那么在解决冲突之前后续的提交不会被应用。 提交信息默认情况下git cherry-pick会将原始提交的提交信息复制到新的提交中。可以使用-x选项将原始提交的引用添加到新的提交信息中。
请注意git cherry-pick会在当前分支上创建新的提交因此在执行此操作之前请确保已经保存并提交了重要的更改。
3.2 交互式Rebase
交互式的 rebase交互式变基是Git中一个强大的命令它允许你在重新应用提交时进行交互式操作例如重新排序、编辑提交消息、合并提交等。以下是关于交互式 rebase 的一些重要知识点 语法git rebase -i commit其中commit是要进行交互式 rebase 的基准提交的引用。 打开交互式 rebase 编辑器执行git rebase -i commit命令后Git会打开一个文本编辑器显示一个包含待应用提交的列表。 重新排序提交在交互式 rebase 编辑器中你可以通过修改提交的顺序来重新排序它们。只需将提交的行拖动到所需的位置即可。 编辑提交消息在交互式 rebase 编辑器中你可以修改每个提交的提交消息。只需将提交的行中的pick关键字替换为reword然后保存并关闭编辑器。Git会在应用提交时提示你编辑提交消息。 合并提交在交互式 rebase 编辑器中你可以将多个连续的提交合并为一个提交。只需将要合并的提交的行中的pick关键字替换为squash或fixup然后保存并关闭编辑器。Git会在应用提交时将这些提交合并为一个提交并提示你编辑合并后的提交消息。 跳过提交在交互式 rebase 编辑器中你可以选择跳过某个提交。只需将要跳过的提交的行中的pick关键字替换为drop然后保存并关闭编辑器。Git会在应用提交时跳过这个提交。 中止 rebase如果在交互式 rebase 过程中遇到问题你可以使用git rebase --abort命令中止 rebase并恢复到 rebase 前的状态。
请注意交互式 rebase 可能会改变提交的历史记录因此在执行此操作之前请确保你了解其潜在的影响并确保已经保存并提交了重要的更改。
3.3 只提取一个提交记录
在Git中可以使用git cherry-pick命令来提取一个提交记录。git cherry-pick命令允许你选择性地将一个或多个提交应用到当前分支上。
要只提取一个提交记录可以按照以下步骤进行操作 首先使用git log命令查看提交记录并找到要提取的提交的哈希值commit hash。 然后使用git cherry-pick commit命令将commit替换为要提取的提交的哈希值。 例如要提取提交abc123可以使用以下命令 git cherry-pick abc123如果要提取的提交在当前分支之外可以使用branch-name~commit的形式来引用提交。其中branch-name是包含要提取的提交的分支名称commit是要提取的提交在该分支上的相对位置。 例如要提取分支feature上的最新提交可以使用以下命令 git cherry-pick feature~1Git会将选定的提交应用到当前分支上并创建一个新的提交。
请注意使用git cherry-pick命令提取提交时可能会发生冲突。如果发生冲突需要手动解决冲突后使用git add命令将解决后的文件标记为已解决然后使用git cherry-pick --continue命令继续应用提交。
此外git cherry-pick会在当前分支上创建新的提交因此在执行此操作之前请确保已经保存并提交了重要的更改。
3.4 修改之前的提交
要修改之前的提交记录而不影响后续提交可以使用git commit --amend命令或者使用交互式 rebase。
以下是两种方法的说明 使用git cherry-pick命令 首先使用git log命令查看提交记录并找到要修改的提交的哈希值commit hash。然后使用git cherry-pick -n commit命令将commit替换为要修改的提交的哈希值。使用-n选项可以将提交应用到当前分支上但不会自动创建新的提交。使用git commit --amend命令修改提交记录。这将打开一个文本编辑器允许你修改提交消息或进行其他修改。在编辑器中修改提交消息或进行其他修改后保存并关闭编辑器。使用git cherry-pick --continue命令继续应用提交。这将创建一个新的提交包含修改后的提交记录。 请注意使用git cherry-pick和git commit --amend修改提交记录时可能会发生冲突。如果发生冲突需要手动解决冲突后使用git add命令将解决后的文件标记为已解决然后使用git cherry-pick --continue命令继续应用提交。 此外修改提交记录后应该避免对已经推送到远程仓库的提交进行修改以免引起问题。如果已经推送到远程仓库应该谨慎处理并与团队成员协商。 使用交互式 rebase 首先使用git log命令查看提交记录并找到要修改的提交的哈希值commit hash。然后使用git rebase -i commit命令将commit替换为要修改的提交的哈希值。Git会打开一个文本编辑器显示一个包含待应用提交的列表。在编辑器中将要修改的提交的行中的pick关键字替换为edit。保存并关闭编辑器后Git会将你切换到要修改的提交。然后使用git commit --amend命令修改提交消息或者进行其他修改。最后使用git rebase --continue命令继续 rebase 过程并将修改后的提交应用到之前的提交上。 请注意使用交互式 rebase 修改提交记录时可能会发生冲突。如果发生冲突需要手动解决冲突后使用git add命令将解决后的文件标记为已解决然后使用git rebase --continue命令继续 rebase 过程。
无论使用哪种方法修改提交记录后应该避免对已经推送到远程仓库的提交进行修改以免引起问题。如果已经推送到远程仓库应该谨慎处理并与团队成员协商。
3.5 Git Tag
当你在Git仓库中达到一个重要的里程碑或版本时你可以使用Git标签tag来标记这个特定的提交。标签可以帮助你在代码库中快速找到特定的版本也可以用于发布软件版本。
以下是一些关于Git标签的常用命令和知识 创建标签 创建一个轻量级标签git tag tagname [commit]如果不指定commit默认指向HEAD所指向的位置创建一个带有说明的标签git tag -a tagname -m 说明 查看标签 查看所有标签git tag查看特定标签的详细信息git show tagname 删除标签 删除本地标签git tag -d tagname删除远程标签git push origin :refs/tags/tagname 推送标签 推送一个标签到远程仓库git push origin tagname推送所有标签到远程仓库git push origin --tags 切换到标签所在的提交 切换到标签所在的提交git checkout tagname 列出标签所在的提交 列出标签所在的提交git rev-list tagname 标签的类型 轻量级标签lightweight tag只是一个指向特定提交的引用没有附加的信息。带注释的标签annotated tag包含了标签的作者、日期、注释等信息。
请注意标签是与提交相关联的而不是与分支相关联的。这意味着即使你在一个分支上创建了一个标签切换到另一个分支后标签仍然会存在。
3.6 Git Describe
git describe是一个用于描述当前所在提交的命令。它主要用于提供一个更具描述性的标识符以便更好地理解当前所在的提交相对于最近的标签或分支。 基本用法 git describe返回当前所在提交的描述符。git describe commit返回指定提交的描述符。 描述符的格式 tag-num-ghash如果当前提交是一个标签那么描述符将直接是标签名。如果当前提交不是一个标签那么描述符将由最近的标签名、当前提交与最近的标签之间的提交数以及当前提交的哈希值组成。 选项 --abbrevn指定哈希值的缩写长度默认为7。--tags只考虑标签忽略其他引用如分支。--exact-match只返回完全匹配的标签。 示例 git describe返回当前所在提交的描述符。git describe --tags只考虑标签返回当前所在提交相对于最近的标签的描述符。git describe HEAD~3返回HEAD的第3个父提交的描述符。
git describe的主要用途是为当前提交提供一个更具描述性的标识符以便更好地理解当前所在的提交相对于最近的标签或分支。它在软件版本控制和发布过程中特别有用。
4 远程仓库
远程仓库并不复杂, 在如今的云计算盛行的世界很容易把远程仓库想象成一个富有魔力的东西, 但实际上它们只是你的仓库在另个一台计算机上的拷贝。你可以通过因特网与这台计算机通信 —— 也就是增加或是获取提交记录
话虽如此, 远程仓库却有一系列强大的特性
首先也是最重要的的点, 远程仓库是一个强大的备份。本地仓库也有恢复文件到指定版本的能力, 但所有的信息都是保存在本地的。有了远程仓库以后即使丢失了本地所有数据, 你仍可以通过远程仓库拿回你丢失的数据。还有就是, 远程让代码社交化了! 既然你的项目被托管到别的地方了, 你的朋友可以更容易地为你的项目做贡献(或者拉取最新的变更)
现在用网站来对远程仓库进行可视化操作变得越发流行了(像 Github 或 Phabricator), 但远程仓库永远是这些工具的顶梁柱, 因此理解其概念非常的重要! 添加远程仓库 添加一个远程仓库git remote add remote_name remote_url查看已添加的远程仓库git remote -v 克隆远程仓库 克隆一个远程仓库到本地git clone remote_url 推送和拉取 推送本地分支到远程仓库git push remote_name branch_name拉取远程分支到本地git pull remote_name branch_name 查看远程仓库信息 查看远程仓库的详细信息git remote show remote_name查看远程分支git branch -r 删除远程仓库 删除一个远程仓库git remote remove remote_name 远程仓库的重命名和修改 重命名一个远程仓库git remote rename old_name new_name修改远程仓库的URLgit remote set-url remote_name new_url 远程分支操作 创建一个远程分支的本地跟踪分支git checkout -b local_branch_name remote_name/remote_branch_name删除一个远程分支的本地跟踪分支git branch -d local_branch_name 远程仓库的同步 获取远程仓库的最新变动git fetch remote_name合并远程分支到当前分支git merge remote_name/remote_branch_name
远程仓库是多人协作和代码共享的重要工具。通过与远程仓库的交互开发者可以方便地进行代码的共享、同步和合作。
参考
learn-gitOpenAI.ChatGPT