Git 01 Basic Tutorial

发布于 2023-06-12  53 次阅读


  现在假设我们已经知道了如何从github上创建一个项目,并使用clone->push或者push remote的方式来推送它。并且我们已经了解了以下基本语法:

  1. git add
  2. git commit
  3. git push

一、Branching

1.1 Create Branch

  现在假设我们已经创建了一个仓库,其有个readme文件。我们可以使用git branch来查看分支。此时应该只有一个master分支。

  我们使用git checkout -b branch_test_01本地创建一个名为branch_test_01的分支,创建完成后,我们发现已经自动切换到了branch_test_01分支:

xjt@u16:~/DCIR_TEST_01$ git branch
* branch_test_01
  master

使用git checkout master则允许我们切换回master分支。

当我们在branch_test_01下修改了一些内容之后,我们可以使用git push --set-upstream origin branch_test_01来在原创仓库上创建一个远程同名的分支(--set-upstream == -u)。

1.2 PR Conflict

  对于一般情况,合并不同的分支:

master_v1 -> master_v1
        |
        ---> branch_01_v1

此时想要合并的两个分支master_v1branch_01_v1相比,只有新增,直接合并即可。

  如果是这种情况:

master_v1 -> master_v2
        |
        ---> branch_01_v1

此时要合并的master_v2branch_01_v1相比,对同一文件除了新增之外还可能存在删除,对同一段代码可能有删除、覆写等操作,则需要手动地合并。这时,如果是远程仓库已经改动,我们需要将所有内容pull到本地。如果是本地仓库的内容改动,我们则需要commit。

  现在假设我们的master_v1master_v2branch_01_v1分支的md文件内容如下:

<!-- master_v1 -->
Hello

<!-- master_v2 -->
Hello
1

<!-- branch_01_v1 -->
Hello
2

现在我们切换到master_v2分支,我们使用git merge branch_01_v1branch_01_v1的内容合并到master_v2中,此时我们查看readme文件:

Hello
<<<<<<< HEAD
2
>>>>>>> master
1

现在我们可以在手动的修改它,然后再提交。使用vscode或者其他含有git插件的编辑器,能很容易的对比。

1.3 Del Branch

  1. git branch -d local_branch_name:删除本地分支。
  2. git push remote_name --delete remote_branch_name:远处远程分支。
  3. git branch -a:查看所有分支(本地和远程),-t查看远程分支。

1.4 Fetch Branch

git fetch origin remote_branch_name:local_branch_name

二、Undoing

2.1 Undo File

  如果是修改了一个文件,可以通过git reset filename来恢复到上次同步的状态,或是使用git reset来恢复所有文件到上次同步的状态。

2.1 Undo Commit

  如果想要撤销上一次commit,使用git reset HEAD~1,Head表示最近的commit。

  如果想撤回到指定的commit,git reset commit_log_number。通过git log查看日志。