git用法总结详细

2021/9/2 6:07:13

本文主要是介绍git用法总结详细,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

git用法总结详细

参考

https://mp.weixin.qq.com/s/xoyQ4TzVKLQb2VjZJLUqFQ

 https://mp.weixin.qq.com/s/acP4yklWYf5TwOrLB41JYg

https://mp.weixin.qq.com/s/rk8e77pYkbsm9NEKA7n_sA

https://mp.weixin.qq.com/s/REbnSmd6CuOeJMUCnqMnWg

一、Github 基础

1、什么是 Git?

git 是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)(Linux 之父)创作,于 2005 年发布。最初目的是为更好地管理 Linux 内核开发。Git 在本地磁盘上就保存着所有有关当前项目的历史更新,处理速度快;Git 中的绝大多数操作都只需要访问本地文件和资源,不用实时联网。

2、Git 客户端

TortoiseGit 是一个 Git 版本控制客户端,作为 Microsoft Windows 的外壳扩展实现,用户界面友好,大多数人应该用过 TortoiseSvn;

MsysGit 是一个轻量级的 Git 工具集,可以进行各种 Git 操作,MsysGit 又分为简单的界面 Git GUI,和命令行 Git Bash,我们这节课主要通过 Git Bash 来演示。

3、Git 服务端:GitHub 和 Gitlab

GitHub 是一个共享虚拟主机服务,用于存放使用 Git 版本控制的软件代码和内容项目;允许用户跟踪其他用户、组织、软件库的动态,对软件代码的改动和 bug 提出评论。

GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目,拥有与 Github类似的功能,能够浏览源代码,管理缺陷和注释。

4、Git 基本概念

4.1、三种工作区域

  1. Git 的本地仓库:在 .git 目录中

  2. 工作区:用户操作目录

  3. 暂存区:在 .git 目录中

4.2、三种状态

  1. 已提交(committed):该文件已经被安全地保存在本地仓库中

  2. 已修改(modified):修改了某个文件,但还没有提交保存

  3. 已暂存(staged):把已修改的文件放在下次提交时要保存的清单中

 注:状态转换图示如下

 

 

 

 

二、Git 分支初识

  1. Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。

  2. Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。

  3. Git 鼓励在工作流程中频繁使用分支与合并。

 

 

 

 

 

 

三、Git 工作流程

git 的工作流程见下图,这是最标准的git使用流程,我们可以看到 git 是通过对各分支的维护来规范工作的。

首先有一条master分支,这是发布稳定版,一般不会对 master 进行修改,当有新需求的时候,从 master 上分出一条 develop 分支,具体开发人员在从 develop 上分出自己具体 feature 分支,开发完毕后合并回 develop 分支,测试人员从 develop 分支分出 release 分支进行测试,没有问题了合并到 master 分支发布。如果线上有 bug 需要处理,则从 master 上分出 hotfix 分支,用来解决 bug。

四、Git 基本操作

1、配置用户名和邮件

打开 git bash,配置命令:

1.1.git config

用法:git config –global user.name “[name]”  

用法:git config –global user.email “[email address]”

该命令将分别设置提交代码的用户名和电子邮件地址。

git config --global user.name "your name"

git config --global user.email "your email"

1.2.git clone用法:

git clone <repo> <directory>

git clone <repo> <directory>

 

参数说明:

  • repo:Git 仓库。
  • directory:本地目录。

比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:

git clone git://github.com/schacon/grit.git

 

执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。

如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

git clone git://github.com/schacon/grit.git mygrit

2、创建版本库

版本库又名仓库,英文名 repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被

Git 管理起来:

2.1. 新建目录初始化

 mkdir testgit 

 cd testgit

2.2. 从当前目录初始化

用法:git init [repository name]

git init
$ mkdir runoob
$ cd runoob/
$ git init
Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/

2.3.查看仓库状态:

显示分支,未跟踪文件,更改和其他不同
git status
查看其他的git status的用法
git help status

git status

2.4.添加到暂存区:

# 添加一个文件
$ git add test.js

# 添加一个子目录中的文件
$ git add /path/to/file/test.js

# 支持正则表达式
$ git add ./*.js

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p

 

2.5.删除

rm 和上面的 add 命令相反,从工作空间中去掉某个文件

# 移除 HelloWorld.js
$ git rm HelloWorld.js

# 移除子目录中的文件
$ git rm /pather/to/the/file/HelloWorld.js

# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

 

2.6.提交到本地仓库:

git commit -m “remarks”

2.7.查看修改内容(工作区和仓库的区别):

git diff (file)

2.8.查看版本(参数可以简化版本信息,commit id和备注):

git log --pretty=oneline

3、版本回退

在 Git 中,用 HEAD 表示当前版本,也就是最新的提交 commit id,上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,当然往上 100 个版本写 100 个 ^ 比较容易数不过来,所以写成 HEAD~100。

3.1.回退到上一个版本 :

git reset --hard HEAD^

3.2.丢弃工作区的修改(撤销):

git checkout -- file

3.3.删除文件:

  1. 正确操作:git rm file git commit -m “remove file”(文件被删除)

  2. 操作失误:git checkout -- file(文件被恢复)

3.4.查看当前分支:

git branch (-a)

3.5.新建分支:

 git branch develop(只是新建了一条分支,并未切换)

3.6.

切换分支:

 git checkout develop

3.7.新建并切换分支:

 git checkout -b feature(相当于3.10和3.11两步操作)

3.8.删除分支:

 git branch -d feature(注意:不能删除当前所在分支)

3.9.合并分支(--no-ff参数,表示禁用Fast forward):

git checkout develop  &&  git merge feature(把feature分支合并到develop分支)

注:

  1. 因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支, 所以默认git commit就是往master分支上提交更改。

  2. 如果要丢弃一个没有被合并过的分支,可以通过git branch -D <branch>强行删除。

  3. 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

4、Git 基本操作---和远程服务器交互(一)

4.1.添加远程服务器:

git remote add dcmsStatics4.5git(别名)http://gitlab.cephchina.com/ccod_project/dcmsstatics4-5git.git

4.2.查看远程服务器的相关信息:

git remote -v

git remote show dcmsStatic4.5git

4.3.重命名远程仓库信:

git remote rename demo test

4.4.删除远程仓库:

git remote rm test

注:由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

之后,只要本地作了提交,就可以通过命令把本地master分支的最新修改推送至GitLab:

git push dcmsStatic4.5git master

5、远程仓库

5.1.从远程仓库获取数据:

  • git fetch origin develop --- 只是获取远程仓库的数据至 .git 目录,并未merge本地

  • git merge origin/develop --- 把获取的远程仓库的数据手工merge至当前分支

  • git pull origin develop ---- 获取远程仓库的数据,并自动merge至当前的分支,相当于以上两步

5.2.合并两个不同的项目:

--allow-unrelated-histories

5.3.把本地仓库的内容推送到远程库上:

git push (-u) demo develop(从svn迁移到gitlab注意路径,要确保路径正确)

注:

从远程分支 checkout 出来的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在这些分支里运行git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。

在克隆仓库时,Git 通常会自动创建一个名为 master 的分支来跟踪 origin/master。这正是 git push 和 git pull 一开始就能正常工作的原因。当然,你可以随心所欲地设定为其它跟踪分支,比如 origin 上除了 master 之外的其它分支。

 

五、Git 标签

git 标签,通常用来给分支做标记,如标记一个版本号。\

5.1.创建

标签分类

轻量级标签:

git tag <tagname> commit id

带说明标签:

git tag -a  <tagname> commit id

git tag -m <msg> <tagname> commit id

带签名的标签(GPG加密,需安装配置):

git tag -s  <tagname> commit id

git tag -u  <key-id> commit id

5.2.查看和删除

查看标签:

git tag

git tag –n

git show <tagname>

删除标签:

git tag -d <tagname>

5.3.共享标签

向上游版本库提交标签:

git push origin <tagname>

git push origin  --tags

删除远程版本库的标签:

git push origin :tag2

六、Git 分支冲突解决

1.git分支冲突1

如果在不同的分支中都修改了同一个文件的同一部分,Git 就无法干净地把两者合到一起 Git 作了合并,但没有提交,它会停下来等你解决冲突。可以用 git status 查阅哪些文件在合并时出现冲突。

Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。

注:用带参数的 git log 也可以看到分支的合并情况:

git log --graph --pretty=oneline --abbrev-commit

冲突标记<<<<<<< (7个<)与=======之间的内容是我的修改,=======与>>>>>>>之间的内容是别人的修改。 最简单的编辑冲突的办法,就是直接编辑冲突了的文件,把冲突标记删掉,把冲突解决正确。

特殊场景

场景:当接到一个新的 bug,急需解决,但是目前工作想保留。

方法:Git 还提供了一个 stash 功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:比如你正在 dev 分支开发,突然接到 master 上有一个特别急的 bug 需要解决,这时就可以把当前 dev 的工作现场“储藏”起来。

首先“储藏” dev 的工作现场 git status,然后从 master 创建临时分支:

git checkout master

git checkout -b issue-101

现在修复 bug,然后提交:

git add readme.md

git commit -m "fix bug 101"

修复完成后,切换到 master 分支,并完成合并,最后删除 issue-101 分支:

git checkout master

git merge --no-ff -m "merged bug fix 101" issue-101

接着回到 dev 分支干活了!

git checkout dev

git status

工作区是干净的,刚才的工作现场存到哪去了?用 git stash list 命令看看:

git stash list

工作现场还在,Git 把 stash 内容存在某个地方了,但是需要恢复一下,有两个办法:

一是用 git stash apply 恢复,但是恢复后,stash 内容并不删除,你需要用 git stash drop 来删除;另一种方式是用 git stash pop,恢复的同时把 stash 内容也删了:

git stash pop

再用 git stash list 查看,就看不到任何 stash 内容了。你可以多次 stash,恢复的时候,先用 git stash list 查看,然后恢复指定的 stash,用命令:

git stash apply stash@{0}

远程分支

提交本地 test 分支作为远程的 develop 的分支:

git push origin develop:test

删除远程的 test 分支,但是本地还会保存的:

git push origin :test 

忽略特殊文件

我们在开发过程中,有一些文件是不需要提交的,但是 git 总显示这部分文件会让人很不舒服,这时我们就可以通过编辑 .gitignore 文件来使不需要提交的文件不在提示,编写要忽略的文件,下列内容是 Java 开发者经常用到的:

# java:

 *.class

 # My configurations:

 db.ini

 deploy_key_rsa

注:# 此为注释,这行内容将被 Git 忽略

# 忽略所有 .a 结尾的文件

*.a

# 但 lib.a 除外

!lib.a

# 仅仅忽略项目根目录下的 TODO 文件,

/TODO

# 忽略 build/ 目录下的所有文件

build/

# 忽略 doc/notes.txt 

doc/*.txt

配置别名

git 命令可不可以根据自己的特点配置别名呢,当然是可以的,这样做能提高工作效率,下列是一些简单的例子。

git config --global alias.st status(git st=git status)

git config --global alias.co checkout(git co=git checkout)

git config --global alias.ci commit(git ci=git commit)

git config --global alias.br branch(git br=git branch)

git config --global alias.last 'log -1'(git lat= git log -l)

git config --global alias.unstage 'reset HEAD'(git unstage=git reset HEAD)

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"(这个大家可以亲自试试,特别炫)

切换用户

查看当前配置(用户):

git config --list

修改配置:打开全局的 .gitconfig 文件:vi ~/.gitconfig;然后在文件中直接修改。

七、Git 帮助

帮助

git 内置了对命令非常详细的解释,可以供我们快速查阅

# 查找可用命令
$ git help

# 查找所有可用命令
$ git help -a

# 在文档当中查找特定的命令
# git help <命令>
$ git help add
$ git help commit
$ git help init

 

状态

显示索引文件(也就是当前工作空间)和当前的头指针指向的提交的不同

# 显示分支,未跟踪文件,更改和其他不同
$ git status

# 查看其他的git status的用法
$ git help status

信息

获取某些文件,某些分支,某次提交等 git 信息

# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

# 搜索提交历史,根据关键词
$ git log -S [keyword]

# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s

# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
$ git log [tag] HEAD --grep feature

# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]

# 显示指定文件相关的每一次diff
$ git log -p [file]

# 显示过去5次提交
$ git log -5 --pretty --oneline

# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn

# 显示指定文件是什么人在什么时间修改过
$ git blame [file]

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"

# 比较暂存区和版本库差异
$ git diff --staged

# 比较暂存区和版本库差异
$ git diff --cached

# 仅仅比较统计信息
$ git diff --stat

# 显示某次提交的元数据和内容变化
$ git show [commit]

# 显示某次提交发生变化的文件
$ git show --name-only [commit]

# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]

# 显示当前分支的最近几次提交
$ git reflog

# 查看远程分支
$ git br -r

# 创建新的分支
$ git br <new_branch>

# 查看各个分支最后提交信息
$ git br -v

# 查看已经被合并到当前分支的分支
$ git br --merged

# 查看尚未被合并到当前分支的分支
$ git br --no-merged

 

分支

管理分支,可以通过下列命令对分支进行增删改查切换等

# 查看所有的分支和远程分支
$ git branch -a

# 创建一个新的分支
$ git branch [branch-name]

# 重命名分支
# git branch -m <旧名称> <新名称>
$ git branch -m [branch-name] [new-branch-name]

# 编辑分支的介绍
$ git branch [branch-name] --edit-description

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

# 新建一个分支,并切换到该分支
$ git checkout -b [branch]

# 新建一个分支,指向指定commit
$ git branch [branch] [commit]

# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]

# 切换到指定分支,并更新工作区
$ git checkout [branch-name]

# 切换到上一个分支
$ git checkout -

# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

# 切换到某个分支
$ git co <branch>

# 创建新的分支,并且切换过去
$ git co -b <new_branch>

# 基于branch创建新的new_branch
$ git co -b <new_branch> <branch>

# 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
$ git co $id

# 把某次历史提交记录checkout出来,创建成一个分支
$ git co $id -b <new_branch>

# 删除某个分支
$ git br -d <branch>

# 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
$ git br -D <branch>

检出

将当前工作空间更新到索引所标识的或者某一特定的工作空间

# 检出一个版本库,默认将更新到master分支
$ git checkout
# 检出到一个特定的分支
$ git checkout branchName
# 新建一个分支,并且切换过去,相当于"git branch <名字>; git checkout <名字>"
$ git checkout -b newBranch

远程同步

远程同步的远端分支

# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 查看远程服务器地址和仓库名称
$ git remote -v

# 添加远程仓库地址
$ git remote add origin git@ github:xxx/xxx.git

# 设置远程仓库地址(用于修改远程仓库地址)
$ git remote set-url origin git@ github.com:xxx/xxx.git

# 删除远程仓库
$ git remote rm <repository>

# 上传本地指定分支到远程仓库
# 把本地的分支更新到远端origin的master分支上
# git push <远端> <分支>
# git push 相当于 git push origin master
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

撤销

# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]

# 恢复暂存区的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]

# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]

# 恢复最后一次提交的状态
$ git revert HEAD

# 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

# 列所有stash
$ git stash list

# 恢复暂存的内容
$ git stash apply

# 删除暂存区
$ git stash drop

commit

将当前索引的更改保存为一个新的提交,这个提交包括用户做出的更改与信息

# 提交暂存区到仓库区附带提交信息
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a

# 提交时显示所有diff信息
$ git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

diff

显示当前工作空间和提交的不同

# 显示工作目录和索引的不同
$ git diff

# 显示索引和最近一次提交的不同
$ git diff --cached

# 显示工作目录和最近一次提交的不同
$ git diff HEAD

grep

可以在版本库中快速查找

可选配置:

感谢Travis Jeffery提供的以下用法:
# 在搜索结果中显示行号
$ git config --global grep.lineNumber true

# 是搜索结果可读性更好
$ git config --global alias.g "grep --break --heading --line-number"

 

# 在所有的java中查找variableName
$ git grep 'variableName' -- '*.java'

# 搜索包含 "arrayListName" 和, "add" 或 "remove" 的所有行
$ git grep -e 'arrayListName' --and \( -e add -e remove \)

log

显示这个版本库的所有提交

# 显示所有提交
$ git log

# 显示某几条提交信息
$ git log -n 10

# 仅显示合并提交
$ git log --merges

# 查看该文件每次提交记录
$ git log <file>

# 查看每次详细修改内容的diff
$ git log -p <file>

# 查看最近两次详细修改内容的diff
$ git log -p -2

#查看提交统计信息
$ git log --stat

merge

合并就是将外部的提交合并到自己的分支中

# 将其他分支合并到当前分支
$ git merge branchName

# 在合并时创建一个新的合并后的提交
# 不要 Fast-Foward 合并,这样可以生成 merge 提交
$ git merge --no-ff branchName

mv

重命名或移动一个文件

# 重命名
$ git mv test.js test2.js

# 移动
$ git mv test.js ./new/path/test.js

# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

# 强制重命名或移动
# 这个文件已经存在,将要覆盖掉
$ git mv -f myFile existingFile

tag

 

# 列出所有tag
$ git tag

# 新建一个tag在当前commit
$ git tag [tag]

# 新建一个tag在指定commit
$ git tag [tag] [commit]

# 删除本地tag
$ git tag -d [tag]

# 删除远程tag
$ git push origin :refs/tags/[tagName]

# 查看tag信息
$ git show [tag]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

pull

从远端版本库合并到当前分支

# 从远端origin的master分支更新版本库
# git pull <远端> <分支>
$ git pull origin master

# 抓取远程仓库所有分支更新并合并到本地,不要快进合并
$ git pull --no-ff

ci

$ git ci <file>
$ git ci .
# 将git add, git rm和git ci等操作都合并在一起做
$ git ci -a
$ git ci -am "some comments"
# 修改最后一次提交记录
$ git ci --amend

rebase (谨慎使用)

将一个分支上所有的提交历史都应用到另一个分支上不要在一个已经公开的远端分支上使用 rebase.

# 将experimentBranch应用到master上面
# git rebase <basebranch> <topicbranch>
$ git rebase master experimentBranch

reset (谨慎使用)

将当前的头指针复位到一个特定的状态。这样可以使你撤销 merge、pull、commits、add 等 这是个很强大的命令,但是在使用时一定要清楚其所产生的后果

# 使 staging 区域恢复到上次提交时的状态,不改变现在的工作目录
$ git reset

# 使 staging 区域恢复到上次提交时的状态,覆盖现在的工作目录
$ git reset --hard

# 将当前分支恢复到某次提交,不改变现在的工作目录
# 在工作目录中所有的改变仍然存在
$ git reset dha78as

# 将当前分支恢复到某次提交,覆盖现在的工作目录
# 并且删除所有未提交的改变和指定提交之后的所有提交
$ git reset --hard dha78as

其他

# 生成一个可供发布的压缩包
$ git archive

# 打补丁
$ git apply ../sync.patch

# 测试补丁能否成功
$ git apply --check ../sync.patch

# 查看Git的版本
$ git --version

 

 

 

 

 

 



这篇关于git用法总结详细的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程