Git笔记1

记录一些语法,希望自己看到的时候可以起到复习的作用

文件操作

创建文件

touch 有限个

$ touch File1Name File2Name

touch 批量创建

$ touch text{ 0001..2000 }.txt

rm也可以使用该操作

vi和vim

vi和vim都可以创建并进入修改模式

> 和 >>

>

会直接覆盖原文件不会有任何提示, 左边的参数可以是一个命令, 比如ls, git status 都可以.

>>

追加在文件末尾, 不会覆盖原文件内容

cat >

$ cat > FileName
text
text

使用一个Ctrl + z退出输入模式.

cat >> TextName << Mark

$ cat >> FielName << Mark
2
2
2
Mark

遇到单行的Mark退出输入, Mark是自定义的标志

git rm 删除

$ git rm FileNmae
这个删除可以删除版本库中的文件, 正常的命令行操作中的rm是删掉当前的文件.

rm 删除

$ rm - r FileName

删除一个文件夹

$ rmdir ./*

删除当前文件的所有空文件夹

$ rmdir ~/*
~是当前根目录 *是以下所有目录

文本操作

1 echo 写入

echo "This is a text" >> Filename

2 branch 分支展示

$ git branch
* dev
  main

星号代表当前分支

3 cat 打开文件

$ git cat Filename
#
There is data
#

13 vi 文本编辑

$ vi Filename

14 :wq 退出编辑

7 cd 切换盘符

cd Filename

$ cd learngit
$ cd ..

..为上一级目录

git 文件状态操作

4 status 显示当前状态

$ git status
On branch dev
nothing to commit, working tree clean

5 add 把文件加入缓存区

$ git add Filename

6 commit 把文件提交保存

//基础使用
$ git commit -m "log"
commit c3f40a2dbab0a60e4426050f03d24bba7e1a61c6
Author: zhywyt <2216095277@qq.com>
Date:   Thu Feb 16 17:52:16 2023 +0800

    Your Log


8 reflog 历史更新记录

$ git reflog
90d67c7 (HEAD -> main, origin/main) HEAD@{0}: checkout: moving from dev to main
847265a (dev) HEAD@{1}: checkout: moving from main to dev

tag

tag的用处

tag可以为一次提交设定一个别名,标签是不能移动的,只能创建和删除
所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

tag的创建

创建一个标签十分简单,默认的标签是创建在最新提交的commit上的

$ git tag TagName

如果过去该打的标签忘记打了>如果过去该打的标签忘记打了

$ git tag TagName CommitName

创建一个带说明的标签,用-a指定标签名,-m指定说明文字。

$ git tag -a TagName -m "Explaination"

tag 的查看

$ git tag

这里的tag是按照字母顺序列出的,不是时间顺序.

show 查看tag信息

$ git show TagName

tag的删除

$ git tag -d TagName

因为创建的tag都保存在本地,不会自动推送到云端,所以打错的标签可以在本地安全的删除。如果要

还原

checkout 还原缓存版本

当不需要更改之后的版本的时候,可以checkout某个文件使得其回到add缓存区的版本.

$ git checkout Filename

reset 把缓存区丢弃

使用reset可以让add缓存区还原为git库中的上一个版本,我现在只会使用一个参数,分支名字。

$ git reset HEAD FileName
再次使用checkout可以让版本回到工作区

新版git

情况1:在工作区做了修改,并未添加到暂存区,想撤销工作区的修改,用
$ git restore file

情况2:在工作区做了修改,并用git add 添加到了暂存区,未提交;想撤销,分两步,1.先撤销暂存区的修改,用

$ git restore --staged file

2.然后参考情况1撤销工作区的修改;这里的参数--staged就是指定从HEAD中恢复,不加就是从index缓存区中恢复。

情况3:在工作区做了修改,且git add git commit添加并提交了内容,想撤销本次提交,直接用

$ git reset --hard HEAD^

回退版本,即可保证工作区,暂存区,版本库都是上次的内容

分支操作

创建分支

$ git checkout -b BranchName
$ git switch -c BranchName

上面两种操作都可以添加分支,并且切换到分支.

10 merge 合并分支

$ git merge BranchName
Updating d46f35e..b17d20e
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

禁用Fast forward模式

$ git merge --no-ff -m "Information of merge " BranchName

合并指定分支到当前分支,其中的Fast-forward是指快进模式,也就是直接把main指针指向了dev

11 branch -d 删除分支

$ git branch -d dev
Deleted branch dev (was ...)

删除没有合并的分支

使用参数-D即可

12 switch 切换分支

$ git switch BranchName

git breanch 查看分支

$ git branch

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

image

stash 储存当前场景(非提交)

$ git stach
Saved working directory and index state WIP on dev: f52c633 add merge

可以将当前工作区加入stach list

$ git stach list
stash@{0}: WIP on dev: f52c633 add merge

查看当前的stach list

$ git stach apply StashName

恢复工作区,StashName可以省略,则是恢复最新一个版本,名字可以在list中看到.

$ git stach pop

恢复的同时删除stash

$ git cherry-pick <commit>

可以复制某一个提交来当前分支,会自动提交该操作.

远程库 --github

添加远程仓库

$ git remote add originName address

推送到远程库

$ git push -u originName BranchName

其中的originName就是仓库名字,BranchName是分支名字,-u是第一次添加的使用,会把本地的分支和远程的分支链接起来,后续不需要此参数

$ git push originName BranchName
这是之后的提交操作 ### 查看远程库 查看自己的远程库连接 ```shell $ git remote -v ```

删除远程库

如果添加的时候地址写错了,想要删除远程库,可以使用以下操作.

$ git remote rm originName

克隆远程库

$ git clone Address

拉取最新提交

$ git pull

如果pull失败,需要先按照提示设置分支与远程库的链接

创建远程origin的分支dev到本地

$ git checkout -b Neckdev origin/dev

本地的Neckdev可以与远程库的不一样,但是最好设置一样的名字

rebase 整理本地未push的分叉提交历史

$ git rebase

rebase的目的是使得我们在查看历史提交的变化的时候更加容易,使得

定义全局参数

$ git config --global alias.NickName Command
$ git config --global alias.co commit
posted @ 2023-02-16 20:48  zhywyt  阅读(24)  评论(0编辑  收藏  举报