一份简短的Git学习记录

一份简短的Git学习记录

一:Git介绍

Git是免费的开源软件,用于分布式版本控制:跟踪任何一组文件的变化,通常用于协调软件开发过程中合作开发源代码的程序员之间的工作。它的目标包括速度、数据完整性和对分布式、非线性工作流程的支持(在不同系统上运行的数千个并行分支)。

  • 版本控制
    版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
  • 团队协作
    从单兵作战转换为团队作战

二:Git的安装

Git官网:Git官网
Git安装教程:安装教程

安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

三:初始化

$ git init
  1. 选择我们所需要创建/管理的git文件夹进行初始化,如图:

  1. 查看初始化过后的文件夹

我们可以手动去磁盘管理里面进行查看是否隐藏文件夹或者利用git的ls -a 去查看,如图:

  1. Git工作区,暂存区和版本库

托管平台:

  • 局域网(内网)
    • gitlab
  • 公网(外网)
    • Gitlab
    • Github
    • gitee

四:添加暂存区

  1. 添加暂存区:
$ git add test.txt
  1. 查看暂存区的状态:
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test.txt
  1. 将上传到暂存区的文件删除:
$ git rm --cached 文件名
  1. 将工作区的全部文件上传到暂存区:
$ git add .

五:提交到本地库

  1. 将暂存区代码提交到本地仓库中:
$ git commit -m "填写注释内容"

当我们在此使用git status 查看时有“clean”关键字即代表暂存区无内容

$ git status
On branch master
nothing to commit, working tree clean
  1. 查看提交的历史记录:
$ git log
commit 2e6ab1b4eb40dc5b70a06e971c72d7beaf3b3e42 (HEAD -> master)
Author: Poluk <Poluk2001@163.com>
Date:   Sat Nov 12 23:29:59 2022 +0800

    这是第二次提交

commit 6f84ca758c44b7405337818e8b53c71bc7412e53
Author: Poluk <Poluk2001@163.com>
Date:   Sat Nov 12 23:01:12 2022 +0800

    这是第一次提交

六:回退版本

利用reset回退版本

  1. 回退到上一次提交的版本:
$ git reset --hard HEAD^
HEAD is now at 6f84ca7 这是第一次提交
  1. 回退到上上次提交的版本:
$ git reset --hard HEAD~2
$ git reset --hard HEAD ^^

  1. 查看所有操作记录:
$  git reflog
6f84ca7 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
2e6ab1b HEAD@{1}: commit: 这是第二次提交
6f84ca7 (HEAD -> master) HEAD@{2}: commit (initial): 这是第一次提交
  1. 根据commit id信息回退版本:
$ git reset --hard commit id

如图:

  1. 回退版本到暂存区:
$ git reset --soft commit id
  1. hard和soft回退版本的区别:

soft功能作用:

  1. 重新写“提交记录”
  2. 把已提交到master的文件回退到暂存区,并且把新修改过后的同一个文件add到暂存区合并,一起再提交到master中,这样日志中就只有一个同文件的提交记录了。

利用revert回退版本

  1. revert回退方式
$ git revert head

git reset: 是回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f

git revert: 是反做撤销其中的commit-id,然后重新生成一个commit-id。 本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了

PS: reset –hard 和 revert 都会退回到工作区,但是revert是创建一个新的commit id 并且HEAD指针指向新生成的id,而reset –hard是删除当前commit id并且 HEAD指针直接指向上一个id

七:分支

  1. 查看分支(星号代表当前所在的分支):
$ git branch
* master
  1. 创建分支:
$ git branch 分支名
  1. 切换分支:
$ git checkout 分支名
Switched to branch '分支名'
  1. 合并分支:
$ git merge 分支名
  1. 删除分支:

合并完分支后,先切换到别的分支在进行删除操作:

$ git branch -d 分支名
Deleted branch newlist (was f667656).
  1. 合并冲突:

    我们在不同的分支表示不同的工作区,分别在不同的分支上进行add和commit最终的文件内容也会因为分支不同而导致内容不同。
    解决合并冲突就是git也不知道保留哪个内容或者都需要保留,所以需要我们手动解决合并冲突。

示意图:

八:添加远程仓库的地址

  1. 创建远程仓库地址:

  1. 添加远程仓库的地址:
$ git remote add origin git@github.com:Github用户名/仓库名.git
#范例如下:
$ git remote add origin git@github.com:Poluk2001/testgit.git

git remote add 是命令,origin 是远程仓库名字,这是Git默认的叫法,也可以改成别的。

  1. 查看远程仓库名:
$ git remote -v
  1. 移除远程仓库名:
$ git remote remove origin
  1. 将本地仓库推送到远程仓库:
$ git push -u origin master

git push 是推送到远程仓库命令,-u 是记录当前地址,下次直接输入git push 命令即可;

  1. 拉取远程最新仓库:
$ git pull #origin master

origin master 可以不用写进去,所以这里我加了#,因为在之前默认使用-u 选项,所以git会自动识别我们之前默认的仓库名以及分支。

  1. 将远程仓库克隆到本地:
$ git clone git@github.com:Poluk2001/testgit.git(仓库地址)

九:团队协作与冲突

  1. 添加协作者的Github账户:

    用户可以有拉取和克隆远程仓库的权限,但是推送权限只有仓库创建者所拥有,我们需要在远程仓库setting中添加合作者:

    1. 点击左侧Collaboratos
    2. 点击Add people
    3. 搜索需要添加合作的Github用户
    4. 将生成的Pending Invite发送给需要的协作的用户,对方进行点击即可,即可完成合作邀请操作

  1. 合并冲突:

在与团队协作当中我们会时常遇到合并冲突,我们需要与另一个人进行沟通,进行手动合并

在每次写代码之前,我们都要使用git pull命令来拉取仓库最新地址,保证我们本地仓库代码与远程仓库代码一致。

  1. 将本地仓库的分支推送到远程仓库:
$ git push origin 本地分支名:远程分支名
  1. 将远程仓库分支拉取到本地仓库:
$ git pull origin 远程分支名
  1. 删除远程仓库的分支:
$ git push origin :远程分支名

十:跨团队协作

作者

Poluk

发布于

2022-10-07

更新于

2023-09-04

许可协议

评论