git 详细教程

git

全局用户配置

C:\Users\Administrator\.gitconfig ( 是全局用户配置 )

[filter "lfs"]
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
[user]
	name = JUN-95
	email = 1205450959@qq.com

配置全局用户名

  • git config --global user.name “JUN-95”

配置全局用户邮箱

  • git config --global user.email “1205450959@qq.com”

查看文件状态

  • git status [fileName]

查看所有文件的状态

  • git status

添加所有文件到暂存区

  • git add .

添加暂存区中的文件到本地仓库

  • git commit -m “注释”
.gitignore 文件配置

ide中通过.gitignore 文件来配置不让git同步到远程的文件设置

.gitignore

.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln


*.class
*.log
*.lock

# Package Files
*.jar
*.war
*.ear
target/

# idea
.idea/
*.iml


*velocity.log*

### STS ###
.apt_generated
.factorypath
.springBeans

### IntelliJ Idea ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/

*.log
tmp/

#rebel
*rebel.xml*

与远程配置ssh免秘钥登录

进入C:\Users\Administrator\ 中,cd ~

ssh-keygen   # 生成公钥
  • 将公钥复制到 远程工具的 公钥位置 进行验证 操作

切换分支:git checkout 分支名

新建分支并切换到新分支

  • git checkout -b
    • -d --delete:删除
    • -D --delete --force的快捷键
    • -f --force:强制
    • -m --move:移动或重命名
    • -M --move --force的快捷键
    • -r --remote:远程
    • -a --all:所有

拉取远程最新的变更到本地:git fetch

将代码还原到某个版本(包括工作目录):git reset --hard 版本号

git日志: git log --pretty=oneline

查看Git的提交(commit)记录:git log

想把远程分支最新的代码给拉下来,然后合并到本地上。我们可以用git fetchgit merge来实现,也可以通过git pull来实现。一般我用的都是git fetch+git merge,这样会更加可控一些

git 上传项目

未创建仓库

echo "# data analyze" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M master
git remote add origin https://github.com/JUN-95/recommendSystem.git
git push -u origin master
已创建仓库

git remote add origin https://github.com/JUN-95/recommendSystem.git
git branch -M master
git push -u origin master

查看分支:git branch

创建分支:git branch

切换分支:git checkout 或者git switch

创建+切换分支:git checkout -b 或者git switch -c

合并某分支到当前分支:git merge

删除分支:git branch -d

工作区:写代码工作的地方

暂存区:临时提交的地方,工作区git add到这里

本地库:历史版本存储的地方, 暂存区git commit到这里

本地库push -》 远程库

远程库 -》 clone 到本地库 -》 push 到 远程库

将远程库的修改pull到本地

在这里插入图片描述

ls -la 查看全部文件,包括隐藏目录 还有当前目录 . 和 …

ls -lA 查看全部文件,包括隐藏目录 但不显示 . 和 …

项目级别、仓库级别:仅在本地库有效

git config user.name jun

git config user.email 123@qq.com

$ cat .git/config 查看当前项目详情

系统用户级别:登录当前操作系统的用户范围

git config --global user.name jun

git config --global user.email 123@qq.com

$ cat ~/.gitconfig 查看全局配置详情

添加到暂存区:

git add

取消缓存到暂存区:

git rm --cached

添加到本地库(保存历史版本的地方):

git commit

当对文件有修改时,git status:

git restore 可以重置文件

当已经使用git add 添加文件到暂存区后,说明已经对文件进行追踪,可以使用:use “git add” and/or “git commit -a”:

no changes added to commit (use “git add” and/or “git commit -a”)

直接添加文件到本地库的注释信息:

$ git commit -m “my second commit message” [file]

日志

查看提交修改文件的日志,显示备注

git log 只显示提交到本地库的日志信息

简化日志:

git log --pretty=oneline

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YhoYUpX4-1678157925266)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1624790096307.png)]

git log --oneline

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SjXSuO9K-1678157925270)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1624790640439.png)]

查看文件修改后全部步数的指针,commit到本地库中,才会显示:

git reflog

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hANztrFA-1678157925275)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1624790221357.png)]

日志翻页

git log 默认会显示全部的详细的提交日志,提交的 ID、作者、日期、还有提交的描述。 按下 f 键可以向下翻页**,b 键可以向上翻页、 q 可以退出显示。 加上 --oneline 选项,可以显示一个简单的日志列表 **git log --oneline 。

版本切换

git reset --hard

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4GO1iJWg-1678157925280)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1624795915383.png)]

返回,回退之前的版本:

git reset --hard HEAD^

git reset --hard HEAD^^ 回退两个版本

git reset --hard HEAD~3 回退三个版本

git reset

–soft

​ 仅仅在本地库移动HEAD指针

–mixed

​ 1、在本地库移动HEAD指针

​ 2、重置暂存区

–hard

​ 1、在本地库移动HEAD指针

​ 2、重置暂存区

​ 3、重置工作区

删除文件后提交修改:

git add/rm …

删除文件后恢复:

git restore …

git commit 提交到本地库中后,可以在git reflog中查看文件删除操作对应的指针

可以通过git reset --hard <hash> 重新找回有原文件的指针

如果只在暂存区提交了,想把删除的文件找回,可以:

git reset --hard

因为git log 、git reflog 中显示的hash只会显示已经git commit 提交后的操作,如果只停在暂存区,则不会显示在log中,自然就不能通过hash进行版本控制,但是可以通过git reset --hard HEAD进行回溯版本。但是前提是当创建了文件后,要已经将创建文件的操作git commit 提交到本地库,这样才能进行版本定位,这样即使rm file 后没有提交commit 到本地库,也能通过 以上方法找回文件。

文件比较

git diff <对比的版本hash/ HEAD>

git diff HEAD 不加文件名对比已本地库中全部文件

分支

创建分支:

git branch <分支名>

查看分支:

git branch -v

切换分支:

git checkout <分支名>

合并分支:

1、切换到对应想要合并到哪个分支,比如合并到主分支master,就切换到master分支

2、使用git merge <分支名> ,就合并到master中

分支merge合并冲突问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Obu2sTCV-1678157925284)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1624805521981.png)]

1、将冲突的文件进行编辑,删除特殊符号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQj15bzC-1678157925289)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1624805727253.png)]

2、修改文件

3、git add

4、git commit -m “some commit” [不能加文件名]

远程仓库

新建远程仓库后,通过与本地库进行连接:

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

origin 是远程仓库地址的别名

git remote -v 查看远程仓库

git branch -f main main~1 # 表示将分支回退到前1次提交,这里有HEAD和main,两个指针,如果这里使用git branch -f, 则会吧HEAD 和 main两个指针都移动到前一个提交的地方,这里的效果和git reset main~1 的效果一样。

但是如果使用git revert, 会将main1拷贝一份都main后面,然后指向main1, 从而实现回到前一个提交的地方。

git rebase main ; 这里的意思是将当前的HEAD 指向的分支,合并到main上,注意,这里是将当前HEAD,拷贝一份,然后再将拷贝的HEAD合并到main上。

如果想要将当前分支push到远程,一定要先git checkout 到当前分支。再进行push。

在这里插入图片描述

git push origin main 是指,将本地的main分支,提交到远程的origin仓库中。

git push origin source:destination

1648304889176

因为你可能在 foo 分支上的工作还未完成,你也不想弄乱它 ,所以把他和origin/foo捆包在一起。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o57cpwsz-1678157925295)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648306143437.png)]

1648307051598

git-cherry-pick 是用来将所需要的分支,复制一份到HEAD下面,(需要这些结点的hash)

当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 —— 没有比这更简单的方式了。

但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-psIyV6d7-1678157925299)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648353464298.png)]

接下来这种情况也是很常见的:你之前在 newImage 分支上进行了一次提交,然后又基于它创建了 caption 分支,然后又提交了一次。

此时你想对某个以前的提交记录进行一些小小的调整。比如设计师想修改一下 newImage 中图片的分辨率,尽管那个提交记录并不是最新的了。

我们可以通过下面的方法来克服困难:

  • 先用 git rebase -i 将提交重新排序,然后把我们想要修改的提交记录挪到最前
  • 然后用 git commit --amend 来进行一些小修改
  • 接着再用 git rebase -i 来将他们调回原来的顺序
  • 最后我们把 main 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!

正如你在上一关所见到的,我们可以使用 rebase -i 对提交记录进行重新排序。只要把我们想要的提交记录挪到最前端,我们就可以很轻松的用 --amend 修改它,然后把它们重新排成我们想要的顺序。

但这样做就唯一的问题就是要进行两次排序,而这有可能造成由 rebase 而导致的冲突。下面还是看看 git cherry-pick 是怎么做的吧。

要在心里牢记 cherry-pick 可以将提交树上任何地方的提交记录取过来追加到 HEAD 上(只要不是 HEAD 上游的提交就没问题)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7BFjCSln-1678157925301)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1648354813108.png)]

git describe 的语法是:

git describe 

`` 可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会以你目前所检出的位置(HEAD)。

它输出的结果是这样的:

___g

tag 表示的是离 ref 最近的标签, numCommits 是表示这个 reftag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。

ref 提交记录上有某个标签时,则只输出标签名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值