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分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
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
本文来自博客园,作者:zhywyt,转载请注明原文链接:https://www.cnblogs.com/zhywyt/articles/17128266.html