目录

一、本地仓库的基本操作

1.1 创建git本地仓库

1.2 修改仓库内文件状态

1.3 提交缓存状态的代码到当前所在分支

1.4 已经提交了代码但是想取消提交

1.5 查看文件的状态

1.6 查看文件修改具体内容

1.7 查看历史提交信息

1.8 从远程仓库拉取/抓取数据

git fetch 远程仓库名

git pull

1.9 临时贮藏git stash

1.10 变基rebase 

二、远程仓库的操作

2.1 添加远程仓库

2.2 查看全部远程仓库

2.3 查看某个远程仓库的具体信息

2.4 删除远程仓库

2.5 修改远程仓库的别名

2.6 把本地仓库的分支代码提交到远程仓库的某个分支 

三、本地代码提交遇到无权限问题

3.1 在github生成临时token

3.2 在本地生成ssh密钥把公钥上传到github

 四、分支branch操作

4.1 分支的概念

4.2 怎么确认自己现在哪个分支上

git log

git status 

git branch --list和git branch 

git branch -a

4.3 创建新的分支

在本地创建新的分支

在远程创建分支

4.4 切换分支

4.5 新建一个分支并且切换到该分支

4.6 删除分支

删除本地仓库的分支

删除远程仓库的分支

4.7 查看全部分支的提交记录

4.8 合并到当前分支

4.9 推送分支

五、补充资料链接


一、本地仓库的基本操作

首次使用git时可以使用下面2个命令配置用户名和邮箱:

$git config --global user.name "laowang"
$git config --global user.email laowang@example.com

1.1 创建git本地仓库

创建git工程有2种方式,一种是在本地自建git仓库进行代码编写,一种是从远程拉取别人的项目到本地。

自建git仓库:

$git init

从远程拉取代码:

git clone https://github.com/HuiMengYouXian/excel_analysis.git

1.2 修改仓库内文件状态

git仓库里的每个文件都有一个状态,自建的git仓库里面的文件状态都是【未跟踪】,只有把它变为【暂存】状态后,后续生成的代码版本里才能有这个文件/目录,使用命令:

$git add <文件名>
或者
$git add -A 把文件夹里全部文件都变为【暂存】态

如果想把一个已跟踪的文件/目录变为【未跟踪】状态,使用命令:

$git rm <文件名>   

或者

$git rm --cache <文件名>  让这个文件/目录保留在代码目录里但是不被跟踪

代码修改后要把文件设置成【暂存】状态,使用命令:

$git add <文件名> 
或者 
$git add -A

如果想取消这个已修改文件的缓存状态,使用命令:

$git reset HEAD <文件名>

1.3 提交缓存状态的代码到当前所在分支

把【缓存】状态的文件提交到本地仓库当前所在的分支,使用命令:

$git commit -m "代码修改描述信息"

提交后代码版本会更新,那么在新的代码版本里这些文件又变成了【未修改】状态

 关于git commit的一些知识点:

1.4 已经提交了代码但是想取消提交

如果已经提交了代码但是想取消提交,使用命令:

$git reset head~ --soft

参数解释:

head  指的是当前的提交

head~ 指上一次提交

head~3 指的是倒数第三次的提交

--soft  表示只是撤销了git commit这个操作,之前的git add还是有效的,如果不加--soft则表示git commit和 git add 都撤销了

虽然执行git reset head~ --soft,但是本地修改过的代码还是在的,可以继续编辑、暂存和提交

--hard 使用这个参数就表示撤销了git add 和git commit,而且本地修改过的代码也被删除了-----不要用这个参数

1.5 查看文件的状态

怎么查看文件的状态,使用命令:

$git status 查看哪些文件没有暂存?哪些文件已暂存但是没有提交?我目前是在哪个分支下呢?

没有暂存的文件会用红色字体显示,已暂存但没提交的文件会用绿色字体显示

对于没有暂存的文件可以使用命令:

$git commit -a -m "代码修改描述信息" 直接进行提交
也可以写成
$git commit -am "代码修改描述信息"

1.6 查看文件修改具体内容

当文件修改后未被暂存(没有执行git add),如果想看下文件具体被修改的内容,使用命令:

$git diff

1.7 查看历史提交信息

查看历史提交信息,使用命令:

$git log
或者
$git log --pretty=oneline  把每条提交信息一行展示
或者
$git log --pretty=format:"%h-%an,%ar:%s"   按照指定格式输出提交历史信息
或者
$git log --graph  用图表的方式输出历史提交信息

git log命令打印如下内容:

git log --pretty=oneline打印如下内容

 git log --pretty=format:"%h-%an,%ad:$s"

提交信息里面的commit值是唯一的

1.8 从远程仓库拉取/抓取数据

git fetch 远程仓库名

作用是从远程获取代码库

git fetch 远程仓库别名  ————> 从远程仓库拉取我本地仓库没有的数据

git merge 远程仓库别名/本地仓库的分支名  ————> 将服务器上的任何更新合并到本地仓库的指定分支

git pull

用于从远程获取代码并合并本地某个分支

git pull <远程仓库别名> <远程分支名>:<本地分支名>

如果远程分支是与本地当前所在分支合并,则可写成:

git pull <远程仓库别名> <远程分支名>

1.9 临时贮藏git stash

git stash或者git stash push

适用于你代码写到一半,但是需要切换到别的分支,比如正在开发需求,临时需要修个bug,此时不建议使用git commit -m "说明信息"先进行提交。

上面内容是我修改了test.md,使用git stash后把修改的内容暂时存储了,如果此时你打开test.md会发现里面没有刚才改动的内容,这时可以正常去切换分支了。 

 当你修复完bug需要回到原来的分支继续开发时,使用命令:git stash apply恢复之前的改动即可,可以看到我之前写的内容恢复了

 如果执行git stash后没有执行git stash apply,就直接去修改文件,修改后又执行git stash进行第二次贮藏,或者后续又多次修改、贮藏,且都没有执行恢复操作,可以通过git stash list查看贮藏的内容列表,之后可以通过git stash apply stash@{数字}来选择恢复哪次的修改。

最后一个stash@{3}是第一次修改后贮藏的内容,stash@{2}表示第二次修改后贮藏的内容,以此类推,比如你要恢复第一次修改的内容,执行git stash apply stash@{3}即可,可以check下test.md的内容恢复是否正确

1.10 变基rebase 

概念解释:分别从master分支拉取的代码,A分支和B分支开发不同的功能,提交的时候希望一次提交2个分支内容,就可以把一个分支搬到另一个分支上:

git checkout B

git rebase A -------->这样git就会把B分支上的修改(如果代码有冲突需要解决)移到A分支上

但是这个操作的前提是你没有把你的分支提交到远程仓库。

git rebase -i head~3    对前3次的提交进行修改   -------->这个比较复杂 最好别用

二、远程仓库的操作

2.1 添加远程仓库

添加一个新的远程git仓库,起个别名为origin

git remote add origin 远程存储库的url

2.2 查看全部远程仓库

查看远程所有的仓库,使用命令:

git remote -v   可以显示远程仓库的名字和它的具体地址
git remote  只能展示远程仓库的名字

2.3 查看某个远程仓库的具体信息

查看某个远程仓库的具体信息,可以使用命令:git remote show 远程仓库名

会显示该仓库的具体地址,默认分支,全部分支以及

在特定的分支上执行 git push 会自动地推送到哪一个远程分支。 它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了,还有当你执行 git pull 时哪些分支会自动合并

2.4 删除远程仓库

删除远程仓库:git remote -rm 远程仓库名

2.5 修改远程仓库的别名

修改远程仓库的 别名,使用命令:

git remote rename 旧别名  新别名

2.6 把本地仓库的分支代码提交到远程仓库的某个分支 

把本地的master提交到远程testHappy仓库的master分支,使用命令:

git status  先看下自己是不是在master分支里

git push <远程仓库别名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程仓库别名> <本地分支名>

git push testHappy master:master
或者
git push testHappy master

三、本地代码提交遇到无权限问题

本地提交代码到远程仓库时,如果使用github的用户名+登录密码的方式,目前是不支持了,会有如下报错:

 有2种解决方法:

3.1 在github生成临时token

在github生成临时token做为代码提交时的密码,生成步骤如下:

 

3.2 在本地生成ssh密钥把公钥上传到github

在本地生成ssh密钥,把公钥上传到github,以后拉取远程代码使用ssh方式即可

新建文件夹 ssh_test,使用命令:

复制公钥到github

 四、分支branch操作

4.1 分支的概念

也可以把分支理解成一个指向提交对象的指针,如下:

初始化本地仓库的时候会自动创建一个master分支,每次 代码修改后都会git commit 到本地的master分支,之后再git push到远程仓库,上面都有例子。

在日常项目开发中,代码修改会在feature分支,可能存在多个feature分支,修改完成后提交到develop分支供qa测试,测试没问题后会新建一个release分支进行发布,发布后验证完毕没问题后就可以把release分钟的代码合并到master分支。hot fixes分支一般用于bug修复。 

4.2 怎么确认自己现在哪个分支上

git log

git log 可以确认本地仓库当前所在分支

绿色表示本地仓库当前所在的分支,红色表示这个分支提交到的远程仓库和分支,HEAD就表示仓库的默认分支

git status 

git branch --list和git branch 

git branch --list和git branch  可以列出本地仓库全部的分支

  *号后面的就是你当前所在的分支

git branch -a

git branch -a 可以列出本地和远程仓库的全部分支

4.3 创建新的分支

在本地创建新的分支

git branch feature1 可以在本地创建新的分支

在远程创建分支

想在远程创建分支,可以通过git push代码提交的方式:

git push 远程仓库名 本地分支名 ——> 在远程仓库创建与本地仓库同名分支并把分支代码提交上去

git push 远程仓库名 本地仓库名:远程仓库分支名 ——> 在远程仓库创建新的分支名,并把代码提交上去

4.4 切换分支

git checkout feature1 在本地切换分支

4.5 新建一个分支并且切换到该分支

git checkout -b feature2

4.6 删除分支

删除本地仓库的分支

删除本地仓库的分支,使用命令:git branch -d <分支名字>

删除远程仓库的分支

 删除远程仓库的分支,需要使用git push的方式:

git push 远程仓库名 --delete 要删除的分支名

​​​​​​​  

4.7 查看全部分支的提交记录

git log --all

 使用上面的命令查看全部分支的提交历史记录,展示的不是很好看,可以使用git log --all --graph

4.8 合并到当前分支

切换到master分支,之后把feature1分支的内容合并到master分支上

验证下master分支是否新增了test.md文件

 

 

现在我想把feature2也合并到master分支

此时出现的代码冲突;

 因为feature1和feature2都新增了test.md并书写了不同的内容,我们可以看下具体的内容冲突是什么:打开test.md   

vi test.md

 我们需求确认是保留谁里面的内容,把不要的那部分直接删除即可:

 保存退出test.md即可。

 

4.9 推送分支

git push 远程仓库名 本地仓库分支名:远程分支名

git push testHappy master:master
如果本地分支名和远程分支名相同,则可以写成:
git push testHappy master

五、补充资料链接

git官方:Git - Book

github: 快速入门 - GitHub 文档

vscode:Source Control with Git in Visual Studio Code

idea:Set up a Git repository | IntelliJ IDEA Documentation

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐