git学习

本文详细介绍了如何在MacOSX上安装和配置Git,从基本使用(初始化仓库、添加文件、提交、撤销操作)到远程协作、分支管理、合并和版本回退,以及配置gitignore和常用命令。适合Git初学者和进阶者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 简介
Git是目前世界上最先进的分布式版本控制系统(没有之一)。能够跟踪并管理文件的修改,还可以同事协作编辑。

2 在Mac OS X上安装Git
安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:https://brew.sh/index_zh-cn

3 简单使用
step1:

使用cd命令到达你想要备份的文件夹,运行git init命令,该命令的作用是用来初始化一个仓库,它会在当前文件夹生成一个.git隐藏文件,我们以后每个版本的作品,都放在了这个.git文件里。

step2:

选择你要提交的文件:git add index.html,将这个文件添加到代提交的状态,add后面可以是相对路径,也可以是绝对路径。当我们提交了上面的文件后,可以在vscode中看到这个文件后面有个图标A,即表示被添加了。(U表示un-trap,未被追踪的)

git status可以查看文件是否添加成功。

step3:

git commit -m xxx:xxx表示的就是你提交的理由,就相当于给这次的提交做一个标记,方便以后回顾。

⚠️注意:每次对文件进行修改并想提交的时候,都要运行git add xxx来添加。

git log可以查看自己的提交历史。(运行了这个命令,会跳出来提交过的版本,每个版本的第一行,都有一行提交号)

git会对提交的文件重复利用,如果提交的文件里有和之前的版本有重复的,那么重复的数据只会保存一次!!!

git ls -al//查看所有文件,包含隐藏的文件
cd .git//进入到.git文件
cat config//查看文件配置
里面会有仓库、分支等信息~
pwd//查看当前目录
vi test.txt//编辑这个文件,后输入i进行编辑/输入shift+a切换到行尾进入编辑模式
git checkout – test.txt//将文件所有的修改都丢弃
获得版本库:

~git init :初始化仓库

~git clone :

版本管理:

~git add : 将文件提交到暂存区

git add . : 将所有未加入工作区的文件加入工作区
~git commit : 将文件提交到对象库(每一次提交都要有注释)

git的提交id(commit id)是一个摘要值,这个摘要值实际上是个sha1(算法)计算出来的

git commit -m ‘second commit’ 添加注释并提交
~git rm : 删除某个文件(删除一个文件+将删除的文件纳入暂存区)【rm命令直接将文件删除了 没有将文件加入暂存区】

若想恢复被删除的文件,需要进行两个动作:

a. git reset HEAD test.txt : 将待删除的文件从暂存区恢复到工作区

b. git checkout –- text.txt : 将工作区中的修改丢弃掉

git rm --cached(?单词是否写正确) test.txt : 将某个文件从暂存区回退到工作区(回退到上一操作)
1.git rm test.txt :将文件删除
2.git reset HEAD test.txt : 还原文件
3.git checkout –- test.txt : 上面的三个操作对应误删文件后进行恢复
查看信息:

~git help :

~git log : 查看提交记录

~git log --graph : 以图形化的方式查看提交记录

~git diff : 查看文件差别

~git status : 查看文件状态

远程协作:

~git pull : 从远程版本库拉取文件到本地

~git push : 将本地版本内容推送到远程

配置在.gitignore文件中的文件都会被git给忽略。

分支操作:
HEAD : 指向当前分支;

master : 指向提交。

git branch : 查看当前版本库中的所有分支
git branch new_branch : 创建新分支(在哪个分支上创建,就和哪个分支的信息完全一样)
git checkout new_branch : 切换到新分支
git branch -d new_branch : 删除new_branch分支(需要改到其他分支才可以删除当前分支)
git checkout -b new_branch : 创建并切换到新分支
git branch -v : 显示一条最新的提交记录
合并分支:
git merge new_branch : (当前分支是master)将new_branch上的修改合并到master分支上
git merge dev : 向前合并(dev是已提交的版本)【当前是master分支,master没有做任何提交,dev分支做了一次提交】
版本回退:
git reset --hard HEAD^ :回退到上一版本
git reset --hard HEAD^^ : 回退到上上一版本
git reset --hard [版本号] :回退到确定版本号的版本
git reset --hard HEAD~1 :回退到当前版本的上一版本
git reset --hard HEAD~2 :回退到当前版本的上两版本
git reflog : 记录的是操作日志(与git log的区别是,log只打印当前版本以前的日志信息)
远程操作:
git remote add origin shh地址 :将本地仓库与远程仓库进行关联
git remote show origin : 查看远程仓库信息
git push -u origin master : 本地和远程做一次关联

git branch //查看分支
git checkout -b dev //创建并切换分支
vi code.txt
git add code.txt
git commit -m ‘dev分支提交’
git log --pretty=online
git checkout master //切换分支
git merge dev //合并的快速分支(合并分支到当前分支)
git branch -d dev //删除该分支

本地创建仓库并发布到git仓库

mkdir hello #本地初始化一个reponsitory
cd hello
git init #把该目录变成git可以管理的仓库
#本库中添加readme.md文件
git add readme.md #把文件添加到工作区
git commit -m “readme.md for this repository.” #把文件提交到仓库
#在远程的git仓库手动创建一个与本地同名的reponsitory,不要附加其他的
#关联本地创建的reponsitory和远程同名的远程reponsitory
git remote add origin ssh://git@git.sankuai.com/~maqian14/helloworld.git #其中origin是远程仓库的别名
#执行推送命令,完成远程Git库的初始化,注意命令行中的-u参数,在推送成功后自动建立本地分支与远程版本库分支的追踪。
git push -u origin master #(-u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push)

查看提交历史

$ git log #显示从最近到最远的提交记录,以便确定要回退到哪个版本
##如果嫌输出信息太多,看得眼花缭乱的,可以试试加上以下参数
$ git log --pretty=oneline
$ git log -p #查看每次提交的内容差异
$ git log -p “filename” #查看指定文件的提交历史
$ git log -p - #查看最近n条记录

版本回退

##在git中,HEAD表示当前版本,HEAD表示上一版本,HEAD^表示上上版本,当然,往上200个版本可以写成HEAD~200
$ git reset --hard HEAD^ #回退到上一版本
$ git reset --hard 1094a #1094a为需要回退版本的前几位id信息
$ git reflog #查看历史记录,可以回到未来的某一版本

说明:

–hard commit_id == 将代码回退到commit_id版本,并且add到暂存区和commit到仓库的代码都会被撤销清空,保持和commit_id版本一模一样的记录
–soft commit_id == 将代码回退到commit_id版本,会将commit到仓库的代码放回到暂存区中,暂存区中的文件不会发生变化(相当于–mixed 进行 git add 操作==将代码暂存到 status 中
–mixed commit_id == 将代码回退到commit_id版本,会将暂存区和提交到仓库的代码都放回到工作区(git reset commit_id == git reset --mixed commit_id

工作区和暂存区

$ git status #查看状态
工作区就是电脑里能看到的目录,比如某个文件夹。工作区有一个隐藏的.git目录,它不算工作区,而是git的版本库。git的版本库里存了很多东西,其中最重要的就是叫做stage(index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD,

我们把文件往git里添加的时候是分两步的:

第一步:git add实际上是把文件添加到暂存区;

第二步:git commit是把暂存区的内容提交到当前分支。

可以简单的理解为:需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

撤销修改

$ git checkout – readme.txt #撤销文件readme.txt在工作区的修改,这里有两种情况:自修改后没有被放到暂存区,撤销修改就是回到和版本库一样的状态;放到暂存区之后进行了修改,撤销修改就是回到添加到暂存区之后的状态。
$ git reset HEAD readme.txt #把暂存区的修改回退到工作区
##若已经提交了修改到版本库,可以进行版本回退,前提是没有推送到远程库。

删除文件

$ rm test.txt #将文件test.txt从工作区中删除
$ git rm test.txt
$ git commit -m “remove test.txt” #此时,文件test.txt从版本库中删除了
$ rm -rf src#删除整个src文件

移动文件

$ git mv file_from file_to #移动文件
##相当于以下三行操作
$ mv README.md README
$ git rm README.md
$ git add README

远程相关操作

$ git remote add #添加一个远程git仓库并命名
$ git fetch [remote-name] #从远程仓库中获得数据
$ git push [remote-name] [branch-name] #推送到远程仓库 将branch分支推送到remote服务器
$ git remote show [remote-name] #查看某个远程仓库
$ git remote -v #显示所有远程仓库
$ git pull [remote-name] [branch-name] # 取回远程仓库的变化,并与本地分支合并
创建分支

$ git branch testing #创建一个testing分支,但是指针HEAD还是指向master
$ git checkout testing #分支切换,此时HEAD指针指向teating
$ vim test.rb
$ git commit -a -m ‘made a change’#提交test.rb文件之后,HEAD头指针仍指向testing,此时如图三所示

具体可参考:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B

克隆现有的仓库:

$ git clone [url] #从某地克隆一个仓库放到当前目录下,当前目录下会生成一个.git文件,存放克隆的数据
$ git clone https://git.sankuai.com/libgit2/libgit2 生成的.git文件名称为:libgit2.git
$ git clone https://git.sankuai.com/libgit2/libgit2 mylibgit 将其重命名成:mylibgit2.git

其他参考:
Git的撤销与回滚:https://blog.youkuaiyun.com/asoar/article/details/84111841

Git创建与合并分支:https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值