git使用摘要

本文介绍Git的基本原理及使用方法,包括工作区与版本区的概念、暂存区的作用、指针的应用,以及分支管理策略。提供了常见命令如初始化仓库、提交修改、创建与合并分支等,并强调了良好的使用习惯。

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

git使用摘要

git:分布式的版本管理工具,正在流行,就学了一下,入了门,记个笔记。

原理

  • 跟踪文件的修改:
    git记录文件的每一次修改,形成时间记录节点。每一个节点是一次提交记录,通过特异的16进制字符串标识(分布式情况下为了特异性标识一次提交,标识字符串需要计算得出,我猜计算需要用到到user的email,时间,提交message等信息)
  • 工作区与版本区、暂存区:

    工作区:我们修改文件的文件夹成为工作区,所有日常的编码工作就在此进行
    版本区:这个地方我们由git管理,位于文件夹.git下,用于记录文件的修改
    暂存区:位于版本区内,类似于缓存,我们可能一次只提交了一个文件的修改,每次都commit形成的节点太多,每个节点也不一定有意义,所以设立暂存区,通过add命令,先将修改的文件加入暂存区,等多个文件足够成为一个节点(有版本更改的意义)时,commit掉

  • 通过指针指向现在版本位置,方便版本切换:
    每一次提交并没有抹去上一次的节点,而是在上一次节点之上新加入一个节点,然后git将head指针(指向当前版本)指向新节点,也就是说如果想要回滚到以前版本,只需要将head指针的指向改到指定节点就行了

  • 分支:
    版本管理一定要用到多人合作开发的场景下的。多人合作,就涉及到了对一个工程不同部分的同时修改,这是需要分支了。分支是git提交时间节点的分支。可以让每个开发人员持有一个工程的一个节点,每个开发人员在此节点上分出每个人的提交节点,形成分支,最后将自己完成的分支合并到工程主分支上。分支内部也是通过git的指针完成切换的,指针仅仅标记当前开发在哪一个分支的节点上,剩余的功能,比如文件的校对,记录文件的修改并不属于指针的职责范围。因此,git的分支切换,版本切换是很快的,只需要修改一个指针信息即可。

使用习惯

  • 多次add,然后commit:
    commit表示一次版本的更迭,所以commit最好有意义。为此,对于文件的修改,最好将为了同一目的的修改一齐commit,在此之前修改好一个或几个文件,可以先将它们add到暂存区,缓存起来,等这一块功能修改完毕后统一commit
  • 多使用分支
    不同于SVN对分支支持不好,git推荐使用分支,我看 廖雪峰的git教程 理解了一下,有如下原则:
    1. master作为主分支,应当足够稳健,只用于版本发布,保证每一次commit的都是正确的,而且一般是大改动
    2. 由master分出来的dev分支作为工作时的主干分支,用于多人开发时每个开发人员分出自己的分支,多人开发完成后合并。
    3. 每一位开发人员从dev得到一份自己的分支(可能用自己的名字命名此分支),自己的工作在自己的分支做完了,就向dev分支合并。因此,这个自己的分支对于我们自己来说也是很稳健的,不能允许实验性质的代码毁坏它
    4. 对于实验性质的代码,还需要feature分支,此分支用于开发人员自己瞎搞,最后搞出来成功就合并到3中提到的自己的分支中,然后删除feature分支
    5. 对于bug,在自己的分支上修改也是不好的,需要新开bug分支,修复好bug之后合并到自己的分支上,然后删除bug分支信息

不得不说,规矩还是很多的,还要实践中多注意。

  • 提倡保留痕迹,而不是删除痕迹:git能检测到工程的每一次修改,也就是说好的坏的它都能“看到”,也许有人不喜欢这种我敲的烂代码被别人看到的感觉,想把git的记录删掉,但是按使用习惯和最佳实践来讲,还是保留git的每一次记录的好,方便以后版本回退,留后路。而且,其实没人一次次看那么多次git的提交记录的,就自己在出问题的时候会仔细看。

常用指令

以下命令都是在git 的brash下的,如果在windows上需要先安装相应的git程序,同时作为指令清单,这里没有讲解,需要讲解可以参看后文的参考博文,两篇本文内都有详细的讲解
1. 最常用:

  • 设定用户名、邮箱:用于指定git的用户,如果全局(本机)上都用一个git账户的话,可以在 config 后加参数 --global
    git config user.name "yourname" git config user.email "youremail"
  • git仓库初始化:新建一个文件夹作为git仓库,需要首先初始化,让git创建.git文件夹,指令是
    git init
  • 指定远程仓库:现在git经常和github是连在一起的,github最为最大的git仓库,不在本机,需要我们制定远端仓库与其关联
    • 首先,应当有SSH的密钥,没有需要先创建:ssh-keygen
      • 将ssh的公钥(后缀有.pub的)拷到github的SSH设置里,ok,SSH的设置结束了
      • 当在github上创建新仓库时,复制SSH的地址
      • 在git 的brash下键入git remote add origin yourGitHubSSHAddress
  • 删除远程仓库关联
    git remote rm origin
  • 增加修改到暂存区:即上文提到的add
    git add ,如果要将整个文件夹都增加(也就是嫌麻烦,不想打具体修改的文件的名字),可使用git add --all
  • 提交:即上文提到的commit
    git commit -m "yourmessage",每一次提交都需要使用参数-m ,来加入提交的信息,引号内可以敲个空格掠过,但推荐写明意义
  • 推到远程服务器:如果没有先前指定remote的话,每次推送都需要加入远程主机的地址
    git push origin master
    这是推到了远程的master分支上
  • 拉取远程服务器分支:一般而言,每次提交之前都需先拉一下,确保本地代码不会覆盖远程服务器由其他人修改的新代码
    git pull origin master
    依旧是拉取master分支
  • 回退到上一次提交节点:soft参数不会将工作区、暂存区重置,hard参数会重置到上一个状态的;head^表示上一个commit,head^^就代表上上个,为了简化,可以使用head~num的形式回退
    git reset --soft head^以及git reset --hard head^
  • 前进到下一次提交节点:回退之后,后悔了,如何再前进到下一次的提交节点呢?
    git reflog使用此命令查看回退节点操作的节点ID,然后使用命令git reset --hard/--soft theIDyouFind就行了
  • 创建分支
    git branch yourBranchName
  • 切换分支
    git checkout otherBranchName
  • 合并分支到当前分支
    git merge otherBranchName

参考博文

  1. 廖雪峰的git教程
  2. Git使用教程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值