Chinaunix首页 | 论坛 | 博客
  • 博客访问: 262023
  • 博文数量: 89
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 655
  • 用 户 组: 普通用户
  • 注册时间: 2018-10-15 14:13
个人简介

搭建一个和linux开发者知识共享和学习的平台

文章分类

全部博文(89)

文章存档

2024年(3)

2023年(24)

2022年(27)

2019年(8)

2018年(27)

分类: LINUX

2024-06-17 09:57:47

Git 数据工作流程如下:


(1)暂存文件

可以使用以下命令来暂存已修改的文件,命令最后需要指定要暂存的文件名称:

 


git add <filename> 

如果想要将所有未跟踪和修改的文件添加到暂存区,可以执行以下命令:

 


git add . 

此时分支的状态如下:


(2)提交暂存

可以使用以下命令将暂存区的文件修改提交到本地仓库,

 


git commit -m "meaasge" 

其中-m参数表示message日志信息,参数后面要加一个日志信息,用双引号括起来。

此时分支的状态如下:


如果上次提交暂存的messge写错了怎么办呢?可以使用使用以下命令来更新提交,而不需要撤销并重新提交:
 


git commit --amend -m <message> 

如果有一个新的文件修改,也想提交到上一个commit中,可以使用以下命令来保持相同的提交信息:

 


git add . git commit --amend --no-edit 

(3)存储更改

假如我们正在开发迭代功能,但是还没开发完。这时有一个紧急的bug需要修复上线。可能就需要切换到一个hotfix分支去修复bug。这时对于开发了一部分的功能创建提交是没有逻辑意义的。可以使用以下任一命令来存储修改的内容:

 


git stash git stash push git stash push -m "" 

该命令回保存所有未提交的更改并恢复到上次提交时存储库的状态。

当想再次继续开发此功能时,就可以使用以下命令检查所有存储:

 


git stash list 

这时终端中就会显示带有时间戳的所有已经暂存的列表。可以使用以下任一命令来取回所有的更改:

 


git stash apply git stash pop 

apply 和 pop 之间的区别在于,pop 应用了 stash 中的更改并将其也从 stash 中删除,但 apply 即使在应用后仍将更改保留在 stash 中。

可以使用以下任一命令应用存储列表中的第 N 个存储:

 


git stash apply stash@{N} git stash apply <n> 

整个过程的输出如下:


(4)合并指定提交

在不同分支之间进行代码合并时,通常会有两种情况:一种情况是需要另一个分支的所有代码变动,那么就可以直接合并(git merge),另一种情况是只需要部分代码的变动(某几次提交),这时就可以使用以下命令来合并指定的提交:

 


git cherry-pick <commit hash> 

建议添加 -x 标志,因为它会生成标准化的提交消息,通知用户它是从哪里pick出来的:

 


git cherry-pick -x <commit hash> 

那么这个commit hash是从哪里来的呢?可以在需要被合并的分支上执行以下命令:

 


git log 

这时终端就会显示出所有的提交信息:


这里黄色文字中commit后面的部分就是commit hash,复制即可。

(5)检查提交

Git允许我们在本地检查特定的提交。输入以下命令就可以查看有关当前提交的详细信息:

 


git show 

输出的结构如下,可以看到,它显示出了上次提交的commit id、作者信息(邮箱和姓名)、提交日期、commit message、代码diff等:


还可以使用HEAD~n语法或提交哈希来检查过去的提交。使用以下命令就可以获取往前数的第三次提交的详细信息:
 


git show HEAD~3 

除此之外,还可以添加一个--oneline标志,以简化输出信息:

 


git show --oneline 

这样提交信息就简洁了很多:


(6)查看贡献者

可以使用以下命令来返回每个贡献者的commit次数以及每次commit的commit message:

 


$ git shortlog 

其可以添加两个参数:

  • s:省略每次 commit 的注释,仅仅返回一个简单的统计。

  • n:按照 commit 数量从多到少的顺利对用户进行排序。

加上这两个参数之后就可以看到每个用户中的提交次数以及排名情况:

 


git shortlog -sn 

这样就会显示出该项目所有贡献者的commit次数,从上到下依次减小:


除此之外,还可以添加一个--no-merges标志,以忽略合并提交的次数:
 


 git shortlog -sn --no-merges 

(7)仓库提交历史

git rev-list 用于列出仓库中的提交(commit)记录。它按照时间倒序显示提交记录,并可以根据不同的选项和参数进行筛选和排序。

下面是git rev-list的一些基本用法:

  1. 列出所有提交记录:

 


git rev-list 

这将显示仓库中所有的提交记录,按照时间倒序排列。每个提交记录都有一个唯一的SHA-1哈希值作为标识。

  1. 列出某个分支的提交记录:

 


git rev-list <branch-name> 

替换为你要查看的分支的名称。这将显示该分支上的所有提交记录。

  1. 列出某个提交之后的提交记录:

 


git rev-list <commit-id>.. 

替换为你要查看的提交的SHA-1哈希值。这将显示该提交之后的所有提交记录。

  1. 列出两个提交之间的提交记录:

 


git rev-list <commit-id1>..<commit-id2> 

替换为你要查看的两个提交的SHA-1哈希值。这将显示从之间的所有提交记录。

  1. 列出某个文件的所有提交记录:

 


bash复制代码    git rev-list -- <file-path> 

替换为你要查看的文件的路径。这将显示涉及该文件的所有提交记录。

(8)添加注释或备注

git notes允许用户为Git对象(如提交、树、标签等)添加注释或备注信息。这些注释信息是以键值对的形式存储的,其中键是一个唯一的引用,而值则是与该引用关联的注释内容。

要使用git notes,可以按照以下步骤进行操作:

  • 添加注释:使用git notes add -m "Your note message" 命令向一个对象添加注释。例如,要向提交abc123添加注释,可以执行git notes add -m "This is a note for commit abc123" abc123。

  • 显示注释:使用git notes show 命令显示一个对象的注释内容。例如,要显示提交abc123的注释,可以执行git notes show abc123。

  • 编辑注释:如果要编辑已存在的注释,可以使用git notes edit 命令。这将打开文本编辑器,允许编辑已存在的注释内容。编辑完成后,保存并关闭编辑器即可。

  • 显示所有注释:使用git notes list命令可以显示所有对象的注释信息。这将列出所有带有注释的Git对象及其对应的注释内容。

  • (9)追溯文件历史修改记录

    git blame 用于追溯文件历史修改记录,它可以显示指定文件中每一行代码的最后修改者以及修改时间,帮助开发者了解代码的演变过程。

    以按照以下步骤使用git blame命令:

    1. 打开终端或命令行界面,并导航到Git仓库的根目录。

    2. 运行git blame 命令,其中是要查看历史修改记录的文件的路径。

    git blame命令将列出文件的每一行,并显示最后一次修改该行的提交信息,包括提交的哈希值、作者、修改时间和提交注释等。这样,你可以轻松地找到代码中引入bug的提交,或者识别特定代码段的贡献者。

    除了基本的用法,git blame命令还接受一些参数来调整输出。例如,使用-L ,参数可以指定查看的行范围,只显示指定行范围内的代码修改信息。使用-p参数可以显示每一行的详细信息,包括提交的哈希值、作者、时间戳和行号。此外,还可以使用-C和-M选项来查找代码重命名和移动的情况,以便更好地追踪代码的变化。

    (10)创建存档

    git archive 用于创建存档(archive)文件,通常是一个压缩文件,包含了Git仓库中的特定文件或目录。这个命令允许你将Git仓库中的文件打包成一个独立的文件,方便备份、传输或发布。

    要使用git archive命令,需要指定存档文件的格式(如.zip、.tar等),以及要包含的文件或目录。以下是一些常用的git archive命令的用法:

    • 创建tar格式的存档文件,包含当前分支的最新代码:

     
    
    
    
    git archive --format=tar --prefix=my-project/ HEAD | gzip > my-project.tar.gz 

    这个命令将创建一个名为my-project.tar.gz的压缩文件,其中包含了当前分支(HEAD)的最新代码。--prefix选项用于在存档文件中添加一个前缀目录my-project/。

    • 创建zip格式的存档文件,只包含指定的文件或目录:

     
    
    
    
    git archive --format=zip --output=my-files.zip path/to/file1 path/to/file2 

    这个命令将创建一个名为my-files.zip的压缩文件,其中只包含了指定的文件或目录。你可以通过路径来指定要包含的文件或目录。

    注意,git archive命令只会包含文件的当前版本,而不会包含Git的元数据(如提交历史、分支信息等)。因此,存档文件主要用于备份或发布代码,而不是作为完整的Git仓库来使用。

    (11)验证提交

    git verify-commit用于验证提交(commit)的GPG签名。GPG(GNU Privacy Guard)是一种加密软件,可以用于为Git提交添加数字签名,以确保提交的完整性和真实性。

    要使用git verify-commit命令,需要先确保已经为Git配置了GPG签名,并且至少有一个提交是带有GPG签名的。然后按照以下步骤进行操作:

    1. 打开终端或命令行界面,并导航到Git仓库的根目录。

    2. 运行git verify-commit 命令,其中是要验证的提交的哈希值或引用(如分支名、标签名等)。

    git verify-commit命令将检查指定提交的GPG签名,并输出验证结果。如果签名有效且未被篡改,命令将显示“Good signature”或类似的消息。如果签名无效或存在问题,命令将显示相应的错误消息。

    除了基本的用法,git verify-commit命令还接受一些参数来调整输出和行为。例如,使用--raw参数可以打印原始的GPG状态输出,而不是人类可读的输出。使用--verbose参数可以打印提交对象的详细内容,以便更详细地了解验证过程。

    注意,要使用git verify-commit命令,必须已经为Git配置了GPG签名,并且至少有一个提交是带有GPG签名的。如果提交没有签名或签名无效,该命令将无法验证提交的真实性。

    4. 远程操作

    (1)查看远程仓库

    可以使用以下命令来查看远程仓库:

     
    
    
    
    git remote 

    该命令会列出指定的每一个远程服务器的简写。如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字:


    可以执行以下命令来获取远程仓库的地址:
     
    
    
    
    git remote -v 

    其中fetch是获取,push是推送:


    可以使用以下命令来查看更加详细的信息:
     
    
    
    
    git remote show origin 

    输出结果如下:


    (2)添加远程仓库

    可以使用以下命令来将本地项目链接到远程仓库:

     
    
    
    
    git remote add <remote_name> <remote_url> 

    其中:

    • remote_name:仓库名称(默认是origin)

    • remote_url:远程仓库地址

    该命令允许 Git 跟踪远程存储库并将本地存储库连接到远程仓库。

    (3)移除远程仓库

    可以使用命令来移除远程仓库:

     
    
    
    
    git remote rm origin 

    需要注意,该命令只是从本地移除远程仓库的记录(也就是解除本地仓库和远程仓库的关系),并不会真正影响到远程仓库。

    (4)从远程仓库抓取与拉取

    可以使用以下命令来从远程仓库获取最新版本到本地仓库,不会自动merge(合并数据):

     
    
    
    
    git fetch 

    由于该命令不会自定合并数据,所以该命令执行完后需要手动执行 git merge 远程分支到所在的分支。

    可以使用以下命令来将远程指定分支拉取到本地指定分支上

     
    
    
    
    git pull origin <远程分支名>:<本地分支名> 

    使用以下命令来将远程指定分支拉取到本地当前分支上

     
    
    
    
    git pull origin <远程分支名> 

    使用以下命令开将与本地当前分支同名的远程分支拉取到本地当前分支上:

     
    
    
    
    git pull 

    注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories,即:

     
    
    
    
    git pull --allow-unrelated-histories 

    (5)推送到远程仓库

    可以使用以下命令将本地指定分支推送到远程指定分支上

     
    
    
    
    git push origin <本地分支名>:<远程分支名> 

    可以使用以下命令将本地指定分支推送到与本地当前分支同名的远程分支上:

     
    
    
    
    git push origin <本地分支名> 

    使用以下命令将本地当前分支推送到与本地当前分支同名的远程分支上

     
    
    
    
    git push 

    可以使用以下命令来将本地分支与远程同名分支相关联:

     
    
    
    
    git push -u origin <本地分支名> 

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

    阅读(160) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~