练习使用Git
练习使用Git
Xne31.初始化本地仓库
新建一个目录,在目录中打开命令行,使用git init
来初始化这个仓库
回到目录,可以看到目录中已经多出一个名为.git的隐藏目录
进入这个目录,里面有这样一堆文件和目录
它们的作用暂且不深究,至此,已经完成了本地仓库的初始化
2.初次提交
输入git status
来查看当前仓库中的文件状态
目录中原有的文件在仓库初始化时并不会被追踪
使用git add a.txt
将文件添加到暂存区
要把暂存区的文件提交到仓库,有两种方式:
- 直接输入
git commit
git commit -m "Commit message"
采用第一种方式提交时,会进入一个vim
界面
按i
进入插入模式,输入提交信息,并使用:wq
保存,保存后会回到命令行
查看当前状态git status
working tree clean
意味着当前工作区的所有文件都与仓库中的版本一致
git log
命令可以查看提交记录
HEAD -> master表示当前位于master分支上,first commit则是刚才提交时输入的说明
使用git commit -m "Commit message"
可以在不进入vim
的情况下进行快速提交
但如果working tree clean
,则不会进行新的提交
3.使用tag
输入git tag <tagname>
即可给当前提交创建一个tag
通过git tag
和git log
都能看到刚才创建的tag 1
使用git tag <tagname> <commit-hash>
可以为其他的提交创建tag
,只需要前几位即可
例如
这样,就为提交2cec6d754399344668745714d3b8c201953a9941
创建了一个名为v1.0.0
的tag
使用git checkout <tagname>
可以快捷地切换到一个tag
上,但此时git
会提示
“分离头指针状态(detached HEAD state)”状态,意味着当前不在任何分支上,而是直接指向某个特定的提交。
在这种状态下,任何新的提交不会记录在当前分支中,而是作为孤立的提交存在。
这些孤立的提交,会存在于本地仓库中,但如果没有进行额外的操作就切换到另一个分支或标签,这些孤立的提交可能会被 git 的垃圾回收机制(
git gc
)清除。
Annotated Tag(附注标签)
的使用方法和tag
差不多,仅需在git tag
后面加上-a -m
和tag
相比,annotated tag
会显示创建者,创建时间以及附注信息
git tag -d <tagname>
可以用来删除某个tag
4.分支
git branch
可以查看当前存在的分支
git branch -a可以查看本地和远程的所有分支)
git branch <branch-name>
从当前分支新建一个分支
1 | git switch -c <branch-name> |
创建一个新的分支并立即切换到该分支
git branch -d <branch-name>
删除分支
git merge <branch-name>
将目标分支合并到当前分支
当把一个分支的分叉(比如从master分支创建的分支new1)合并到主分支,且主分支在分叉创建后没有进行修改,会使用Fast-forward
合并策略,将主分支的指针直接移动到分叉上,即直接用new1覆盖master
如果想把另一个分叉(new2)合并到主分支,且该new2和new1修改过同一个文件,则会提示Merge conflict
此时冲突的文件中会同时出现两个分支的内容,在手动修改后,使用git add
和git commit
完成合并
5.远程仓库
git remote add origin <repository_url>
添加一个名为origin
的远程仓库
git push origin 本地分支:远程分支
输入token后,本地仓库被推送至远程仓库