git常用命令

git学习小游戏:

https://learngitbranching.js.org/?locale=zh_CN

答案:略,自行百度

git中文文档:

https://git-scm.com/book/zh/v2

常用命令参考文档:

 https://liaoxuefeng.gitee.io/resource.liaoxuefeng.com/git/git-cheat-sheet.pdf

 

初次安装完成后的设置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

创建目录learngit,进入目录,显示目录

mkdir learngit
cd learngit
pwd

 初始化仓库,用 ls -ah 来查看初始化后默认隐藏的目录 .git

git init

基本概念:

工作区、暂存区、版本库

工作区(Working Directory):电脑中看到的目录

暂存区(stage): stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中

版本库(Repository):隐藏目录 .git,是 Git 的版本库,这个不属于工作区

 

把文件添加到仓库, 实际上就是把文件修改添加到暂存区

git add readme.txt

把文件提交到仓库,-m后面输入的是本次提交的说明,实际上就是把暂存区的所有内容提交到当前分支

git commit -m "wrote a readme file"

检查仓库当前的状态

git status

显示暂存区和工作区的差异

git diff

查看历史记录,最近到最远的提交日志,简化显示: git log --pretty=oneline

git log

git log --pretty=oneline

回退到上一个版本

git reset --hard HEAD^

查看文件内容

cat readme.txt

恢复以前版本,只需写前几位版本号即可,git的版本回退只是指针发生了变化

git reset --hard 1094a

查看历史的每一次命令

git reflog

查看工作区和版本库里面最新版本的区别

git diff HEAD -- readme.txt

把文件在工作区的修改全部撤销,两种情况:

1,readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态

2,readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

git checkout -- readme.txt

把暂存区的修改撤销掉(unstage),重新放回工作区

git reset HEAD readme.txt

删除文件管理器中的文件

rm test.txt

从版本库中删除该文件

git rm test.txt

-----------------------------------------------------------------------------------------

远程仓库:

基本设置

创建SSH Key,在用户主目录下,查看有无.ssh目录,如果有,再看该目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。

在窗口中输入ll -d ~/.ssh也可以查询到.ssh目录的位置

如果没有,打开Git Bash,创建SSH Key:

ll -d ~/.ssh
ssh-keygen -t rsa -C "youremail@example.com"

 本地仓库关联远程仓库

git remote add origin git@github.com:michaelliao/learngit.git

初次把本地库的所有内容推送到远程库上

git push -u origin master

初次推送成功后,下一次只要本地作了提交,可以直接用下面命令推送

git push origin master

 查看远程库信息

git remote -v

删除远程库,解除了本地和远程的绑定关系,并非物理上删除了远程库

git remote rm origin

 从远程库克隆

git clone git@github.com:michaelliao/gitskills.git

 创建dev分支,然后切换到dev分支

git switch -c dev
git checkout -b dev
git branch dev git checkout dev git switch maste

查看当前分支

git branch

dev分支的工作成果合并到master分支上

git merge dev

删除dev分支

git branch -d dev

看到分支合并图

git log --graph
git log --graph --pretty=oneline --abbrev-commit

 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并

git merge --no-ff -m "merge with no-ff" dev

“储藏”工作现场

git stash

查看‘储藏’的工作现场

git stash list

恢复工作现场,方式一:用git stash apply恢复,恢复后,stash内容并不删除,需要用git stash drop来删除

git stash apply
git stash drop

恢复工作现场,方式二:恢复的同时把stash内容也删了

git stash pop

多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令

git stash apply stash@{0}

复制一个特定的提交到当前分支

git cherry-pick 4c805e2

强行删除没有合并的分支

git branch -D <name>

 拉取最新分支

git pull

指定本地dev分支与远程origin/dev分支的链接

git branch --set-upstream-to=origin/dev dev

切换到需要打标签的分支上,打新标签

git tag v1.0

查看所有标签

git tag

历史提交的commit id打标签

git log --pretty=oneline --abbrev-commit
git tag v0.9 f52c633

标签不是按时间顺序列出,而是按字母排序的

可以用git show <tagname>查看标签信息

git show v0.9

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

git tag -a v0.1 -m "version 0.1 released" 1094adb

注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

 删除标签

git tag -d v0.1

推送某个标签到远程

git push origin v1.0

删除远程已经推送的标签,先从本地删除,再远程删除。删除命令也是push

git tag -d v0.9
git push origin :refs/tags/v0.9

------------------

忽略文件,配置文件在线浏览:https://github.com/github/gitignore

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

 

-f强制添加到Git

git add -f App.class

检查某文件的忽略规则

git check-ignore -v App.class

把指定文件排除在.gitignore规则外的写法就是!+文件名,所以,只需把例外文件添加进去即可

# 不排除.gitignore和App.class:
!.gitignore
!App.class

通过https://gitignore.itranswarp.com在线生成.gitignore文件

 

配置别名,以后st就表示status

git config --global alias.st status

给命令git reset HEAD file配置一个unstage别名

git config --global alias.unstage 'reset HEAD'

配置一个git last,让其显示最后一次提交信息

git config --global alias.last 'log -1'

每个仓库的Git配置文件都放在.git/config文件中

cat .git/config

当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig

cat .gitconfig

 

posted @   天才九少  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示