【学习笔记】版本控制工具 GIT

前言

  1. GIT是一个分布式的版本控制工具。
  2. 参考资料 git官方教程-中文版廖雪峰老师的git教程
  3. 下文面向windows系统,所有操作使用git自带的git bash。
  4. 编辑文本文档时不要使用记事本,可以用sublime text或notepad++.

本地使用

安装及创建版本库

下载git,安装,进入git bash,确认用户信息如下。

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

常用命令

在bash中进入一个路径不含中文的空文件夹,使用git init命令创建版本库
使用git add filename命令把文件添加到暂存区
使用git commit -m "message"命令把暂存区的内容提交到版本库。
使用git diff filename查看对文件的修改
使用git status查看当前状态(包括 未跟踪的文件/已修改但没有暂存的文件/已暂存且没有提交的文件)
使用git rm在暂存区中删除一个文件,用法与git add相似。

版本回退

使用git log命令查看版本历史
使用git reset --hard commit_id切换到目标版本,HEAD指向当前版本,HEAD^指向上个版本,HEAD~100指向上100个版本
使用git reflog查看提交历史,以便找到未来的commit_id

工作区和暂存区

工作区,Working Directory 就是在电脑里能看到的目录。
版本库,Repository 就是在目录中的一个.git文件夹,存了与git有关的很多内容,如配置,分支,暂存区等。
暂存区,Stage 需要提交的文件通过git add放到暂存区,然后通过git commit统一提交到分支。
git diff filename比较工作区与暂存区
git diff --cached filename比较暂存区与版本库
git diff HEAD -- filename比较工作区与版本库

-----------------------版本库--------------------------------------------
                                         |                           |
                                 git diff --cached           		|
                                         |                           |
-------------暂存区------------------------------------       	git diff HEAD
                        |                                            |
                     git diff                                      	|
                        |                                            |
-----工作区--------------------------------------------------------------

删除修改

  1. 仅修改了工作区,使用git checkout -- filename把该文件恢复到最近的git commitgit add
  2. 已经暂存,使用git reset HEAD filename删除暂存区,然后修改工作区
  3. 已经提交,参考版本回退。

远程仓库

  1. Git是分布式版本控制系统,同一个git版本库可以分布到不同的机器上。首先需要一个原始版本库,此后别的机器就可以克隆这个版本库,且不同机器上的版本库是完全一样的,没有主次之分。
  2. 实际情况是找一台电脑充当服务器,其它人把仓库从服务器上克隆到自己电脑上,再将各自的提交推送到服务器库里,也能从服务器库中拉取别人的提交。
  3. 可以自行创建服务器,也可以直接使用github,以下均使用github。

初始设置:添加SSH

  1. 注册github账号。
  2. 每台电脑创建自己的SSH Key,在git bash里执行$ ssh-keygen -t rsa -C "youremail@example.com"。注意修改邮箱。
  3. 在用户主目录里找到.ssh文件夹,显示扩展名。id_rsa文件就是私钥不能泄露,id_rsa.pub是公钥,可以告诉任何人。
  4. 登陆github,打开账户设置,添加SSH Key,title任意填,Key里复制id_rsa.pub里的内容。
  5. 确认添加,你的github账户即可与你的电脑通讯。

本地向GITHUB上推送

  1. 在github上新建与本地仓库同名的空版本库(Repository),注意不要有readme。
  2. 建立远程库链接:本地仓库目录下执行$ git remote add origin git@github.com:LittleFall/learngit.git,其中LittleFall修改为你的github账户名,learngit修改为你的仓库名。origin可以修改为其它的名字,表示远程库。如果因名字写错等原因需要删除远程库链接,使用git remote rm origin.
  3. 注意,第一次添加时会有SSH的确认,输入yes再按两次回车即可,以后不会出现。
  4. 使用git push把本地分支推送的远程库中。git push -u origin master,仅第一次使用需要加-u.

从远程库克隆

  1. 开发时最好首先设置远程库,再在各个本地库中克隆。
  2. 在github上新建一个库gitskills,可以加上readme以验证效果。
  3. 在本地的一个目录中使用$ git clone git@github.com:LittleFall/gitskills.git即可克隆,注意修改用户名。
  4. 会发现目录下出现了gitskills目录,里面有一个readme.md文件和.git文件夹。
  5. 有使用其它协议的克隆方法,但似乎这样最好。

分支管理

git将每次提交(commit)串成时间线,称为分支,目前只有一个分支:主分支master。可以通过创建其它分支来修改程序,最后合并到主分支里。
注意:分支实际上是指向提交的。

基本操作

  1. 列出所有分支git branch
  2. 创建分支 git branch name,切换分支git checkout name,创建并切换分支git checkout -b name.
  3. 合并指定分支到当前分支git merge name。注意不修改mater时会使用Fast-forward合并模式,直接把mater指针移动到待合并的分支指针上。
  4. 删除分支git branch -d name

解决冲突

  1. git合并分支可能会产生冲突。git会将冲突标记在工作区的文件中,类似于
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
  1. 打开这个文件,将列出的部分直接修改成需要的值
Creating a new branch is quick and simple.
  1. 保存,add,commit,此时冲突已被解决。
  2. 使用git log --graph --pretty=oneline --abbrev-commit可以形象地看到分支合并过程。
  3. 记得在合并且冲突解决后删除副分支。
  4. 使用git merge --no-ff -m "message" branchname来合并分支且不使用Fast-forward模式,会使用recursive模式,新建一个commit,所以需要-m来记录信息。ff模式的好处是快速,坏处是删除副分支后会丢失分支信息。

分支策略

  1. master分支应当是非常稳定的,只用来发布新版本,不能在上边干活。
  2. dev分支适用于开发使用,每个程序员将自己的提交合并到dev上。
  3. bug分支:需要保存当前工作修改bug时使用git stash,将当前工作现场存储起来(类似于栈)。恢复工作现场时首先使用git status观察当前当作现场是否“干净”,使用git stash list查看存储内容,再使用git stash apply+git stash dropgit stash pop进行恢复并删除存储的内容。
  4. feature分支:注意强行删除git branch -D name

多人协作

  1. 查看远程库信息 git remote -v
  2. 建立本地分支和远程分支的链接关系git branch --set-upstream-to= origin/<branch-name> <branch-name>
  3. 从远程抓取分支git pull,可能会有冲突,可以解决。
  4. 向远程推送分支git push origin <branch-name>

变基

git rebase可以把git log的显示结果变成一条直线,非常好看,会更改提交的依赖关系。

标签管理

  1. 每个标签只能出现一次,其实不如叫做tid。
  2. 创建标签git tag tagname,注意标签是对应于commit的,会打给上个commit,一个commit可以有多个标签。
  3. 查看所有标签git tag
  4. 对某次提交打标签git tag name commit_id
  5. 指定说明文字git tag -a tag_name -m "message"
  6. 利用git show tag_name可以查看详细信息
  7. 删除标签 git tag -d tag_name
  8. 标签只会创建在本地,可以git push origin tag_name来推送到远程库,git push origin --tags推送全部标签。git push origin :refs/tags/<tagname>删除一个远程标签,需要先删除本地。

自定义设置

  1. 忽略特殊文件:在版本库目录下添加.gitignore文件,里面放着需要忽略的文件名,可以使用通配符。再将这个文件add即可。
  2. 配置别名:$ git config --global alias.st status以后写status就可以写st了,还有
    git config --global alias.perlg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  3. 搭建git服务器,留坑。

后记

理解(或者不理解)这些操作的原理后,可以尝试使用github desktop,这个图形界面工具非常易上手。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值