GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记

这篇具有很好参考价值的文章主要介绍了GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. GIT安装和配置

1. 本体和插件下载

官网: GIT Download下载 安装过程中一路默认即可。
终端输入

git -v

查看git安装是否成功。

(可选)然后下载一个Git状态显示到powershell中的非常好用插件,posh-Git(windows):
用管理员身份打开powershell,之后输入

Set-ExecutionPolicy RemoteSigned #一路 Yes
Install-Module -Name posh-git -Scope CurrentUser

重启powershell

Import-Module posh-git

初始化仓库的文件位置会加一个GIT位置就对了。
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
注意要初始化仓库之后才有这个main标志。

想要每次重启都不用再输入

Import-Module posh-git

就如下添加一个powershell配置文件,我们一般开shell输入的都是临时变量,不会保存,这个文件的作用是每次打开shell都会执行一遍其中代码。

$profile # 显示 Windows PowerShell 配置文件的路径
test-path $profile # 确定是否已经在系统上创建了 Windows PowerShell 配置文件,如果存在配置文件,则响应为 True:否则响应为 False。
new-item -path $profile -itemtype file -force # 创建 Windows PowerShell 配置文件

之后按照路径打开该文件,把代码添加进去。

Import-Module posh-git

其中:

[master +1 ~0 -0 !]
这是Git的分支状态指示符,提供了关于当前Git仓库状态的一些信息:
master:这是当前所在的分支。
+1:表示有一个文件被添加到了暂存区。
~0:表示没有文件被修改但未暂存。
-0:表示没有文件被删除但未暂存。
!:表示有文件被修改但未追踪。

2. 配置

# 配置用户名和邮箱
git config --global user.name "Winston" 
git config --global user.email "你的邮箱"

二. 新建仓库

1. 本地新建仓库

# cd到需要创建仓库的位置
git init
ls -h  # 应该有一个隐藏的.git文件夹
mac命令,windows手动删吧:\rm -rf .git # 删除仓库 注意.git就是仓库的主要文件,删除就相当于删除仓库配置
git init my_repo # 在该文件夹下创建一个新文件夹,并初始化它成为仓库

2. Clone远端仓库

# cd到需要创建仓库的位置
git clone 仓库网址
ls -h  # 应该有一个隐藏的.git文件夹

三. 工作区域和文件状态

1. 工作区域介绍

工作区 暂存区 本地仓库 远端仓库

  1. 工作区->暂存区
git add
  1. 暂存区->本地仓库
git commit
  1. 本地仓库->远端仓库
git push

2. 文件状态介绍

GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习

3. Clone远端仓库

# cd到需要创建仓库的位置
git clone 仓库网址

四. 添加和提交文件

# 查看仓库处在哪个分支,仓库下有那些文件,和文件的状态
git status # 其中 UIntracked file就是未被跟踪的文件,显示为红色

git add . # 把当前文件夹下的所有文件都加入到暂存区,等待后续操作。这里的.表示当前目录。
git add *.txt # 把所有txt文件都加入到暂存区
git add file.txt # 加入之后会有提示说Changes to be committed指的是有暂存区的文件没有提交到本地仓库,处于已修改状态。
git rm --cached file.txt # 把文件从暂存区中移除
git commit -m '提交信息' # 把暂存区的文件提交到本地仓库
git commit -a -m "提交信息"  # 一行命令执行添加暂存和提交, 只对已经添加过的文件生效,新文件不能用这个命令
git log # 查看提交记录和提交信息
git log --oneline # 查看简洁提交记录

五. 回退版本

git reset --soft 版本号 # 回退到某一个版本,并且保留工作区和暂存区的所有修改内容
git reset --hard 版本号 # 回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容
git reset --mixed 版本号 # 回退到某一个版本,只保留工作区修改内容,丢弃暂存区的修改内容 default 参数
# 回退实例
git reset --soft 5af90b8 # 软回退到5af90b8版本
git reset --hard HEAD^  # 硬回退到上一版本
  1. soft参数回退之后,HEAD指针指向回退的版本,提交历史变少,工作区和暂存区内容都多于本地仓库,相当于只是把commit操作撤回了。并且
git reset --soft HEAD^
git status # 提示有需要提交的文件
ls # 文件与回退之前一致
git ls-files # 查看暂存区文件,与回退之前一致
  1. hard参数回退之后,HEAD指针指向回退的版本,提交历史变少,工作区和暂存区内容都等于本地仓库,相当于立刻回到之前的状态,完全扔掉两次提交之间的任何修改。并且
git reset --soft HEAD^
git status # 没有工作要做
ls # 文件比回退之前少了,与回退到的那个版本当时一样多
git ls-files # 查看暂存区文件,文件比回退之前少了,与回退到的那个版本当时一样多
  1. mix参数回退之后,HEAD指针指向回退的版本,提交历史变少,工作区内容多于本地仓库而暂存区一样多,相当于只把两次之间的差异保留在了工作区。并且
git status # 提示有未跟踪的文件
ls # 文件与回退之前一致
git ls-files # 查看暂存区文件,文件比回退之前少了,与回退到的那个版本当时一样多

这里mixedsoft有一个用法就是,多次提交想合并的时候,回退到想要保留为上一个版本的那一版,然后重新提交,这样即保留了所有修改,又能合并修改。

另外hard参数回退会删除所有相关修改,谨慎使用,但其实我们仍然可以恢复这些修改,只能说GIT牛逼。毕竟文件应该没有多大,修改也不会幅度太大,因此存储的占用应该保留上一个版本都不是问题。

使用:

git reflog # 查看操作的历史记录,查看想要回溯的GIT版本
git reset --n hard 想要回溯的GIT版本 # 回到想要回溯的GIT版本

六. 查看差异

通过 git diff 查看工作区,暂存区,本地仓库之间差异。还可以查看文件在两个特定版本之间的差异。或者文件在两个分支之间的差异。

git diff # 默认比较工作区和暂存区之间的差异内容 红色的文字是删除的内容,绿色是新加的内容
git diff HEAD # 比较工作区和版本库之间的差异内容
git diff --cached # 比较暂存区和版本库之间的差异内容
git diff 第一个版本id 第二个版本id # 比较两个版本之间的差异内容
git diff 5aF90qb HEAD # 比较5aF90qb版本和现版本的差异
git diff 5aF90qb HEAD file.txt # 只查看这个文件的差异内容
git diff 分支1 分支2 # 查看两个分支的差异

可以用HEAD表示当前版本,HEAD~ / HEAD^表示上一个版本, HEAD~3表示往前数三个版本。
HEAD和ID的前后顺序不同,最后产生的结果就不同,我习惯后面写靠后的版本。

七. 删除文件

方法一:

rm file.txt # 也可以手动删除本地文件
git status # 提示我们 deleted
git add . # 删除文件也是通过add进行的,这里也可以用file.txt代替.
git commit -m "提交信息"

这个方法会麻烦一些,git提供了另一种方法。

方法二:

git rm file.txt # 同时在工作区和暂存区删除该文件
git commit -m "提交信息"

若想只删除暂存区文件,保留本地文件,加--cached参数

git rm --cached file.txt # 若想只删除暂存区文件,保留本地文件,加--cached参数

八. 忽略文件

通过.gitignore文件忽略文件,直接在文件里写文件名。
忽略文件的类型:

  1. 系统或软件自动生成的文件
  2. 中间文件(由另一个文件生成的文件)
  3. 日志文件,缓存文件,临时文件等
  4. 敏感信息文件

可以用通配符忽略所有的log文件:*.log
可以忽略文件夹:temp/
.gitignore文件生效的前提是忽略的这个文件不能是已经被添加到版本库中的文件

九. 远程仓库配置

  1. 使用GitHub管理代码,在GitHub官网注册并登录账号。+号创建仓库。
  2. 配置SSH秘钥:
    参考windows秘钥配置,打开Git Bash
# 默认在根目录下
ssh-keygen -t rsa -b 4096 # 之后一直回车一路到底。

找到目录C:\Users\Winston\.ssh(用自己的用户名替换Winston)中的私钥(id_rsa)和公钥(id_rsa.pub)文件。
GitHub中点击头像->Settings->SSH and GPG keys->New SSH key
id_rsa.pub中的公钥复制到Key中,新建Key
如果成功应该在如下Git Bash中输入ssh -T git@github.com后输出successfully
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习

这里的ssh应该是一个私钥加密公钥解密的过程,目的是确定操作者是你。
而公钥加密私钥解密的过程是为了不让别人看到。

十. 本地仓库和远程仓库交互

1. 本地仓库上传 push

git remote add 仓库名 仓库地址 # 将本地仓库连接到远程仓库
git remote -v # 查看本地仓库对应的远程仓库别名和地址
git branch -M main # 指定分支名称为main
git push -u origin main:main # -u表示初始化push,将本地的main分支和远程origin仓库main分支进行关联,如果两者分支名相同,写一个就行
git push origin main:main # 将本地的main分支和远程origin仓库main分支进行关联,如果两者分支名相同,写一个就行

-u这个标志设置跟踪信息。使用-ugit会记住远程仓库和分支的信息,这样以后你就可以简单地运行git push而不必指定分支和远程仓库。

git push # 将本地的main分支推送到远程origin仓库main分支
git push origin main:main # 当然你也可以写全,这一行与上一行是一个意思,因为初始化时已经进行了指定分支和仓库

2. 远端仓库下载 pull

 # 如果不写默认仓库名和分支名,默认拉取的是origin仓库的main分支
git pull origin main:main # 将本地的main分支和远程仓库main分支进行关联,如果两者分支名相同,写一个就行         

需要注意git会对pull下来的远程仓库文件和本地文件进行合并,如果有冲突就不会合并,会要求解决冲突。

git fetch # 另一种拉取方式,但是不会合并,需要我们手动合并。

十一. 分支基本操作

1. 创建、切换和删除分支

git branch # 查看仓库中的所有分支
git branch winston # 创建新的分支
git switch winston # 切换到新的分支
git branch -d winston # 删除分支
git checkout -b winston 想要恢复的winston分支提交ID  # 恢复分支
git log --oneline --graph --decorate --all # 查看提交ID

2. 合并分支

当前所在分支是合并之后的目标分支,命令之后的分支是需要合并到当前分支的分支。

git switch main # 切换到目标分支
git merge winston # 将winston分支合并到main分支
git log --graph --oneline --decorate --all # 查看分支图,在图形化界面上显示更为美观

分支合并之后还是存在的,如在main中合并winstonwinston仍存在,内容和合并前一致,如果不需要可以手工删除。

git branch -d winston # 删除这个分支,-d表示这个分支已经完成了合并,没有被合并的话就会被拒绝
git branch -D winston # 强制删除这个分支,即使未合并

合并分支后日志里的显示是两个分支的所有日志按照时间顺序排序生成的新日志。

GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习

3. 解决冲突

如果两个版本改变了同一个文件的同一行代码,就需要解决冲突。(实测如果winston在第3行末尾追加了代码,main添加了一行代码作为第4行,合并时也会出现冲突)

git switch main # 切换到目标分支
git merge winston # 将winston分支合并到main分支

git报错说有冲突。

git status # 冲突文件列表
git diff # 冲突的具体内容
  1. 如果想要解决冲突并继续合并就:

文件中等号上面部分是main分支的修改内容,下面是winston分支的修改内容。接下来我们编辑这个加入了等号和箭头的文件。

vi file.txt
git add .
git commit -m "merge conflict"
  1. 如果想要终止合并就:
git merge --abort

十二. 变基Rebase(慎用,逻辑比较复杂)

rebase命令和merge有一定相似度,merge是合并两个分支,rebase是变基如下图:

  1. merge
    GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
  2. rebase变基最终结果都是一条直线,有如下两种情况(顺序不同):
git switch dev
git rebase main # 将dev分支以main分支为基
变基前 变基后
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习 GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
git switch main
git rebase dev # 将main分支以dev分支为基
变基前 变基后
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习 GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习

最主要的区别有两点:

  1. rebase变基不像merge按照时间顺序对多次提交进行合并,而是直接把一条分支的提交记录嫁接到另一条分支上。
  2. rebase不会产生额外的提交记录,形成线性历史;而merge会产生一个合并的提交记录,分支图复杂。

十三. 在一个分支上合并多次提交

这里我们在分支r上进行了三次提交
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
需要将三次提交的文件内容保留,而提交记录合并,并且把提交信息整合成一个,用如下三个命令是等价的:

git rebase -i 6b837bd8e38c02e60f5bc2838c6dd5a82e73364f # -i后面跟的是不需要合并的版本号
git rebase -i HEAD~3 # 合并近三次提交(包括HEAD指向的最近提交)
git rebase -i HEAD^^^ # 合并近三次提交(包括HEAD指向的最近提交)

GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
之后单击i按键,进入编辑模式,注意到有一行注释写的是s, squash <commit> = use commit, but meld into previous commit,意思是保留那一次提交,但是融入到之前的提交中,因此我们只保留第一个pick,后面的都改写成s

然后我们ESC退出编辑模式,shift + :输入wq回车保存并退出,就会出现如下界面:
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
我们随便选择一行作为最后提交信息的输出行,其余的都打上#
GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习
Successfully rebased and updated refs/heads/r.

最后用git push -f命令强制推送到远端就可以了。

git push -f

GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记,git,github,学习

十四. 一些好用的图形化Git软件可以简化命令行操作

  1. VS code中就有源代码管理器,可以为我们提供快速的文件添加,提交,上传的图形化按钮。
  2. 想要实时观察git工作树,可以在VS code中下载插件Gitlens,提供了很多git有关功能。

十五. 补充(更新中)一些常用cmd命令

  1. win11命令行
mv file.txt file1.txt # 文件改名
del 文件名 # 删除文件
rmdir 文件夹名 # 删除空文件夹
rm -r # 删除非空文件夹
alias graph="git log --graph --oneline --decorate --all" # 将命令写成别名graph,建议写在git配置文件中

全文参考:一小时GIT教程文章来源地址https://www.toymoban.com/news/detail-860919.html

到了这里,关于GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git 基本操作——将本地代码提交至远程仓库的过程

    1、初始化一个新的仓库 2、添加所有文件到暂存区 3、提交所有更改 4、配置远程仓库地址, 该操作将会为名为 origin 的远程仓库设置为 remote-repository-url 5、推送代码到远程仓库 请注意,如果远程仓库中已经存在一个名为 master 的分支,并且该分支的历史记录与本地仓库的历史

    2024年02月02日
    浏览(66)
  • 使用Git在本地创建一个仓库并将其推送到GitHub

     前记: git svn sourcetree gitee github gitlab gitblit gitbucket gitolite gogs 版本控制 | 仓库管理 ---- 系列工程笔记. Platform:Windows 10 Git version:git version 2.32.0.windows.1 Function: 使用Git在本地创建一个仓库并将其推送到GitHub 目录 一. 在本地创建一个GitHub仓库并将其推送到GitHub的步骤如下:

    2024年02月07日
    浏览(52)
  • 【git常用操作】git的分支创建、切换、提交与关联分支操作

    下拉代码建议用ssh密钥方式下拉 ,配置好之后后续操作不需要输入密码等权限验证操作,很方便。 查看分支: 创建本地分支: 切换本地分支: 创建+切换分支: 将新分支推送到github: 建议使用IDEA集成git来完成下列操作 ,如果使用上面提到的ssh密钥方式下拉工程的话会方便

    2024年02月15日
    浏览(50)
  • Git仓库的创建、常用命令、如何在 Git 中忽略文件提交以及 .gitignore 文件的作用和相关内容

    Git 仓库是用来存储版本控制信息的地方,为我们提供了快速便捷的代码管理方式。它可以包含文件、文件夹、历史记录、元数据等。在 Git 中,仓库通常分为两种:本地仓库和远程仓库。 如果你想分享你的代码库,并且希望团队中的其他成员可以跟踪你的进度和变化,你可以

    2024年02月02日
    浏览(47)
  • Git的基本操作(安装Git,创建本地仓库,配置Git,添加、修改、回退、撤销修改、删除文件)

    Git 是开放源代码的代码托管⼯具,最早是在Linux下开发的。开始也只能应⽤于Linux平台,后⾯慢慢的被移植到windows下,现在,Git可以在Linux、Unix、Mac和Windows这⼏⼤平台上正常运⾏了。 如果你的的平台是centos,安装git相当简单,以我的centos7.6为例: 我们还可以用下面的指令来

    2024年03月28日
    浏览(68)
  • 使用Git将本地文件提交到远程仓库 使用Git将本地文件提交到远程仓库

    使用Git将本地文件提交到远程仓库 现在要将本地代码推到git远程仓库保存,可以提交和拉取操作 本地项目已经创建 git远程仓库已经建(github、gitee都行) 操作如下: 1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2、把文件添加到版本库中,使

    2024年02月13日
    浏览(55)
  • 使用GitHub:创建仓库、提交更改、Fork一个仓库、同步Fork仓库。

    1、创建仓库 登录后——左上角“New”——Repository name(写入自己项目名称)——选中“Add a README file”——点击Create repository。 2、提交更改(提交一个对README文件的修改) (1)找到创建仓库的文件列表,单击README.md文件,点击编辑。输入用户所添加的信息:*。 (2)点击

    2024年02月12日
    浏览(52)
  • 提交本地代码到远程仓库(git)

    首次提交: 1、通过命令  git init  把这个目录变成git可以管理的仓库 git init 2、 把文件添加到版本库中 --  通过命令  git add .  /  git add -A  将所有文件添加到暂存区,注意后面的小数点“.”和“-A”,意思是为添加文件夹下的所有文件,如果需添加指定文件夹 git add 后面直

    2024年02月16日
    浏览(57)
  • 【Git】初始化仓库配置与本地仓库提交流程

    目录 一、仓库配置邮箱与用户名 二、本地仓库提交流程 【Git】Linux服务器Centos环境下安装Git与创建本地仓库_centos git仓库搭建_1373i的博客-CSDN博客 https://blog.csdn.net/qq_61903414/article/details/131260033?spm=1001.2014.3001.5501 在之前的文章里我们学习了如何在centos系统上安装git以及使用gi

    2024年02月15日
    浏览(51)
  • GitHub 创建 Pull Request 将代码提交至别人的仓库

    1.1. About forks (关于 forks) A fork is a new repository that shares code and visibility settings with the original upstream repository. A fork 是一个新的存储库,它与原 upstream 存储库共享代码和可见性设置。 Forks let you make changes to a project without affecting the original repository, also known as the upstream repository. Aft

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包