GIT你还没攻破?请看这里

本文对比了Git和SVN的核心区别,Git为分布式版本控制系统,SVN为集中式。详述了Git的配置、本地和远程仓库操作、分支与标签管理等关键功能。

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

git和svn对比

  • 最核心的区别就是Git是分布式的, SVN是集中式的。SVN必须有一个服务器版本库就放在一个中央服务器。所有开发人员都是与服务器进行交互的。一般的开发流程就是干活时候从中央服务器得到最新的版本,然后干活,干完后需药把自己做的工作推送到中央服务器。
  • Git不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用Git并且有个中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的PC是一样的。我们可以把它当做一个开发者的pc就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不过“交换”修改不方便而已。所以git的开发流程是工作的时候不需要联网了,因为版本库就在你的电脑上。比如你在自己的电脑上修改了文件A,你同事也在她的电脑上修改了文件A,这时,你们之间只需要把自己的修改推送给对方。就可以看到了对方的修改了。

git的一些配置

git官网:https://git-scm.com/downloads

配置个人用户名和email:

$ git config --global user.name "Your Name"

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

注意:git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址

本地仓库:

  1. 新建文件夹
  2. 在文件夹中cmd 使用 git init 初始化构建一个仓库(版本库),然后会生成.git目录。
  3. 提交文件到仓库(版本库):
  4. git add 文件名 告诉git,把文件添加到仓库,可以添加多个文件,使用空格分离,例:
  5. git add a.txt b.txt c.txt或者git add .(添加当前文件夹下的所有文件)
  6. git commit -m "xxxx"(可选) 告诉git,把文件提交到本地仓库。
  7. git status 查看当前仓库的状态
  8. git diff 文件名 查看文件被修改的具体内容

版本回退:

  1. git log 查看所有提交版本的信息 参数 --pretty=oneline 只显示每一个版本的第一行(commit id)
  2. git reset --hard HEAD^ 回退一个版本,HEAD后面有几个^,就是回退几个版本。
  3. 同2一样,可以使用 git reset --hard (commit id)可以回到指定版本。
  4. git reflog 可以查看记录的每一次命令。(如 回退一个版本后,最新的那个是看不到的,但是可以通过此命令看到最新的那个的记录 从而找到commit id)
  5. git checkout -- 文件名 丢弃工作区的修改
  6. 一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  7. 一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
  8. 总之,就是让这个文件回到最近一次git commit或git add时的状态。
  9. git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
  10. 6.git reset HEAD 文件名 可以把暂存区的修改撤销,重新放回工作区(一般情况和5 联合使用)
  11. 7.git rm 文件名 删除版本库中的文件。然后Git commit -m “信息” 就更新版本库了。

远程仓库:

一,先创建SSH Key:

  1. ssh-keygen -t rsa -C "youremail@example.com"
  2. 登陆GitHub,打开“Account settings”,“SSH Keys”页面:
  3. 然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key

二,本地仓库关联远程仓库:

  1. 创建远程仓库,在github.com上创建new repository , 名字为:例:learngit
  2. git remote add origin git@github.com:自己的github账户名/learngit.git
  3. 添加后,远程的仓库名默认变为origin,可修改。
  4. 第一次从本地仓库push到远程仓库 用:git push -u origin master,-u 参数是将本地仓库和远程仓库关联起来,第一次之后push内容得到远程仓库 ,都不用加-u 参数。

三、从远程仓库克隆:

  1. 在github上新建一个仓库,够远Initialize this repository with a README,选项
  2. 使用命令 git clone 地址 , 克隆一个本地库

分支管理:

一、创建与合并分支:

  1. 创建分支:git checkout -b dev ,创建一个dev分支,并切换到dev分支,-b参数表示创建并切换,相当于 git branch dev (创建) , git checkout dev(切换) 两个命令。git branch 查看本地当前分支,git branch -a 查看所有远程分支
  2. git branch -a命令会列出当前所有的分支,前面带*号的是当前所在分支。
  3. 合并分支:git merge 分支名 ,将分支名合并到当前所在分支,比如当前分支为A,需要合并B分支,执行git merge B
  4. 删除分支:git branch -d dev ,删除dev分支

二、解决冲突:

  1. 在使用git merge 新分支名 发生冲突时,使用git status 可以查看冲突文件
  2. 手动修改冲突文件,然后再git add 冲突文件名,git commit -m “备注”
  3. 使用git log --graph --pretty=oneline --abbrev-commit 查看分支合并图
  4. 最后删除无用的分支

注:git log --graph 命令可以看到分支合并图。

三、常用分支管理策略:

  1. 通常合并时,git会用fast forward 模式,这种模式删除分支后,会丢掉分支信息。
  2. 建议在合并时使用 --no-ff 参数,将不是fast forward模式,删除分支后,不会丢掉分支信息。
  3. git stash ,可以把当前工作储存起来,等恢复后再继续工作。
  4. git stash list,查看stash后的工作现场
  5. git stash apply ,恢复stash后的工作现场,但是并没有删除工作现场,使用 git stash drop 删除工作现场。
  6. git stash pop,恢复stash工作区内容后,同时删除工作区内容。
  7. git remote, 查看远程库的信息 ,git remote -v ,显示更详细的信息。
  8. git checkout -b branch-name origin/branch-name ,在远程和本地创建对应的分支

  9. git branch --set-upstream branch-name origin/branch-name,建立本地分支和远程分支的关联。
  10. git pull ,从远程抓取分支的最新提交,常用在解决冲突的场景。
  11. git branch feature-v1.8.9.25.1(本地分支) origin/feature-v1.8.9.25.1(远程分支),从本地建立分支并关联远程分支

标签管理:

  1. git tag 标签名,在当前分支上打一个标签,git tag,查看所有标签
  2. git tag 标签名 历史commit id,给历史提交打上标签。
  3. git show 标签名,查看标签信息。
  4. git tag -a 标签名 “说明文字” 历史commit id,创建标签时,为标签指定说明文字。
  5. git tag -d 标签名, 删除标签。
  6. git push origin 标签名,推送标签到远程库。
  7. git push origin --tags,一次性推送所有本地标签到远程。
  8. 从远程删除标签:首先使用git tag -d 标签名 删除本地,然后使用git push origin :refs/tags/标签名 删除远程库标签。

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值