git工具

Windows Git 安装及使用

2019-11-06  本文已影响0人  宇宙小神特别萌
Windows Git安装及使用 目录.png

追加:7、远程仓库管理

本片git内容适合:对git了解少的人,较适合初级或小白程序员!

1、git 安装、升级、简单测试

git安装:
描述:windows下载地址:windows git 默认会根据你的电脑下载适合版本类型
流程:双击下载的:Git-2.23.0-64-bit.exe --> 一直点击Next就可好(可以更改一下git安装路径).

git升级:

描述:git已经安装,想升级到最新版本
命令:尝试这两个命令git update 和 git update-git-for-windows

#查看当前git版本
$ git version
git version 2.20.1.windows.1

#升级git到最新本版 再输入 "y"
$ git update
#升级git到最新本版 再输入 "y"
$ git update-git-for-windows

#查看升级后的git版本
$ git version
git version 2.24.0.windows.1

下载的新版本git的安装路径,默认是旧版本的安装地址

配置git的户信息:

命令:

#右击鼠标-->Git Bash Here 输入命令
#配置git用户名:随便起,最好好写成自己的拼音名字,这样提交代码到远程仓库,别人知道是你提交的
$ git config --global user.name "ZhengJa"
#配置git邮箱:邮箱格式要对,不要求邮箱是真的
$ git config --global user.email "953649948@qq.com"

命令演示:

Administrator@ZhengJiaAo MINGW64 ~/Desktop
#git配置用户名
$ git config --global user.name "ZhengJa"

Administrator@ZhengJiaAo MINGW64 ~/Desktop
#查询配置的用户名
$ git config user.name
ZhengJa

Administrator@ZhengJiaAo MINGW64 ~/Desktop
#git配置邮箱
$ git config --global user.email "953649948@qq.com"

Administrator@ZhengJiaAo MINGW64 ~/Desktop
#查询配置的邮箱
$ git config user.email
953649948@qq.com
Administrator@ZhengJiaAo MINGW64 ~/Desktop
#查询git的所有配置信息
$ git config --list
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslcainfo=D:/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslbackend=openssl
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
credential.helper=manager
user.name=ZhengJa
user.email=953649948@qq.com
ssh.variant=ssh

git安装及配置已经完成!
(可选)git客户端安装:sourcetree 官网下载 点击-->Download for Windows

git本地测试:

创建一个demo文件夹,作为演示的本地仓库。此git工作流并没有与远程仓库做关联!
流程:创建文件test.txt-->添加至暂存区-->将暂存区内容commit到本地仓库

命令:

#初始化本版库
git init

#添加文件到版本库,添加某个文件 git add test.txt  添加所有 git add .
git add 
git commit -m "提交信息"

#查看仓库状态
git status

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile
#进入一个干净的文件夹-->testfile
$ ls

Administrator@ZhengJiaAo MINGW64 /j/testfile
#创建一个文件夹
$ mkdir demo

Administrator@ZhengJiaAo MINGW64 /j/testfile
#进入刚刚创建的文件夹
$ cd demo

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo
#查看,文件夹中没有任何内容
$ ll
total 0

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo
#初始化git
$ git init
Initialized empty Git repository in J:/testfile/demo/.git/

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo (master)
#查看 可以看出生成了一个 .git文件夹,说明初始化git仓库成功
$ ls -a
./  ../  .git/

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo (master)
#将"git repo" >> 追加进test.txt文件
$ echo "git repo" >> test.txt

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo (master)
#查看test.txt文件内容
$ cat test.txt
git repo

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo (master)
#git 将test文件添加到暂存区
$ git add test.txt
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo (master)
#git commit 暂存区文件提交到本地本库
$ git commit -m "repo first commit"
[master (root-commit) 3337810] repo first commit
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo (master)
#查看状态,说明现在都已提交到本地仓库,暂存区是干净的
$ git status
On branch master
nothing to commit, working tree clean

解决git bash 终端显示中文乱码

在git bash的界面中右击空白处,弹出菜单,选择选项->文本->本地Locale,设置为zh_CN,而旁边的字符集选框选为UTF-8。

英文显示则是:
Options->Text->Locale改为zh_CN,Character set改为UTF-8

2、git工作流

工作流图:


工作流图.png

创建一个demo2文件夹,作为演示的本地仓库。此git工作流并没有与远程仓库做关联!

前提:查看commit日志:

git log --oneline        //查看commit提交列表:commit_Id
git log   //commit详细信息

1、文件commit本地仓库

流程1:创建一个文件demo2_test.txt-->添加文件到暂存区-->将暂存区内容保存到本地仓库

命令:

#初始化git版本库
git init

#将文件添加到暂存区
git add 

#将暂存区的文件提交到本地仓库
git commit -m "提交描述信息"

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile
#进入一个干净的文件夹-->testfile
$ ls
demo/

#创建一个文件夹demo2
$ mkdir demo2

#进入刚刚创建的文件夹
$ cd demo2

#查看,文件夹中没有任何内容
Administrator@ZhengJiaAo MINGW64 /j/testfile/demo2
$ ll
total 0

#初始化git
$ git init
Initialized empty Git repository in J:/testfile/demo2/.git/

#添加内容到demo2_test.txt文件
$ echo "第一天需求" >> demo2_test.txt

#查看文件内容
$ cat demo2_test.txt
第一天需求

#查看状态:demo2_test.txt  为红色字体,说明文件还没有添加到暂存区
$ git status
On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        demo2_test.txt
nothing added to commit but untracked files present (use "git add" to track)

#将文件添加到暂存区
$ git add demo2_test.txt
warning: LF will be replaced by CRLF in demo2_test.txt.
The file will have its original line endings in your working directory

#查看状态: demo2_test.txt字体变成绿色,说明文件已添加到暂存区,再将文件提交到本地仓库
$ git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   demo2_test.txt

#将暂存区的文件提交到本地仓库
$ git commit -m "first-commit:新增demo2_test.txt文件"
[master (root-commit) 970eca2] first-commit:新增demo2_test.txt文件
 1 file changed, 1 insertion(+)
 create mode 100644 demo2_test.txt

#说明暂存区没有文件,且所有修改或添加的文件都已经提交到本地仓库
$ git status
On branch master
nothing to commit, working tree clean

2、将暂存区回退到工作区 回退修改内容

流程2:修改demo2_test.txt文件内容-->将文件到暂存区-->将文件从暂存区移除-->回退修改的文件内容

命令:

#将暂存区的文件移除
git reset HEAD demo2_test.txt

#将文件修改的内容回退,就是让这个文件回到最近一次git commit或git add时的状态,git checkout – filename 可以丢弃某个文件在工作区的改动
git checkout -- demo2_test.txt

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo2 (master)
#向文件追加内容
$  echo "第一天:追加的需求" >> demo2_test.txt

#查看文件内容
$ cat demo2_test.txt
第一天需求
第一天:追加的需求

#查看状态:demo2_test.txt 字体是红色,说明还没有添加到暂存区,将文件添加到暂存区
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   demo2_test.txt
no changes added to commit (use "git add" and/or "git commit -a")

#添加文件到暂存区
$ git add demo2_test.txt
warning: LF will be replaced by CRLF in demo2_test.txt.
The file will have its original line endings in your working directory

#查看状态:demo2_test.txt 字体变成绿色,说明文件已在暂存区
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   demo2_test.txt

#将暂存区的文件移除
$ git reset HEAD demo2_test.txt
Unstaged changes after reset:
M       demo2_test.txt

#查看状态:demo2_test.txt字体变成红色
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   demo2_test.txt
no changes added to commit (use "git add" and/or "git commit -a")

#查看文件内容
$ cat demo2_test.txt
第一天需求
第一天:追加的需求

#将文件修改的内容回退
$ git checkout -- demo2_test.txt

#回退文件修改的内容
$ cat demo2_test.txt
第一天需求

3、把最近一次commit撤回到暂存区

命令:

#查看版本库状态
$ git status
#查看commit日志
$ git log --oneline
#把最近的一次commit撤回到暂存区
$ git reset --soft HEAD^
$ git status

命令演示:

#添加文件并追加内容 "第一次修改"
$ echo "第一次修改" >> demo2_test.txt
#添加到暂存区
$ git add demo2_test.txt
#查看状态:绿色
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   demo2_test.txt
#commit提交
$ git commit -m "第一次提交文件"
[master 507c25c] 第一次提交文件
 1 file changed, 1 insertion(+)
 create mode 100644 demo2_test.txt
#查看状态:说明所有暂存区的内容已被提交
$ git status
On branch master
nothing to commit, working tree clean
#查看commit日志
$ git log --oneline
608e471 (HEAD -> master) 第一次提交文件

#把最近的一次commit撤回到暂存区
$ git reset --soft HEAD^

#查看状态:demo2_test.txt颜色绿色,已回退到暂存区
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   demo2_test.txt

4、回退本地版本库commit提交

流程3:修改demo2_test.txt文件内容-->将文件到暂存区-->暂存区内容commit提交-->回退commit提交内容

命令:

#查看日志:commit提交日志
$ git log
$ git log --oneline

#回退commit提交:回到某次commit提交
$ git reset --hard commit_Id

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo2 (master)
#查看文件内容
$ cat demo2_test.txt
第一天需求

#追加内容到文件
$ echo "第二天需求" >> demo2_test.txt

#查看文件内容
$ cat demo2_test.txt
第一天需求
第二天需求

#将文件添加到暂存区
$ git add demo2_test.txt
warning: LF will be replaced by CRLF in demo2_test.txt.
The file will have its original line endings in your working directory

#将暂存区内容commit提交至本地仓库
$ git commit -m "commit:修改demo2_test.txt"
[master a6d8085] commit:修改demo2_test.txt
 1 file changed, 1 insertion(+)

#查看日志:commit提交日志,可以看出有两次提交信息,现在想回到之前的“第一天需求”,“第二天需求“不需要了
$ git log
commit a6d8085e0c5e4ad6815c80128eb603132077ca9e (HEAD -> master)
Author: ZhengJa <953649948@qq.com>
Date:   Thu Oct 17 12:52:57 2019 +0800
    commit:修改demo2_test.txt

commit 970eca211415c4015143895ad1c8585f55298d00
Author: ZhengJa <953649948@qq.com>
Date:   Thu Oct 17 11:25:25 2019 +0800
    first-commit:新增demo2_test.txt文件:第一天需求

#回退commit提交:回到 ”第一天需求”
$ git reset --hard 970eca211415c4015143895ad1c8585f55298d00
HEAD is now at 970eca2 first-commit:新增demo2_test.txt文件:第一天需求

#查看状态
$ git status
On branch master
nothing to commit, working tree clean

#查看文件内容
$ cat demo2_test.txt
第一天需求

注:

1、git reset和git revert 效果一样,但区别很大
git reset :是回退commit未推动到远程仓库的版本
git revert :是撤退远程仓库已存在的commit版本

5、回退已push到远程版本库commit提交

命令

git log --oneline //查看commit提交列表:commit_Id

git revert HEAD //撤销最近一次提交
git revert HEAD~1 //撤销上上次的提交,注意:数字从0开始
git revert 0ffaacc //撤销0ffaacc这次提交

命令演示:

#文件追加内容
$ echo "追加的内容2" >> gittest.txt
#查看文件内容
$ cat gittest.txt
追加的内容1
追加的内容2

#添加修改内容到暂存区
$ git add gittest.txt
warning: LF will be replaced by CRLF in gittest.txt.
The file will have its original line endings in your working directory

#commit提交到本地仓库
$ git commit -m "提交:追加的内容2"
[master 37009fc] 提交:追加的内容2
 1 file changed, 1 insertion(+)

#将commit push到远程仓库
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 354 bytes | 177.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/zhengjiaao/git_test.git
   6ee6810..37009fc  master -> master

#查看commit历史记录
$ git log --oneline
37009fc (HEAD -> master, origin/master, origin/HEAD) 提交:追加的内容2
7dcf51a 提交:追加的内容1

#撤销最近一次commit,进入编辑状态,英文 ZZ 退出并保存编辑
$ git revert 37009fc
hint: Waiting for your editor to close the file... error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

#查看文件内容,发现"追加的内容2"内容已经不存在
$ cat gittest.txt
追加的内容1

#将新的版本提交到远程仓库
$ git commit -m "撤销gittest文件 追加的内容2"
[master a13e1ae] 撤销gittest文件 追加的内容2
 1 file changed, 1 deletion(-)
#提交到远程仓库
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 362 bytes | 181.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/zhengjiaao/git_test.git
   37009fc..a13e1ae  master -> master

6、清空或删除本地仓库文件

命令:

#删除本地工作区或文件
git rm demo2_test.txt

#提交删除记录 commit
git commit -m "commit:delete demo2_test.txt文件"

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile/demo2 (master)
#查看文件内容
$ cat demo2_test.txt
第一天需求

#查看状态
$ git status
On branch master
nothing to commit, working tree clean

#查看文件个数:1
$ ll
total 1
-rw-r--r-- 1 Administrator 197121 17 10月 17 12:54 demo2_test.txt

#删除本地文件
$ git rm demo2_test.txt
rm 'demo2_test.txt'

#查看本地文件个数:0
$ ll
total 0

#查看状态:demo2_test.txt字体绿色-->本地文件已删除,但是本地仓库中的文件并没有删除,要清空本地仓库的内容,提交删除的记录
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        deleted:    demo2_test.txt

#将删除记录commit提交至本地仓库
$ git commit -m "commit:delete demo2_test.txt文件"
[master 85c603f] commit:delete demo2_test.txt文件
 1 file changed, 1 deletion(-)
 delete mode 100644 demo2_test.txt

#查看状态:说明本地仓库已被清空
$ git status
On branch master
nothing to commit, working tree clean

回顾工作流图:


工作流图.png

3、本地已有仓库 ssh关联 远程空白仓库

1、github添加ssh keys
Github 添加ssh keys

2、github 新建仓库


github创建公共仓库.png

根据空白仓库提示执行:


github创建公共仓库2.png

本地已有仓库与远程空白仓库关联
命令:

git remote add <name> url #name:远程仓库地址别名一般为origin,url:远程仓库地址
git push -u origin master #推送到远程仓库的master分支上 -u:是强行推送(用于首次推送,之后推送只需:git push)

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile
#本地创建一个文件夹
$ mkdir local_test

#查看的文件夹
$ ls
demo/  demo2/  local_test/
$ cd local_test

Administrator@ZhengJiaAo MINGW64 /j/testfile/local_test
#追加内容到文件中
$ echo "# git_test" >> README.md

#查看
$ ls
README.md

#初始化git
$ git init
Initialized empty Git repository in J:/testfile/local_test/.git/

#添加文件到暂存区
$ git add README.md
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory

#查看状态:README.md 是绿色说明已存到暂存区,再commit提交到本地仓库
$ git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

#将暂存区所有内容提交到本地仓库
$ git commit -m "first commit"
[master (root-commit) c02fd60] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

#添加远程仓库:本地仓库与远程仓库关联
$ git remote add origin git@github.com:zhengjiaao/git_test.git

#推送到远程仓库的master分支上 -u:是强行推送(用于首次推送,之后推送只需:git push)
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 219 bytes | 73.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:zhengjiaao/git_test.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

上传文件后github效果图:


github创建公共仓库3.png

README.md 文件是我们本地"echo "# git_test" >> README.md"创建的,然后推送到github的远程仓库上

4、克隆仓库

描述: 远程已有仓库-这个比较简单
流程:克隆远程已有仓库地址 --> 修改文件内容 --> 将修改内容推送到远程仓库
命令:

#克隆远程已有仓库地址
$ git clone url

#操作:修改文件内容

#将修改内容推送到远程仓库
$ git add
$ git commit -m "commit 信息"
$ git push

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile
#查看文件:有3个文件夹
$ ls
demo/  demo2/  local_test/

#克隆远程已有仓库地址
$ git clone https://github.com/zhengjiaao/git_test.git
Cloning into 'git_test'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.

#查看:多了一个文件夹 git_test
$ ls
demo/  demo2/  git_test/  local_test/

#进入文件夹
$ cd git_test/

#查看:有一个README.md文件
$ ls
README.md

#向 README.md文件追加内容
$ echo "### 测试k克隆远程已有仓库及推送此内容到远程仓库" >> README.md

#查看状态 :README.md 字体是红色:说明工作区修改后-->还没有添加至暂存区
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   README.md
no changes added to commit (use "git add" and/or "git commit -a")

#添加 README.md文件到暂存区
$ git add README.md
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory

#将暂存区所有内容commit提交到本地仓库
$ git commit -m "commit: 推送到远程仓库"
[master 44a593d] commit: 推送到远程仓库
 1 file changed, 1 insertion(+)

#将本地commit提交的内容 全部推送到远程仓库
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 344 bytes | 172.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/zhengjiaao/git_test.git
   c02fd60..44a593d  master -> master

推送完成看下github远程仓库效果:刷新页面


github创建公共仓库4.png

可以看出,我们修改的文件内容已推送到GitHub的远程仓库上

5、标签管理

在版本库里打个标签,将来在某一时刻想要之前的版本,我们就可以根据标签取出想要的版本.
常用命令:

#查看所有标签名称
$ git tag 
#查看标签的详细信息(包含commit的信息)
$ git show tagname
#显示标签名及其描述信息
$ git tag -ln tagname

#创建标签,默认是根据最新的commit打标签,也可以指定某个commit_Id打标签         
$ git tag tagname
#指定某个commitId创建标签
git tag tagname commit_Id
#指定提交信息,创建标签同时添加说明信息     
$ git tag -a tagname -m "comment"

#切换至指定标签,在某个标签上继续开发
$ git checkout tagname
#退出标签,切换到指定分支即可
$ git checkout branchname

#推送某个标签到远程   
$ git push origin tagname
#推送所有尚未推送的本地标签 
$ git push origin --tags 

#删除本地指定标签  仅删除本地
$ git tag -d tagname
#删除远程仓库的指定标签
$ git push origin -d tag tagname

#获取远程某个标签信息(没有获取代码)
$ git fetch origin tag tagname

选用一个项目测试标签:
进入一个本地仓库:这里选用之前测试用到的git_test仓库

Administrator@ZhengJiaAo MINGW64 /j/testfile/git_test (master)
#查看文件
$ ls
README.md

#查看文件内容
$ cat README.md
# git_test
### 测试k克隆远程已有仓库及推送此内容到远程仓库

#向文件追加内容
$ echo "## 标签测试 1" >> README.md

#查看状态:README.md红色 ,工作区修改了文件未添加到暂存区
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   README.md
no changes added to commit (use "git add" and/or "git commit -a")

#将修改的文件
$ git add README.md
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory

#将暂存区内容提交到本地仓库
$ git commit -m "commit:标签测试1 提交"
[master b1070cb] commit:标签测试1 提交
 1 file changed, 1 insertion(+)

#查看状态
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

#推送到远程仓库
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 317 bytes | 317.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/zhengjiaao/git_test.git
   44a593d..b1070cb  master -> master


github远程仓库效果:


github标签测试1.png

创建标签并推送至远程仓库:
命令:

#创建本地标签
$ git tag tagname
#将创建的本地标签推送到远程仓库
$ git push origin tagname

命令演示:

Administrator@ZhengJiaAo MINGW64 /j/testfile/git_test (master)
#查看标签
$ git tag

#创建标签
$ git tag v1.0.1

#查看标签
$ git tag
v1.0.1

#将本地标签推送到github远程仓库
$ git push origin v1.0.1
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/zhengjiaao/git_test.git
 * [new tag]         v1.0.1 -> v1.0.1

标签推送到远程仓库成功!

注:当修改的代码没有commit,也能打标签,但不会将工作区修改的内容打进标签,只有将修改的内容commit后才会打进标签中,然后提交标签到远程。

1、工作区修改的代码,没有commit,也能打标签,但是标签不包含工作区修改的代码
2、工作区修改的代码,commit保存,可以将修改的代码打进标签,然后推送到远程,远程标签中也存在修改的代码,但若没有push本次commit信息到远程分支,远程分支是不会有commit提交信息

github查看标签:


github标签测试2.png

删除标签:
命令:

    #删除本地指定标签  仅删除本地
    $ git tag -d v1.0.1
    #删除远程仓库的指定标签
    $ git push origin -d tag v1.0.1

命令演示:

    Administrator@ZhengJiaAo MINGW64 /j/testfile/git_test (master)
    #查看标签
    $ git tag
    v1.0.1
    
    #删除本地指定标签  仅删除本地
    $ git tag -d v1.0.1
    Deleted tag 'v1.0.1' (was b1070cb)
    
    #查看标签:发现标签 v1.0.1 已不存在
    $ git tag
    
    #删除远程仓库的指定标签
    $ git push origin -d tag v1.0.1
    To https://github.com/zhengjiaao/git_test.git
     - [deleted]         v1.0.1

切换到指定标签-->创建新的分支:
命令:

    #切换至指定标签
    $ git checkout tagname
    #退出标签,切换到指定分支即可
    $ git checkout branchName
    
    #切换至指定标签,在某个标签上继续开发,开发完成可以创建新的分支
    $ git checkout tagname
    #这是git的最新版的命令:创建分支并切换至新分支
    $ git switch -c branchName

6、分支管理

分支操作常用命令:

git branch #显示所有本地分支, * 是当前分支
git branch -r #显示所有远程分支
git branch -a #显示所有分支(本地和远程)

git branch -v #显示本地分支最近一次提交信息
git branch -a -v #显示左右分支最后一次提交信息

git merge <name> # 合并某分支到当前分支

git branch --merged # 已经合并的分支列表,git branch -d 可删除成功
git branch --no-merged # 未合并的分支列表,删除不成功,-D 选项强制删除它

git branch <name> # 创建新分支
git checkout <name> # 切换到指定分支
git checkout -b <name> # 从本地已有的当前分支-->创建新分支->切换至新分支 相当于上面两步操作
git checkout -b dev origin/dev # 从远程已有分支-->创建新分支->切换至新分支,并与远程分支关联
git switch <name> # 切换分支(推荐,但git需要升级到最新版本),没有分支不会自动创建
git switch -c dev # 创建并切换新分支或直接切换已有分支上 (推荐,但是git需要升级到最新版本)

git merge dev #合并分支

git branch -d dev #删除已经合并的分支,未合并的分支删除不了
git branch -D dev #强力删除分支,会丢掉未合并的内容

Git鼓励大量使用分支流程:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

本地仓库的分支创建、合并、删除:

#查看分支
$ git branch
* master
#从当前master创建新分支dev
$ git branch dev
#查看分支
$ git branch
  dev
* master
#修改dev分支中test文件内容
$ echo "dev修改文件内容" >> test.txt
#将修改内容添加至暂存区,让git版本库管理
$ git add test.txt
#将暂存区内容提交到本地仓库
$ git commit -m "dev修改text内容"
[dev 7e62af8] dev修改text内容
 1 file changed, 1 insertion(+)
#切换至master分支
$ git switch master
#当前master合并dev分支内容
$ git merge dev
Updating 4115cf8..7e62af8
Fast-forward
 test.txt | 1 +
 1 file changed, 1 insertion(+)
#查看test文件内容
$ cat test.txt
dev修改文件内容

#删除dev分支,必须是已经合并成功,不然删除不掉dev分支,强力删除可以用 -D
$ git branch -d dev
Deleted branch dev (was 7e62af8).
#查看分支
$ git branch
* master

创建本地仓库分支并上传到远程仓库:

#查看所有分支(本地和远程)
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

#新建本地dev分支
$ git switch -c dev
Switched to a new branch 'dev'

#远程没有dev分支,本地有dev
$ git branch -a
* dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

#将本地dev分支推送到远程仓库
Administrator@ZhengJiaAo MINGW64 /j/testfile/git_test (dev)
$ git push --set-upstream origin dev
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'dev' on GitHub by visiting:
remote:      https://github.com/zhengjiaao/git_test/pull/new/dev
remote:
To github.com:zhengjiaao/git_test.git
 * [new branch]      dev -> dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.

#推送成功 :remotes/origin/dev
$ git branch -a
* dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master

删除仓库分支:

git branch -d <branch-name> 删除分支
git push origin --delete <branch-name> 删除远程分支

#查看所有分支
$ git branch -a
* dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master
#删除远程仓库分支
$ git push origin --delete dev
To github.com:zhengjiaao/git_test.git
 - [deleted]         dev
#查看所有分支:发现远程仓库已经没有dev分支
$ git branch -a
* dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
#切换到master分支
$ git switch master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
#删除本地分支,注意dev分支要是已合并的分支,不然删除报错,可以用 -D 强力删除,但会丢失dev开发的代码,所以要先合并分支,再删除分支
$ git branch -d dev
Deleted branch dev (was b1070cb).
#查看所有分支:发现本仓库已没有dev分支
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

7、远程仓库管理

远程仓库添加、重命名、删除等操作。
命令:

#查看远程仓库别名或路径
$ git remote
$ git remote -v

#删除关联的远程仓库路径
$ git remote rm origin

#添加远程仓库:origin远程仓库别名,url远程仓库地址
$ git remote add origin url

#修改远程仓库别名
$ git remote rename origin oldorigin
$ git remote
oldorigin

#添加多个远程仓库
$ git remote add origin url
$ git remote
oldorigin
origin

本地仓库和远程仓库:

#本地删除远程仓库
$ git remote rm origin
#发现已经没有远程仓库
$ git remote

#添加远程仓库
$ git remote add origin git@github.com:zhengjiaao/git_test1.git
#查看远程仓库
$ git remote
origin

#远程仓库重命名
$ git remote rename origin oldorigin
$ git remote
oldorigin

#添加多个远程仓库
$  git remote add origin git@github.com:zhengjiaao/git_test2.git
$ git remote
oldorigin
origin

多个远程仓库推送和下拉需要指定仓库别名 如:

git pull origin master
git pull oldorigin master
git push origin master
git push oldorigin master

一次推送到多个远程仓库:
上面是不是感觉麻烦,两个远程仓库要推送两次,也可以一次推送到多个远程仓库:
命令:

#url 是第二个(或大于第二个)远程仓库
$ git remote set-url --add origin url

命令演示:

#有一个远程仓库
$ git remote -v
origin  git@github.com:zhengjiaao/git_test.git (fetch)
origin  git@github.com:zhengjiaao/git_test.git (push)

#添加第二个远程仓库
$ git remote set-url --add origin git@github.com:zhengjiaao/git_test2.git
#查看发现多了一个远程仓库,别名都是origin 一致的
$ git remote -v
origin  git@github.com:zhengjiaao/git_test.git (fetch)
origin  git@github.com:zhengjiaao/git_test.git (push)
origin  git@github.com:zhengjiaao/git_test2.git (push)

一次推送到多个远程仓库 如:

git push origin master

上一篇下一篇

猜你喜欢

热点阅读