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命令操作一个完整流程

使用 Git 来管理 Xcode 中的代码片段

如何管理在每个 git 版本中添加私有代码片段?

markdown Git代码片段

c_cpp 加载源图像固定用法(代码片段,不全)

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段