Git学习总结

Git学习

目录

  • Git学习
    • 1.基础
      • 1.1 Git Commit:提交记录
      • 1.2 Git Branch:创建分支
      • 1.3 Git Merge:合并分支的方式一
      • 1.4 Git Rebase:合并分支的方式二
      • 1.5 查看提交记录:提交历史、详细信息、commit_hash
      • 1.6 在提交树上移动
    • 2. 高级
      • 2.1 HEAD
      • 2.2 相对引用
      • 2.3 使用相对引用强制修改分支位置
      • 2.4 撤销变更
    • 3 进阶
      • 3.1 Git Cherry-pick
      • 3.2 交互式Rebase
      • 3.3 只提取一个提交记录
      • 3.4 修改之前的提交
      • 3.5 Git Tag
      • 3.6 Git Describe
    • 4 远程仓库

1.基础

1.1 Git Commit:提交记录

当你在Git中进行更改并准备将这些更改保存到版本历史中时,你需要使用git commit命令。

  1. 语法:git commit -m "commit message"

  2. -m选项:用于指定提交的消息。这是一个必需的选项,你需要在引号中提供一个简短但有意义的消息来描述你的更改。

  3. 提交消息:提交消息应该清楚地描述你所做的更改。它应该是简洁的,但足够详细以便其他人能够理解你的更改的目的。

  4. 提交的内容:git commit命令将你在工作目录中的所有已暂存更改提交到本地仓库中。这些更改包括新添加的文件、修改的文件和删除的文件。

  5. 提交历史:每次使用git commit命令时,都会创建一个新的提交对象,并将其添加到版本历史中。你可以使用git log命令查看提交历史。

  6. 提交的顺序:提交是按照提交的顺序进行的,每个提交都有一个唯一的标识符(commit hash)。这些标识符可以用于引用特定的提交。

  7. 提交的修改:如果你在提交后发现需要进行更改,你可以使用git commit --amend命令来修改最后一次提交。这将创建一个新的提交对象,替换掉之前的提交。

  8. 提交的作者:每个提交都有一个作者和一个提交者。默认情况下,这些值是根据你的Git配置自动设置的,但你也可以使用git commit --author选项来手动设置。

这些是关于git commit命令的一些基本知识点。通过使用这个命令,你可以将你的更改保存到版本历史中,并与其他人共享你的工作。

1.2 Git Branch:创建分支

当你在Git中进行开发时,你可以使用git branch命令来管理分支。

  1. 语法:git branch [branch_name]

  2. 不带参数:如果你只输入git branch命令,它会列出所有的本地分支,并在当前分支前面加上一个星号。

  3. 创建分支:要创建一个新的分支,你可以使用git branch命令后跟一个分支名称。例如,git branch feature将创建一个名为"feature"的新分支。

  4. 切换分支:要切换到一个已存在的分支,你可以使用git checkout命令后跟分支名称。例如,git checkout feature将切换到名为"feature"的分支。

  5. 创建并切换分支:你也可以使用git checkout -b命令来创建一个新的分支并立即切换到该分支。例如,git checkout -b feature将创建一个名为"feature"的新分支并切换到该分支。

  6. 删除分支:要删除一个已存在的分支,你可以使用git branch -d命令后跟分支名称。例如,git branch -d feature将删除名为"feature"的分支。

  7. 查看远程分支:要查看远程仓库中的分支,你可以使用git branch -r命令。这将列出所有的远程分支。

  8. 查看所有分支:要查看本地和远程仓库中的所有分支,你可以使用git branch -a命令。这将列出所有的本地分支和远程分支。

通过使用这个命令,你可以创建、切换、删除和查看分支,以便在Git中进行更灵活的开发。

1.3 Git Merge:合并分支的方式一

当你在Git中使用分支进行开发时,你可能需要将一个分支的更改合并到另一个分支中。这时可以使用git merge命令。

  1. 语法:git merge <branch_name>

  2. 合并分支:git merge命令用于将指定分支的更改合并到当前分支中。例如,如果你在master分支上执行git merge feature,则会将feature分支的更改合并到master分支中。

  3. 快进合并:如果要合并的分支的提交历史可以直接应用到当前分支上,那么Git会执行快进合并(fast-forward merge)。这意味着当前分支会直接指向要合并的分支的最新提交。

  4. 非快进合并:如果要合并的分支的提交历史与当前分支有分叉,那么Git会执行非快进合并(non-fast-forward merge)。这时会创建一个新的合并提交,将两个分支的更改合并在一起。

  5. 冲突解决:在合并过程中,如果两个分支对同一个文件的同一部分进行了修改,就会发生冲突。Git会在合并时标记出冲突的部分,你需要手动解决冲突并提交解决后的文件。

  6. 合并冲突:当发生冲突时,你可以使用git status命令查看冲突的文件,并手动编辑这些文件以解决冲突。解决冲突后,使用git add命令将解决后的文件标记为已解决,然后使用git commit命令提交合并结果。

  7. 合并策略:Git提供了不同的合并策略,可以通过git merge命令的--strategy选项来指定。常用的合并策略包括默认的递归合并策略(recursive merge strategy)、合并忽略空白字符(ignore whitespace changes merge strategy)等。

通过使用这个命令,你可以将一个分支的更改合并到另一个分支中,使得不同分支上的工作得以整合。在合并过程中,需要注意解决可能发生的冲突。

1.4 Git Rebase:合并分支的方式二

当你在Git中使用分支进行开发时,你可能需要将一个分支的更改应用到另一个分支上,而不是简单地合并分支。这时可以使用git rebase命令。Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。Rebase 的优势就是可以创造更线性的提交历史,这听上去有些难以理解。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。

  1. 语法:git rebase <branch_name>

  2. rebase操作:git rebase命令用于将当前分支的更改应用到指定分支上。它会将当前分支的提交逐个应用到目标分支上,并创建新的提交。

  3. rebase与合并的区别:与git merge命令不同,git rebase命令会将当前分支的提交重新应用到目标分支上,而不是简单地将两个分支的更改合并在一起。这样可以使提交历史更加线性和整洁。

  4. 冲突解决:在rebase过程中,如果两个分支对同一个文件的同一部分进行了修改,就会发生冲突。与合并不同,rebase冲突的解决方式是在应用每个提交时解决冲突。你需要手动解决冲突并使用git rebase --continue命令继续rebase操作。

  5. rebase的优势:相比合并,rebase可以使提交历史更加整洁和直观。它可以将多个提交合并为一个,减少了不必要的合并提交。

  6. 注意事项:由于rebase会改变提交历史,因此不建议在公共分支上进行rebase操作。如果你在公共分支上进行rebase,可能会导致其他人的工作出现问题。

  7. 强制推送:在变基后,你可能需要使用git push命令的--force选项来强制推送到远程仓库。这是因为rebase会改变提交历史,需要覆盖远程仓库中的提交。

通过使用这个命令,你可以将当前分支的更改应用到目标分支上,并使提交历史更加整洁和直观。在进行rebase操作时,需要注意解决可能发生的冲突,并谨慎使用强制推送。

1.5 查看提交记录:提交历史、详细信息、commit_hash

  1. git log:这个命令将显示提交历史,包括每个提交的哈希值。默认情况下,它会按照最新的提交显示在最上面。你可以使用上下箭头键来浏览提交历史。每个提交的哈希值通常是一个长字符串,例如commit 1234567890abcdef

  2. git show:这个命令将显示指定提交的详细信息,包括提交的哈希值。你可以使用git show <commit_hash>来查看特定提交的详细信息。例如,git show 1234567890abcdef将显示哈希值为1234567890abcdef的提交的详细信息。

  3. git reflog:这个命令将显示引用日志,包括分支、标签和HEAD的移动记录。每个移动操作都会显示相应的提交哈希值。你可以使用git reflog来查看提交历史中的所有操作,包括已经被删除的分支和重置操作。

这些命令可以帮助你查看提交的哈希值,并在Git中进行提交历史的浏览和分析。提交的哈希值是唯一的,可以用于引用特定的提交。

1.6 在提交树上移动

在Git中,你可以使用一些命令来在提交树上前后移动。下面是一些相关的知识点:

  1. git checkout:这个命令可以用于在提交树上移动到不同的提交。你可以使用提交的哈希值、分支名或标签名作为参数。例如,git checkout <commit_hash>将使你移动到指定的提交。

  2. git branch -f:这个命令可以用于移动分支的指针到不同的提交。你可以使用分支名和提交的哈希值作为参数。例如,git branch -f <branch_name> <commit_hash>将使指定分支的指针移动到指定的提交。

  3. git reset:这个命令可以用于将当前分支的指针移动到不同的提交,并且可以选择是否保留更改。有三种不同的重置模式:--soft--mixed--hard--soft模式将保留更改,--mixed模式将取消暂存的更改,--hard模式将丢弃所有更改。例如,git reset --soft <commit_hash>将将当前分支的指针移动到指定的提交,并保留更改。

  4. git cherry-pick:这个命令可以用于选择性地将一个或多个提交应用到当前分支。你可以使用提交的哈希值作为参数。例如,git cherry-pick <commit_hash>将将指定的提交应用到当前分支。

这些命令可以帮助你在提交树上前后移动,从而在Git中进行更灵活的操作。请注意,在移动提交或分支时,要小心不要丢失或覆盖重要的更改。

2. 高级

2.1 HEAD

在Git中,HEAD是一个特殊的指针,它指向当前所在的分支或提交。

  1. 当前分支:在大多数情况下,HEAD指向当前所在的分支。例如,如果你当前在master分支上,那么HEAD将指向master分支。

  2. 最新提交:如果你在进行提交操作后,HEAD将指向最新的提交。这表示你当前所在的分支已经包含了最新的提交。

  3. 分离头指针(Detached HEAD):当你切换到一个特定的提交时,HEAD将进入分离头指针状态。这意味着HEAD不再指向任何分支,而是直接指向一个提交。在这种状态下,你可以查看和修改提交,但新的提交将不会与任何分支相关联。

  4. HEAD的移动:你可以使用git checkout命令来移动HEAD到不同的分支或提交。例如,git checkout <branch_name>将移动HEAD到指定的分支,git checkout <commit_hash>将移动HEAD到指定的提交。

  5. HEAD的引用:在Git中,你可以使用HEAD来引用当前分支或提交。例如,HEAD~1表示HEAD的父提交,HEAD^也表示HEAD的父提交。

  6. HEAD的重置:你可以使用git reset命令来重置HEAD的位置。这可以用于撤销提交、移动分支指针或修改提交历史。

  7. HEAD的用途:HEAD在Git中有多种用途,包括切换分支、查看提交历史、合并分支、重置提交等。它是Git中非常重要的一个指针。

理解和正确使用HEAD对于有效地使用Git非常重要。它可以帮助你在不同的分支和提交之间进行切换,并进行各种操作。

2.2 相对引用

在Git中,相对引用是一种引用提交的方式,它使用相对于当前提交的位置来指定提交。相对引用可以帮助我们更方便地引用提交,而不需要记住或输入完整的提交哈希值。下面是一些常用的相对引用:

  1. HEADHEAD是相对引用中最常见的一个。它指向当前所在的分支或提交。例如,HEAD~1表示HEAD的父提交,HEAD^也表示HEAD的父提交。
  2. 分支名:你可以使用分支名作为相对引用来引用该分支的最新提交。例如,feature表示feature分支的最新提交。
  3. ^:在相对引用中,^表示父提交。例如,HEAD^表示HEAD的父提交,feature^表示feature分支的父提交。fature^^表示feature分支的父提交的父提交。
    • 若存在两个父提交,则默认表示第一个父提交,可以使用fature^2表示第二个父提交。
  4. ~:在相对引用中,~表示向上移。使用 ~<num> 向上移动多个提交记录,如 ~3,表示向上移动3个记录。
  5. 支持链式操作,比如git checkout~^2~2,表示先向上移动一次,然后向第二个父提交移动一次,再向上移动两次。

2.3 使用相对引用强制修改分支位置

要使用相对引用强制修改分支位置,可以使用git branch -f命令。以下是具体的步骤:

  1. 首先,使用git branch命令查看当前的分支列表,确定要修改位置的分支名称。

  2. 然后,使用git branch -f <branch-name> <commit>命令,将<branch-name>替换为要修改位置的分支名称,将<commit>替换为要将分支移动到的目标提交的相对引用。

    例如,要将分支feature移动到当前分支的前一个提交上,可以使用以下命令:

    git branch -f feature HEAD~1
    

    如果要将分支移动到另一个分支的最新提交上,可以使用以下命令:

    git branch -f feature other-branch
    
  3. 最后,使用git branch命令再次查看分支列表,确认分支位置已经被成功修改。

请注意,使用相对引用强制修改分支位置会丢失分支上的所有未提交的更改。因此,在执行此操作之前,请确保已经保存并提交了所有重要的更改。

2.4 撤销变更

在Git中,有几种方法可以撤销变更。以下是常用的几种方法:

  1. git checkout:使用git checkout命令可以撤销对文件的修改。可以使用以下命令将文件恢复到最新的提交状态:

    git checkout -- <file>
    

    其中,<file>是要撤销修改的文件路径。

  2. git reset:使用git reset命令可以撤销提交。可以使用以下命令将分支指针移动到之前的提交,同时保留修改的文件:

    git reset <commit>
    

    其中,<commit>是要回退到的提交的引用。

    PS:虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!

  3. git revert:使用git revert命令可以创建一个新的提交,撤销之前的提交。可以使用以下命令撤销指定的提交:

    git revert <commit>
    

    其中,<commit>是要撤销的提交的引用。

  4. git stash:使用git stash命令可以将当前的修改保存到一个临时区域,以便稍后恢复。可以使用以下命令将修改保存到stash中:

    git stash save "message"
    

    然后,可以使用git stash apply命令将修改恢复到工作区。

请注意,这些方法都会对Git仓库进行修改,因此在执行这些操作之前,请确保已经保存并提交了重要的更改。

3 进阶

3.1 Git Cherry-pick

用于选择性地将一个或多个提交应用到当前分支上。它的作用类似于将某个分支上的提交复制到另一个分支上。

  1. 语法:git cherry-pick <commit>,其中<commit>是要应用的提交的引用。

  2. 应用单个提交:可以使用git cherry-pick命令将单个提交应用到当前分支上。例如,要将提交abc123应用到当前分支上,可以使用以下命令:

    git cherry-pick abc123
    
  3. 应用多个提交:可以使用git cherry-pick命令一次性应用多个提交。可以指定多个提交的引用,或者使用范围表示多个提交。例如,要将提交abc123def456ghi789应用到当前分支上,可以使用以下命令:

    git cherry-pick abc123 def456 ghi789
    

    或者,可以使用范围表示:

    git cherry-pick abc123..ghi789
    
  4. 冲突解决:在应用提交时,如果发生冲突,Git会暂停应用过程并提示解决冲突。需要手动解决冲突后,使用git add命令将解决后的文件标记为已解决,然后使用git cherry-pick --continue命令继续应用提交。

  5. 应用顺序:git cherry-pick会按照提交的顺序应用到当前分支上。如果有多个提交需要应用,并且其中某个提交的应用会导致冲突,那么在解决冲突之前,后续的提交不会被应用。

  6. 提交信息:默认情况下,git cherry-pick会将原始提交的提交信息复制到新的提交中。可以使用-x选项将原始提交的引用添加到新的提交信息中。

请注意,git cherry-pick会在当前分支上创建新的提交,因此在执行此操作之前,请确保已经保存并提交了重要的更改。

3.2 交互式Rebase

交互式的 rebase(交互式变基)是Git中一个强大的命令,它允许你在重新应用提交时进行交互式操作,例如重新排序、编辑提交消息、合并提交等。以下是关于交互式 rebase 的一些重要知识点:

  1. 语法:git rebase -i <commit>,其中<commit>是要进行交互式 rebase 的基准提交的引用。

  2. 打开交互式 rebase 编辑器:执行git rebase -i <commit>命令后,Git会打开一个文本编辑器,显示一个包含待应用提交的列表。

  3. 重新排序提交:在交互式 rebase 编辑器中,你可以通过修改提交的顺序来重新排序它们。只需将提交的行拖动到所需的位置即可。

  4. 编辑提交消息:在交互式 rebase 编辑器中,你可以修改每个提交的提交消息。只需将提交的行中的pick关键字替换为reword,然后保存并关闭编辑器。Git会在应用提交时提示你编辑提交消息。

  5. 合并提交:在交互式 rebase 编辑器中,你可以将多个连续的提交合并为一个提交。只需将要合并的提交的行中的pick关键字替换为squashfixup,然后保存并关闭编辑器。Git会在应用提交时将这些提交合并为一个提交,并提示你编辑合并后的提交消息。

  6. 跳过提交:在交互式 rebase 编辑器中,你可以选择跳过某个提交。只需将要跳过的提交的行中的pick关键字替换为drop,然后保存并关闭编辑器。Git会在应用提交时跳过这个提交。

  7. 中止 rebase:如果在交互式 rebase 过程中遇到问题,你可以使用git rebase --abort命令中止 rebase,并恢复到 rebase 前的状态。

请注意,交互式 rebase 可能会改变提交的历史记录,因此在执行此操作之前,请确保你了解其潜在的影响,并确保已经保存并提交了重要的更改。

3.3 只提取一个提交记录

在Git中,可以使用git cherry-pick命令来提取一个提交记录。git cherry-pick命令允许你选择性地将一个或多个提交应用到当前分支上。

要只提取一个提交记录,可以按照以下步骤进行操作:

  1. 首先,使用git log命令查看提交记录,并找到要提取的提交的哈希值(commit hash)。

  2. 然后,使用git cherry-pick <commit>命令,将<commit>替换为要提取的提交的哈希值。

    例如,要提取提交abc123,可以使用以下命令:

    git cherry-pick abc123
    

    如果要提取的提交在当前分支之外,可以使用<branch-name>~<commit>的形式来引用提交。其中,<branch-name>是包含要提取的提交的分支名称,<commit>是要提取的提交在该分支上的相对位置。

    例如,要提取分支feature上的最新提交,可以使用以下命令:

    git cherry-pick feature~1
    
  3. Git会将选定的提交应用到当前分支上,并创建一个新的提交。

请注意,使用git cherry-pick命令提取提交时,可能会发生冲突。如果发生冲突,需要手动解决冲突后,使用git add命令将解决后的文件标记为已解决,然后使用git cherry-pick --continue命令继续应用提交。

此外,git cherry-pick会在当前分支上创建新的提交,因此在执行此操作之前,请确保已经保存并提交了重要的更改。

3.4 修改之前的提交

要修改之前的提交记录而不影响后续提交,可以使用git commit --amend命令或者使用交互式 rebase。

以下是两种方法的说明:

  1. 使用git cherry-pick命令:

    • 首先,使用git log命令查看提交记录,并找到要修改的提交的哈希值(commit hash)。
    • 然后,使用git cherry-pick -n <commit>命令,将<commit>替换为要修改的提交的哈希值。使用-n选项可以将提交应用到当前分支上,但不会自动创建新的提交。
    • 使用git commit --amend命令修改提交记录。这将打开一个文本编辑器,允许你修改提交消息或进行其他修改。
    • 在编辑器中,修改提交消息或进行其他修改后,保存并关闭编辑器。
    • 使用git cherry-pick --continue命令继续应用提交。这将创建一个新的提交,包含修改后的提交记录。

    请注意,使用git cherry-pickgit commit --amend修改提交记录时,可能会发生冲突。如果发生冲突,需要手动解决冲突后,使用git add命令将解决后的文件标记为已解决,然后使用git cherry-pick --continue命令继续应用提交。

    此外,修改提交记录后,应该避免对已经推送到远程仓库的提交进行修改,以免引起问题。如果已经推送到远程仓库,应该谨慎处理,并与团队成员协商。

  2. 使用交互式 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标签的常用命令和知识:

  1. 创建标签:

    • 创建一个轻量级标签:git tag <tagname> [<commit>],如果不指定<commit>,默认指向HEAD所指向的位置
    • 创建一个带有说明的标签:git tag -a <tagname> -m "说明"
  2. 查看标签:

    • 查看所有标签:git tag
    • 查看特定标签的详细信息:git show <tagname>
  3. 删除标签:

    • 删除本地标签:git tag -d <tagname>
    • 删除远程标签:git push origin :refs/tags/<tagname>
  4. 推送标签:

    • 推送一个标签到远程仓库:git push origin <tagname>
    • 推送所有标签到远程仓库:git push origin --tags
  5. 切换到标签所在的提交:

    • 切换到标签所在的提交:git checkout <tagname>
  6. 列出标签所在的提交:

    • 列出标签所在的提交:git rev-list <tagname>
  7. 标签的类型:

    • 轻量级标签(lightweight tag):只是一个指向特定提交的引用,没有附加的信息。
    • 带注释的标签(annotated tag):包含了标签的作者、日期、注释等信息。

请注意,标签是与提交相关联的,而不是与分支相关联的。这意味着,即使你在一个分支上创建了一个标签,切换到另一个分支后,标签仍然会存在。

3.6 Git Describe

git describe是一个用于描述当前所在提交的命令。它主要用于提供一个更具描述性的标识符,以便更好地理解当前所在的提交相对于最近的标签或分支。

  1. 基本用法:

    • git describe:返回当前所在提交的描述符。
    • git describe <commit>:返回指定提交的描述符。
  2. 描述符的格式:

    • <tag>-<num>-g<hash>:如果当前提交是一个标签,那么描述符将直接是标签名。如果当前提交不是一个标签,那么描述符将由最近的标签名、当前提交与最近的标签之间的提交数以及当前提交的哈希值组成。
  3. 选项:

    • --abbrev=<n>:指定哈希值的缩写长度,默认为7。
    • --tags:只考虑标签,忽略其他引用(如分支)。
    • --exact-match:只返回完全匹配的标签。
  4. 示例:

    • git describe:返回当前所在提交的描述符。
    • git describe --tags:只考虑标签,返回当前所在提交相对于最近的标签的描述符。
    • git describe HEAD~3:返回HEAD的第3个父提交的描述符。

git describe的主要用途是为当前提交提供一个更具描述性的标识符,以便更好地理解当前所在的提交相对于最近的标签或分支。它在软件版本控制和发布过程中特别有用。

4 远程仓库

远程仓库并不复杂, 在如今的云计算盛行的世界很容易把远程仓库想象成一个富有魔力的东西, 但实际上它们只是你的仓库在另个一台计算机上的拷贝。你可以通过因特网与这台计算机通信 —— 也就是增加或是获取提交记录

话虽如此, 远程仓库却有一系列强大的特性

  • 首先也是最重要的的点, 远程仓库是一个强大的备份。本地仓库也有恢复文件到指定版本的能力, 但所有的信息都是保存在本地的。有了远程仓库以后,即使丢失了本地所有数据, 你仍可以通过远程仓库拿回你丢失的数据。
  • 还有就是, 远程让代码社交化了! 既然你的项目被托管到别的地方了, 你的朋友可以更容易地为你的项目做贡献(或者拉取最新的变更)

现在用网站来对远程仓库进行可视化操作变得越发流行了(像 Github 或 Phabricator), 但远程仓库永远是这些工具的顶梁柱, 因此理解其概念非常的重要!

  1. 添加远程仓库:

    • 添加一个远程仓库:git remote add <remote_name> <remote_url>
    • 查看已添加的远程仓库:git remote -v
  2. 克隆远程仓库:

    • 克隆一个远程仓库到本地:git clone <remote_url>
  3. 推送和拉取:

    • 推送本地分支到远程仓库:git push <remote_name> <branch_name>
    • 拉取远程分支到本地:git pull <remote_name> <branch_name>
  4. 查看远程仓库信息:

    • 查看远程仓库的详细信息:git remote show <remote_name>
    • 查看远程分支:git branch -r
  5. 删除远程仓库:

    • 删除一个远程仓库:git remote remove <remote_name>
  6. 远程仓库的重命名和修改:

    • 重命名一个远程仓库:git remote rename <old_name> <new_name>
    • 修改远程仓库的URL:git remote set-url <remote_name> <new_url>
  7. 远程分支操作:

    • 创建一个远程分支的本地跟踪分支:git checkout -b <local_branch_name> <remote_name>/<remote_branch_name>
    • 删除一个远程分支的本地跟踪分支:git branch -d <local_branch_name>
  8. 远程仓库的同步:

    • 获取远程仓库的最新变动:git fetch <remote_name>
    • 合并远程分支到当前分支:git merge <remote_name>/<remote_branch_name>

远程仓库是多人协作和代码共享的重要工具。通过与远程仓库的交互,开发者可以方便地进行代码的共享、同步和合作。

参考:

  1. learn-git
  2. OpenAI.ChatGPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 弹性布局的详细说明

CSS弹性布局&#xff08;Flexible Box Layout&#xff0c;简称Flexbox&#xff09;是一种用于创建自适应和可伸缩布局的CSS模块。它提供了一种简单而强大的方式来对容器中的子元素进行布局&#xff0c;使它们能够自动调整大小、排列和对齐。 Flexbox通过在容器和子元素上应用一…

window 命令笔记

1.查看端口 输入“netstat -ano”并回车可以获得所有网络连接活动的列表&#xff0c;在表中&#xff0c;本地地址IP地址后方冒号之后的即是端口号&#xff1a; 如果想要查找特定的端口可以输入命令“netstat -aon|findstr “端口号””&#xff0c;例如“netstat -aon|findstr…

My_window类(带有next和quit按钮)

运行代码&#xff1a; //My_window类&#xff08;带有next和quit按钮&#xff09; #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h"//--…

解决错误 “Plugin ‘maven-clean-plugin:3.1.0‘ not found“ 的方法详解

系列文章目录 文章目录 系列文章目录前言一、检查 Maven 插件版本&#xff1a;二、检查 Maven 仓库&#xff1a;三、检查 Maven 配置&#xff1a;总结 前言 在使用 Maven 构建项目时&#xff0c;可能会遇到错误信息 “Plugin ‘maven-clean-plugin:3.1.0’ not found”&#x…

C++基础算法离散化及区间合并篇

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C算法 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要讲解了双指针&#xff0c;位运算&#xff0c;离散化以及区间合并。…

有效的括号(C)

bool isValid(char* s) {ST st;StackInit(&st);while (*s) //遍历 -- 与\0终止{//是左括号 压栈if (*s ( || *s [ *s {){StackPush(&st, *s);s;}else{//应对样例&#xff1a; ’]if (StackEmpty(&st)){StackDestroy(&st);return false;}//不是左括号 应该就…

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树、Pipeline、交叉验证

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树案例 除了scikit-learn外&#xff0c;在spark中也提供了机器学习库&#xff0c;即Spark MLlib。 在Spark MLlib机器学习库提供两套算法实现的API&#xff1a;基于RDD API和基于DataFrame API。今天&#xff0c;主要介绍下Data…

docker k8s

Docker docker到底与一般的虚拟机有什么不同呢&#xff1f; 我们知道一般的linux系统即GNU/Linux系统包括两个部分&#xff0c;linux系统内核GNU提供的大量自由软件&#xff0c;而centos就是众多GNU/Linux系统中的一个。 虚拟机会在宿主机上虚拟出一个完整的操作系统与宿主机完…

在 3ds Max 中对链模型进行摆放姿势处理

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 建模和“摆姿势”3D链可能看起来是一项繁琐的工作&#xff0c;但实际上可以通过使用阵列工具并将链中的链接视为骨骼来轻松完成。在本教程中&#xff0c;我将向您展示如何对链条进行建模&#xff0c;并通过…

程序员的自我修养(4)

可执行文件的装载与进程 代码经过预编译&#xff0c;编译&#xff0c;汇编&#xff0c;链接过程后生成可执行文件&#xff0c;但可执行文件只有装载到内存程序才可以运行&#xff0c;这节讲可执行文件在linux下的装载过程&#xff0c;以及与进程的关系等等。 1.程序与进程的关…

oled拼接屏在柳州的户外广告中有哪些应用展现?

柳州oled拼接屏是一种高端的显示屏&#xff0c;它采用了OLED技术&#xff0c;具有高亮度、高对比度、高色彩饱和度、高刷新率等优点&#xff0c;能够呈现出更加真实、清晰、细腻的图像效果。 同时&#xff0c;柳州oled拼接屏还具有拼接功能&#xff0c;可以将多个屏幕拼接在一…

vue element select下拉框回显展示数字

vue element select下拉框回显展示数字 问题截图&#xff1a; 下拉框显示数字可以从数据类型来分析错误&#xff0c;接收的数据类型是字符串&#xff0c;但是value是数字类型 <el-form-item prop"classifyLabelId" :label"$t(item.classifyLabelId)"…

GUI-Menu菜单实例

运行代码&#xff1a; //GUI-Menu菜单实例 #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h"struct Lines_window :Window {Lines_window…

常见的网络攻击

​ 1.僵木蠕毒 攻击业内习惯把僵尸网络、木马、蠕虫、感染型病毒合称为僵木蠕毒。从攻击路径来看&#xff0c;蠕虫和感染型病毒通过自身的能力进行主动传播&#xff0c;木马则需要渠道来进行投放&#xff0c;而由后门木马&#xff08;部分具备蠕虫或感染传播能力&#xff09;构…

Mybatis架构简介

文章目录 1.整体架构图2. 基础支撑层2.1 类型转换模块2.2 日志模块2.3 反射工具模块2.4 Binding 模块2.5 数据源模块2.6缓存模块2.7 解析器模块2.8 事务管理模块3. 核心处理层3.1 配置解析3.2 SQL 解析与 scripting 模块3.3 SQL 执行3.4 插件4. 接口层1.整体架构图 MyBatis 分…

智能优化算法——灰狼优化算法(PythonMatlab实现)

目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 2.1 社会等级分层 2.2 包围猎物 2.3 狩猎 2.4 攻击猎物 2.5 寻找猎物 3 实现步骤及程序框图 3.1 步骤 3.2 程序框图 4 Python代码实现 5 Matlab实现 1 灰狼优化算法基本思想 灰狼优化算法是一种群智能优化算法&#xff0c;它的…

ChatGPT:探索人工智能语言模型的前沿技术

一、ChatGPT的背景和原理 ChatGPT是由OpenAI开发的基于GPT-3.5架构的语言模型。它通过大规模的预训练和微调过程&#xff0c;学习了海量的文本数据&#xff0c;并能够生成连贯、有逻辑的回答。ChatGPT使用了自注意力机制和深度神经网络&#xff0c;能够对上下文进行理解和生成有…

C++学习笔记1

Hello World程序的组成部分 可以分为两部分&#xff1a; &#xff08;1&#xff09;以#开头的是预处理器编译指令 &#xff08;2&#xff09;int main() 开头的是程序的主体 预处理编译指令#include 定义&#xff1a;预处理器是一个在编译前运行的工具 #include 是让预处理器获…

java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

linux shell脚本操作日期记录

最近碰到个需求&#xff0c;按日导出每日的数据&#xff0c;然后导入另一个数据库。需要写个日期相关的脚本。这里总结下 #!/bin/bashfunction dateFunc(){echo "从${2}到${3}" nextdate -d "$2" %sstart${2}e…