git的用法
Posted steven223-z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git的用法相关的知识,希望对你有一定的参考价值。
GIT安装与配置
GIT文件操作
创建全新仓库
# 在当前目录新建一个Git代码库
$ git init
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]
克隆远程仓库
由于是将远程服务器上的仓库完全镜像一份至本地,而不是取某一个特定版本,所以用clone而不是checkout,语法格式如下
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]
文件操作
文件的四种状态
-
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过
git add
状态变为Staged
. -
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为
Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件 -
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改 -
Staged: 暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
#查看指定文件状态
$ git status [filename]
#查看所有文件状态
$ git status
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加当前目录的所有文件到暂存区
$ git add .
#直接从暂存区删除文件,工作区则不做出改变
$ git rm --cached <file>
$ git reset HEAD <file>... #如果已经用add 命令把文件加入stage了,就先需要从stage中撤销 $ git clean [options] #移除所有未跟踪文件 #一般会加上参数-df,-d表示包含目录,-f表示强制清除。
#不但从stage中删除,同时删除物理文件
$ git rm readme.txt
#把a.txt改名为b.txt
$ git mv a.txt b.txt
#查看文件修改后的差异
$ git diff [files]
$ git diff --cached #比较暂存区的文件与之前已经提交过的文件
git diff HEAD~n #比较repo与工作空间中的文件差异
#用法一
git checkout [-q] [<commit>] [--] <paths>...
#用法二
git checkout [<branch>]
#用法三
git checkout [-m] [[-b]--orphan] <new_branch>] [<start_point>]
GIT分支
基本语句:
# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
#其他用法 $ git branch [branch] [commit] # 新建一个分支,指向指定commit $ git branch --track [branch] [remote-branch] # 新建一个分支,与指定的远程分支建立追踪关系 $ git checkout [branch-name] # 切换到指定分支,并更新工作区 $ git checkout - # 切换到上一个分支 $ git branch --set-upstream [branch] [remote-branch] # 建立追踪关系,在现有分支与指定的远程分支之间 $ git cherry-pick [commit] # 选择一个commit,合并进当前分支
合并分支
git merge [branch]
先创建一个新的分支,进行修改后提交
回到主分支,查看源文件,此时是没有更新的,合并分支后再查看,新做的修改就更新到主分支
有冲突时合并
masters分支对文件filell.txt进行操作后提交
切换到dev6分支,修改文件filell.txt后进行提交
切换到主分支,进行合并分支。提示存在冲突
查看文件filell.txt在分支master中的状态
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支修改的内容,>>>>>dev6 是指dev6上修改的内容
修改冲突文件后重新提交,请注意当前的状态产master | MERGING:
删除分支
语句:
git branch -d [branch] # -D(大写)是强制删除
创建一个新的分支dev7
切换到其他分支执行删除语句,不能在当前分支执行删除当前分支
删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
以上是关于git的用法的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段