Git学习笔记

在 Git 中,包括工作区(Working Directory)、暂存区(Staging Area 或 Index)、提交区(Repository)三个概念,它们分别代表不同的文件状态和存储位置。

工作区(Working Directory)
   |
   | git add
   v
暂存区(Staging Area)
   |
   | git commit
   v
提交区(Repository)

1.创建-init,config

git init // 将文件夹初始化为仓库

设置 Git 用户名和邮箱,为了不影响全局的配置,我设置的是仓库级别的。

git config --global user.name xxx
git config --global user.email xxx@xxx.com

2.推送代码-add,commit

使用`add`指令将文件添加到 staging area

使用`commit``指令进行提交,-m参数进行提交信息的描述

git add . // 这里可以把'.'替换成任何你想添加的文件
git commit -m "add file"

2.1提交参数(amend)

某个文件在上次提交中遗漏了,在那次提交中补上这个文件。  

git add forgotten_file
git commit --amend

3.克隆

克隆可以选择克隆一整个仓库,或者某个文件夹

git clone https"//github.com/xxx
git clone https"//github.com/xxx clone_file // 指定下载clone_file

4.删除

有一个文件从硬盘中删除了,但是并未从 git 仓库中删除,找到它并从 git 仓库中删除。删除也是修改的一种,提交这个修改就好了

git add delete_file
git commit -m "remove delete_file"

一个新文件从 staging area 中删除。按照要求,不应该直接从硬盘上删除这个文件,只是从 Git 中删除而已。加上 --cache 可以是文件只是从 staging area 中移除,不会真正的删除物理文件,如果要连这个物理文件也一起删除,请使用 -f 选项

git rm --cached delete.rb

5.移动-mv

移动所有 .html 文件到 src 文件夹。git mv 后面的第二个参数可以接受文件或目录,如果是目录,则文件会直接放入目录内,可以使用正则(glob模式)匹配所有 .html 文件

git mv *.html src

git mv指令也可以用来给文件重命名

git mv old.txt new.txt

6.历史提交记录-log

git log 指令查看历史提交记录

7.回退-reset,checkout

两个文件都被添加到了  staging area , 但是只想提交其中一个。使用 git reset 可以用仓库中的版本覆盖 staging area 的版本。

  • git reset 使用仓库中的版本覆盖  staging area  中的,如果 working directory 该文件没有其他修改,则  staging area  中的修改将应用到 working directory 中。反之working directory 中的版本将被保留,丢弃 staging area 中的修改。
  • git checkout 则是使用  staging area  的中的版本覆盖 working directory
git reset HEAD file.rb
git reset --soft HEAD~1

撤销上一次提交。

  • --soft 参数将上一次的修改放入 staging area
  • --mixed 参数将上一次的修改放入 working directory
  • --hard 参数直接将上一次的修改抛弃

抛弃某一次的修改,使用上次提交的版本。

git checkout file.rb
// 也可以用reflog命令查找所有操作,找到要撤销的操作id
git checkout command_id

8.远端仓库

查看远端仓库。其实可以不加-v参数,加这个参数只是可以将地址也一起输出

git remote -v

拉取远端仓库,其中可以指定分支

git pull origin master
// 对应推送格式如下:
git push origin master

添加远端仓库:

git remote add origin https:github.com/xxx/xxx

9.查看文件修改人-blame

查看某个文件的修改人。

git blame file.rb

10.分支-branch

10.1切换分支-checkout

可以先使用 git branch <分支名> 指令创建分支

git checkout -b my_branch 就是创建一个分支,并切换过去,而且这种方法更方便

10.2删除分支

git branch -d <分支名>

10.3推送分支

您对本地分支做了一些修改,并想共享它,但还没准备好与 "主 "分支合并。 只将 "test_branch "推送到远程仓库

git push origin test_branch

11.合并-merge

我们在分支 "feature "中有一个文件;让我们把它合并到主分支。

git merge feature

关于git merge可以参考:使用分支——Git Merge命令

12.拉取-merge,fetch

看起来有一个新分支被推送到了我们的远程版本库。在不与本地版本库合并的情况下获取更改

其实,git pull 就是 git fetch 和 git merge 组成的。

git fetch origin

关于git fetchgit pull的用法可以参见:详解git pull和git fetch的区别:

以及Git:远程分支----git fetch命令的使用

13.rebase

git rebase 一个分支的所有修改在另一个分支上重新应用一遍,所以在提交记录上看,会发现一个分支的所有提交在另一个分支之前或者之后。然后删除另一个被合并的分支,保持分支简洁。

git rebase master feature 表示将 feature 上的修改在 master 上重新应用一遍

在使用此命令的时候,需要非常注意的是,不要 rebase 哪些已经推送到公共库的更新,因

为此操作是重新应用修改,所以公共库的更新可能已经被其他协作者所同步

关于rebase命令可以查看:git rebase详解(图解+最简单示例,一次就懂) 

git rebase --onto <new_base> <old_base> <branch>

你基于<old_base>分支创建了一个错误的分支branch,并且你已经在这个分支做了一些提交,你希望你的分支在<new_base>上创建,可以使用这个命令将错误分支上的提交合并到new_branch上

14.cherry-pick

用于从其他分支选取特定提交并复制到当前分支,适用于修复bug和引入特定功能

执行命令:git cherry-pick <commit_hash>,其中<commit_hash>是你想要复制的提交的哈希值。
如果要复制多个提交,可以连续指定多个提交的哈希值,如:git cherry-pick <commit_hash1> <commit_hash2> ...。
如果在cherry-pick的过程中遇到冲突,Git会停止应用提交,让你解决冲突。解决冲突后,你需要使用git cherry-pick --continue来继续应用剩余的提交,或者使用git cherry-pick --abort来取消操作。

15.Grep

git grep支持各种条件搜索及正则表达式。

16.重命名提交-rename commit

重命名提交。当涉及提交修改时,应该想到 git rebase -i <hash值> 命令,它接受可以一个参数(提交的哈希值),它将罗列出此提交之后的所有提交,然后可以对个个提交做对应的操作。

17.reflog

git reflog 命令可以列出所有的操作记录

 18.revert

与 reset 不同的是,revert 只会撤销当前的 commit,而之后的 commit 操作的修改还会保留,但是reset还会将之后的所有 commit 操作的修改全部退回 staging area 或丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别问问就花括号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值