现在假设我们已经知道了如何从github上创建一个项目,并使用clone->push或者push remote的方式来推送它。并且我们已经了解了以下基本语法:
- git add
- git commit
- 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_v1和branch_01_v1相比,只有新增,直接合并即可。
如果是这种情况:
master_v1 -> master_v2
|
---> branch_01_v1
此时要合并的master_v2和branch_01_v1相比,对同一文件除了新增之外还可能存在删除,对同一段代码可能有删除、覆写等操作,则需要手动地合并。这时,如果是远程仓库已经改动,我们需要将所有内容pull到本地。如果是本地仓库的内容改动,我们则需要commit。
现在假设我们的master_v1、master_v2和branch_01_v1分支的md文件内容如下:
<!-- master_v1 -->
Hello
<!-- master_v2 -->
Hello
1
<!-- branch_01_v1 -->
Hello
2
现在我们切换到master_v2分支,我们使用git merge branch_01_v1
将branch_01_v1的内容合并到master_v2中,此时我们查看readme文件:
Hello
<<<<<<< HEAD
2
>>>>>>> master
1
现在我们可以在手动的修改它,然后再提交。使用vscode或者其他含有git插件的编辑器,能很容易的对比。
1.3 Del Branch
git branch -d local_branch_name
:删除本地分支。git push remote_name --delete remote_branch_name
:远处远程分支。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
查看日志。
Comments | NOTHING