当前位置:   article > 正文

GIT版本管理_有神万8b5c4f

有神万8b5c4f

git管理项目


一、Git基础

配置

使用Git前需要做的最小配置:

git config --global user.name 'dagger'
git config --global user.email 'dagger.163.com'
  • 1
  • 2

config三个作用域:local只对某个仓库有效,global当前用户的所有仓库有效,system系统登陆所有用户有效;

git config --local  
git config --global
git config --system 
  • 1
  • 2
  • 3

显示config配置,加–list;不加local等作用域显示全部的配置;

git config --list --local 
git config --list --global
git config --list --system 
  • 1
  • 2
  • 3

创建Git仓库

场景一:已有项目代码;

cd project
git init
  • 1
  • 2

场景二:全新的项目;

git init project
cd project
  • 1
  • 2

命令行查看版本信息

常规版本信息 --oneline 、-n 、–all、graph 可以叠加使用

git log 
  • 1

查看指定分支版本信息

git log master
  • 1

简单版本信息

git log --oneline
  • 1

有筛选条数的版本信息,例前10条版本信息

git log -n10
  • 1

有筛选条数的简单的版本信息,例前10条版本信息

git log -n10 --oneline
  • 1

查看当前所有分支指向的提交的commit

git log -n10 --all
  • 1

查看当前所有分支commit图形化的演变情况

git log -n10 --all --graph
  • 1

图形界面Gitk查看版本信息

在这里插入图片描述

远程仓库管理

检出仓库

$ git clone git://github.com/jquery/jquery.git
  • 1

查看远程仓库

$ git remote -v
  • 1

添加远程仓库

$ git remote add [name] [url]
  • 1

删除远程仓库

$ git remote rm [name]
  • 1

修改远程仓库

$ git remote set-url --push[name][newUrl]
  • 1

拉取远程仓库

$ git pull [remoteName] [localBranchName]
  • 1

推送远程仓库

$ git push [remoteName] [localBranchName]
  • 1

文件管理

重命名文件

git mv old_file new_file
  • 1

删除文件

git  rm file_name #删除file_name 文件
  • 1

分支管理

查看本地分支

$ git branch
  • 1

查看远程分支

$ git branch -r
  • 1

创建本地分支

$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
  • 1

创建本地分支(远程分支为模板)

$ git checkout -b xxxx(本地分支名称) yyyy(上条命令查找到的远程分支的名称)
  • 1

切换分支

$ git checkout [name]
  • 1

创建新分支并立即切换到新分支

$ git checkout -b [name]
  • 1

删除分支
*-d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项

 git branch -d [name]  
  • 1

合并分支

$ git merge [name] # 将名称为[name]的分支与当前分支合并
  • 1

创建远程分支(本地分支push到远程)

$ git push origin [name]
  • 1

删除远程分支

$ git push origin :heads/[name]
  • 1

比较(diff)

1.怎么比较工作区和暂存区所含文件的差异?

git diff
git diff index.php #单独比较index.php
  • 1
  • 2

2.怎么比较暂存区和HEAD所含文件的差异?

git diff --cached 
git diff --cached index.php #单独比较index.php
  • 1
  • 2

3.查看不同分支文件的差异

git diff test master 比较test与master分支
git diff test master -- index.php #比较test与master分支的index.php文件
  • 1
  • 2

文件恢复(reset /checkout)

  1. 如何让暂存区恢复成和HEAD的一样?
git reset HEAD 
git reset index.php #单独恢复暂存文件 index.php
  • 1
  • 2
  1. 如何让工作区的文件恢复为和暂存区一样?
git checkout index.php #单独恢复暂存文件 index.php
  • 1

二、独自使用Git常用场景

修改commit的message

1.修改commit的当前的message
git commit --amend  #进入vim模式I编辑模式时候编辑想要编辑的信息:wq!保存即可
  • 1
test 分支第一次提交 #当前commit的message ,直接修改保存该行就修改好了
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
## 此处省略....
  • 1
  • 2
  • 3
  • 4
2.修改commit旧的某一个message

当前的git log

$ git log
commit 7c535deab02d1d9753b38bf962fc1009c9f01ee1 (HEAD -> test)
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 23:50:40 2022 +0800

   test第三次提交

commit a47cbe9ef03e8afd63a13ed3a4406c48e144d2dc
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 23:49:14 2022 +0800

   test第二次提交

commit 807231fa863933b5bebb0841db1f03ffe44287f3
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 17:32:01 2022 +0800

   重新修改 messahe 'test 分支第一次提交'

commit 05ad398a674286d570dc672bea57b5f385afae4c (master)
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 17:22:45 2022 +0800

   第一次提交

Dagger@dagger MINGW64 /d/phpstudy_pro/WWW/test-git (test)
$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

把message“ 重新修改 messahe ‘test 分支第一次提交’”修改“ test 分支第一次提交”

git commit --rebase -i  05ad398a67428
  • 1

交互界面1
pick 807231f 重新修改 messahe ‘test 分支第一次提交’ 这一行的pick改成reword

pick 807231f 重新修改 messahe 'test 分支第一次提交'
pick a47cbe9 test第二次提交
pick 7c535de test第三次提交

## 此处省略....
  • 1
  • 2
  • 3
  • 4
  • 5

交互界面2
直接修改message "重新修改 messahe 'test 分支第一次提交"改成"test 第一次提交"保存退出

重新修改 messahe 'test 分支第一次提交'

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
## 此处省略....
  • 1
  • 2
  • 3
  • 4
  • 5

修改好的git log

$ git log
commit 8992937d838af47da542f9b34e5b1c4fbeaad4f6 (HEAD -> test)
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 23:50:40 2022 +0800

    test第三次提交

commit 0d68b35bf669ff807d54b98654d52cc44cd3cd92
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 23:49:14 2022 +0800

    test第二次提交

commit 362b5326e1d4f2fd94e39338471c99eca2d54d6a
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 17:32:01 2022 +0800

    test第一次提交

commit 05ad398a674286d570dc672bea57b5f385afae4c (master)
Author: dagger <731619080@qq.com>
Date:   Thu Jul 7 17:22:45 2022 +0800

    第一次提交

Dagger@dagger MINGW64 /d/phpstudy_pro/WWW/test-git (test)
$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
2 怎样把连续的多个commit整理成1个

当前的git log

$ git log --graph
* commit a2f0bc835d99cb7c9f073e8f1c27ff47cb55374c (HEAD -> test)
| Author: dagger <731619080@qq.com>
| Date:   Fri Jul 8 10:47:46 2022 +0800
|
|     test增加index.php
|
* commit 8992937d838af47da542f9b34e5b1c4fbeaad4f6
| Author: dagger <731619080@qq.com>
| Date:   Thu Jul 7 23:50:40 2022 +0800
|
|     test第三次提交
|
* commit 0d68b35bf669ff807d54b98654d52cc44cd3cd92
| Author: dagger <731619080@qq.com>
| Date:   Thu Jul 7 23:49:14 2022 +0800
|
|     test第二次提交
|
* commit 362b5326e1d4f2fd94e39338471c99eca2d54d6a
| Author: dagger <731619080@qq.com>
| Date:   Thu Jul 7 17:32:01 2022 +0800
|
|     test第一次提交
|
* commit 05ad398a674286d570dc672bea57b5f385afae4c (master)
  Author: dagger <731619080@qq.com>
  Date:   Thu Jul 7 17:22:45 2022 +0800

      第一次提交
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

开始合并

git rebase -i 05ad398a67
  • 1

交互界面1;test第二次提交,test第三次提交 两处的pick 改为squash。test第一次/第二次/第三次这三次提交合并为一个

pick 362b532 test第一次提交
pick 0d68b35 test第二次提交
pick 8992937 test第三次提交
pick a2f0bc8 test增加index.php
## 此处省略....
  • 1
  • 2
  • 3
  • 4
  • 5

交互界面2 在 # This is a combination of 3 commits与#This is the 1st commit message写合并多个提交操作的提示信息

# This is a combination of 3 commits.
test分支增加index.htnl 和 reset.bat 文件
# This is the 1st commit message:

test第一次提交

# This is the commit message #2:

test第二次提交

# This is the commit message #3:

test第三次提交

## 此处省略....

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

合并好的git log

$ git log --graph
* commit 3573534a19f40a02d9b3b399552b9452de1139fd (HEAD -> test)
| Author: dagger <731619080@qq.com>
| Date:   Fri Jul 8 10:47:46 2022 +0800
|
|     test增加index.php
|
* commit 4a94d0d585d8aec5a54f7bf1cfcb25d70cb92c14
| Author: dagger <731619080@qq.com>
| Date:   Thu Jul 7 17:32:01 2022 +0800
|
|     test分支增加index.htnl和rebase.bat文件
|
|     test第一次提交
|
|     test第二次提交
|
|     test第三次提交
|
* commit 05ad398a674286d570dc672bea57b5f385afae4c (master)
  Author: dagger <731619080@qq.com>
  Date:   Thu Jul 7 17:22:45 2022 +0800

      第一次提交
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
3. 怎样把间隔的几个commit整理成1个?

交互界面1

pick 4a94d0d test分支增加index.htnl和rebase.bat文件
pick 3573534 test增加index.php
pick 821f2d5 test第四次提交
## 此处省略....
  • 1
  • 2
  • 3
  • 4

改为

pick 4a94d0d test分支增加index.htnl和rebase.bat文件
squash 821f2d5 test第四次提交
pick 3573534 test增加index.php
  • 1
  • 2
  • 3

交互界面2

# This is a combination of 2 commits.
test分支增加index.htnl和rebase.bat文件初始化 #新的合并操作的message信息
# This is the 1st commit message:

test分支增加index.htnl和rebase.bat文件 

test第一次提交

test第二次提交

test第三次提交

# This is the commit message #2:

test第四次提交
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

合并好的git log

$ git log --graph
* commit f894f80e740f05dafcc437b692b26833cf94004d (HEAD -> test)
| Author: dagger <731619080@qq.com>
| Date:   Fri Jul 8 10:47:46 2022 +0800
|
|     test增加index.php
|
* commit 0d1303f33f13b35552eda1ed3b411a33539bbcf2
| Author: dagger <731619080@qq.com>
| Date:   Thu Jul 7 17:32:01 2022 +0800
|
|     test分支增加index.htnl和rebase.bat文件初始化
|
|     test分支增加index.htnl和rebase.bat文件
|
|     test第一次提交
|
|     test第二次提交
|
|     test第三次提交
|
|     test第四次提交
|
* commit 05ad398a674286d570dc672bea57b5f385afae4c (master)
  Author: dagger <731619080@qq.com>
  Date:   Thu Jul 7 17:22:45 2022 +0800

      第一次提交
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

代码回滚(reset --hard)

1. 消除最近的几次提交

查看当前log

$ git log --oneline
94e67c9 (HEAD -> test) git diff --cached
f894f80 test增加index.php
0d1303f test分支增加index.htnl和rebase.bat文件初始化
05ad398 (master) 第一次提交
  • 1
  • 2
  • 3
  • 4
  • 5

回滚到“test分支增加index.htnl和rebase.bat文件初始化”

git reset --hard 0d1303f 
  • 1

查看当前log

$ git log --oneline
0d1303f (HEAD -> test) test分支增加index.htnl和rebase.bat文件初始化
05ad398 (master) 第一次提交
  • 1
  • 2
  • 3

二、如何指定不需要Git管理的文件?

三、开发中临时加塞了紧急任务怎么处理?

1.添加 git stash

$ git stash 添加stash版本
Saved working directory and index state WIP on test: 94e67c9 git diff --cached
  • 1
  • 2

git stash save 添加有备注的stash版本

git stash save "优惠券分组" 
  • 1

2.stash list 查看stash版本信息

$ git stash list
stash@{0}: On test: git stash apply
stash@{1}: On test: 优惠券分组
stash@{2}: WIP on test: 94e67c9 git diff --cached
  • 1
  • 2
  • 3
  • 4

3.使用版本
A: stash apply 不删除stash存储的版本 工作区恢复到指定版本

git stash apply #未指定版本默认获取最近一次stash 0 ----> git stash apply
git stash apply 1 #指定版本1 -----> stash@{1}: On test: 优惠券分组
  • 1
  • 2

B: stash pop 删除stash存储的版本 工作区恢复到指定版本

git stash pop #未指定版本默认获取最近一次stash 0 ----> git stash apply
git stash pop  1 #指定版本1 -----> stash@{1}: On test: 优惠券分组
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/840152
推荐阅读
相关标签
  

闽ICP备14008679号