Git使用

一、下载Git


官网: git下载


二、安装Git


安装位置Browse自选一个路径,然后点击Next

安装配置文件,根据需要选择

启动文件夹设置
设置默认编辑器,可自定义,点击Browse,添加第三方编辑器.exe即可
选择path配置,提示都是见名知意,按需选择。

选择git使用终端风格


 

安装完成


三、远程仓库配置


远程仓库有很多,比如github,国内的码云,局域网自建git服务器,托管在其他地方的服务器
**GitHub网址:**https://github.com
注册账户: 类似普通的网站新用户注册,使用邮箱注册即可。
新建仓库: 点击右上角,加号,new repository


四、生成(配置)SSH


git客户端安装后,如何和远程仓库,如github连接呢:使用SSH。
用户名

git config --global user.name "注册名"

git config --global user.email "注册邮箱"

ssh-keygen -t rsa -C "自己的邮箱"                生成SSH(有SSH可以跳过这一步)

生成成功后,SSH文件存放在C:/User/用户/.ssh下,id_rsa为私钥,id_rsa.pub为公钥。

github配置SSH
打开id_rsa.pub文件,全选,复制全文

github->账户->setting

选择SSH and GPGkeys,New SSH key

自定义一个title,然后粘贴从公钥文件中拷贝的key

测试SSH连接

ssh -T git@github.com

按照提示输入yes,回车,提示successfully之类的就说明SSH连接正常,github上的钥匙也会变成绿色


至此,本地git客户端和远程github建立了联系。

Git应用样式:

文件夹右键:

-------------------

Git基本命令

类似于终端输入命令

Git 是一种分布式版本控制系统,用于管理软件项目的源代码。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。

使用 Git 可以追踪代码的历史修改记录,方便团队协作、代码共享和代码重构。

Git 的基本工作流程:

在开始编写代码之前,首先需要创建一个 Git 仓库(repository),用于存储代码和版本历史记录。
在编写代码时,可以通过 git add 命令将更改的文件添加到 Git 的暂存区(staging area)中。
通过 git commit 命令将暂存区中的更改提交到 Git 仓库中,并生成一个新的版本号(commit hash)。
如果需要撤销某个提交,可以使用 git revert 命令来创建一个新的提交,该提交将会抵消先前的提交效果。
如果需要合并不同分支的代码,可以使用 git merge 命令进行合并。
如果需要查看代码的历史提交记录,可以使用 git log 命令来获取详细信息。
如果需要将代码推送到远程仓库,可以使用 git push 命令将本地代码推送到远程仓库。
如果需要从远程仓库中获取代码,可以使用 git pull 命令将远程代码拉取到本地。

1.pwd     当前目录路径
2.cd      表示进入
3.mkdir   创建文件夹
4.copy nul xx.txt  创建文件
5.rmdir    删除文件夹
6.remove   删除文件
7.dir      当前路径下的所有文件
8.cd..      返回上一级(CHDIR)
9.git config  全局配置
10.git config --global user.name "用户名"
11.git config --global user.email "邮箱"
12.git init   初始化一个空白仓库
13.git status  获取当前仓库状态
14.git add      追踪文件(如已追踪会将代码提交到暂存区)
15.git commit    将暂存区的代码提交
16.git commit -a -m  将追踪和提交进行了合并
17.git add .    追踪所有未追踪的文件
18.git log      打印提交过的日志信息
19.git log --pretty=oneline 精简版日志信息
20.git reflog    打印所有之前的日志信息(包括回滚)
21.git checkout xx 把还没有提交的代码还原
22.git diff xx   比较两次文件的差异
23.git tag 版本号 生成版本
24.git reset xx 撤销 将暂存区的撤回工作区
25.git reset --hard 编号 切换
26.git branch xx 创建分支
27.git checkout xx 可以切换分支
28.git merge  xx   合并分支(git fast-forward(快进合并)将要合并的指向了被合并的分支上,所以删除被合并的会丢失信息)
29.git merge --no-ff -m "xx" xx 不使用快进合并的合并(会产生新的提交记录)
30.git branch -D xx 删除分支
31.git branch  查看分支
32.git rm --cached 指定文件忽视
33.git rm --cached -r 指定目录忽视
34.git rm -f --cached 强制忽略
35.git add -f 文件名    提交忽视文件
36.git check-ignore  提交忽视
37.git push    远程推送
38.git pull    远程接受

39.git remote  管理远程仓库

40.git clone -远程仓库路径    克隆远程项目文件

推送当前分支到远程仓库,并与远程分支关联:
git push -u origin <branch-name>
推送当前分支到远程仓库,并与远程分支合并:
git push origin <branch-name>
强制推送当前分支到远程仓库:
git push -f origin <branch-name>
删除远程分支:
git push origin :<branch-name>

git push --delete origin <branch-name>
在推送分支时,通常会遇到冲突等问题。如果发生冲突,需要先解决冲突,然后再进行推送。

SVN与Git的的区别

分布式 vs 集中式:Git 是一种分布式版本控制系统,而 SVN 是一种集中式版本控制系统。在 Git 中,每个开发者都拥有本地代码库的完整副本,可以离线工作并在不同的工作流程之间自由转换。而在 SVN 中,所有开发者共享同一个中央代码库,并且需要有网络连接才能进行版本控制操作。
分支管理:Git 在分支管理方面比 SVN 更加强大和灵活。Git 的分支非常轻量级,创建和合并分支也很容易,因此可以轻松实现多人协作和并行开发。而在 SVN 中,分支比较重量级(即创建和合并分支需要花费相对更多的时间和资源),因此往往只用于重要的版本分支。
版本号:Git 使用 SHA-1 哈希值来标识每个提交,而 SVN 采用递增的数字版本号来标识每个提交。SHA-1 哈希值保证了每个提交的唯一性,而递增版本号则简化了版本控制过程。
整体性:由于 SVN 是一种集中式版本控制系统,因此所有数据都存储在中央代码库中。如果中央代码库损坏或丢失,可能会导致数据丢失或无法恢复。而 Git 是一种分布式版本控制系统,每个开发者都拥有完整的代码库副本,保证了代码的整体性和可靠性。
性能:Git 比 SVN 更快,特别是在处理大型仓库、分支合并以及比较代码差异时。Git 使用基于内容的哈希算法来检测文件是否修改,而 SVN 则需要检查文件的元数据(如时间戳和文件大小)来确定是否修改。


Git远程操作

Git有三个主要的工作区域:

工作区(working directory)、暂存区(staging area)和版本库(repository)。

工作区是指您电脑文件系统上用于修改文件的目录。在这里,您可以创建、编辑和删除文件。

暂存区是一个中间状态,它充当了您提交更改的缓冲区。在Git中,您必须明确地将文件添加到暂存区,然后才能将其提交到版本库中。这样做的好处是,您可以对每个更改进行精细控制,并确保只提交需要保存的更改。

版本库包含Git存储库的所有历史记录和元数据。它是Git存储库的核心组成部分,是由Git自动维护的。

简而言之,工作区是您正在处理的实际文件,而暂存区是下一次提交所需更改的文件列表。它们之间的区别在于,您可以对工作区中的任何文件进行修改,但只有将它们添加到暂存区并将其提交到版本库中,它们才会成为Git跟踪的部分。


1.Git界面化操作---Git GUI

    开始菜单:
    1.Create新建仓库 Directory:选择一个文件夹作为仓库
    2.Clone从远程仓库下载 
        Source:远程仓库的git(码云)clone or download(Use SSH) 
        Target:克隆到本地的路径(最后一个文件夹路径不要存在,只用拼名字)
    3.Open打开已经存在仓库 Repository:选择一个本地的仓库

    界面:
    Unstaged Changes:工作区
    Staged Changes(Will Commit):暂存区
    右边大片空白:显式(文件的内容及变化)
    Initial Commit Message:提交的信息

    GUI常用命令:
    Rescan:刷新
    Stage Changed:把工作区内容添加到暂存区
    Sign Off:添加一个类似版本标识
    Commit:提交到本地仓库
    Push:推送到远程仓库
    
    菜单:

    Repository
        Explore work copy:浏览本地仓库
        Git Bash:打开git终端(自带)
        Browse master`s Files:浏览主分支的文件
        ……
        Visualize master`s History:查看主分支的提交历史记录
        ……
    Branch
        Create:创建新的分支
        Checkout:切换分支
        Rename:重命名当前分支
        Delete:删除当前分支
        Rest:重置当前分支
    Commit
        Amend Last Commit:查看当前最新的提交
        Stag To Commit:暂存区提交
        Revert Changes:撤销未提交的改变
    Remote
        Add:添加一个远程的信息(name 随遍起的,location远程连接)
        Push:推送到远程

2.github(码云)


    注册一个github的账号
    新建仓库:
        1.点击左上角的new或者右上角的+号NewRespository
        2.Respositoryname、Desciption、public/private、README -> Create respository
    可以利用github做个人主页
        1.找到对应的github中的仓库
        2.找到仓库上面的齿轮Setting
        3.找到GitHub Pages -> Source选项:Master Branch ->上面有个路径

git说明:

参考文档:

廖雪峰GIT教学
Git

菜鸟教程


1.源代码版本管理工具
    什么是源代码版本管理工具
        1)、什么是源代码版本管理
            我们每一次的代码修改或者新增功能都算是一个版本
            我们对每一次的修改做一次保存记录即为版本管理
        2)、源代码版本管理的意义在哪里
            如果我的项目需求需要回退
            多人协作开发
            记录整个开发流程
    实际开发中
        必须使用源代码版本管理工具的
    常见的源代码版本管理工具
        svn git vss(微软的) cvs
        
2.git基本操作以及概念性的东西
    a.工作区
    b.缓存区
    c.本地仓库
    d.远程仓库
    
    安装
        mac 自带 
        windows 安装git for windows
        验证是否安装成功的方法
            打开终端输入 git version #查看git的版本号
            
        命令行基础操作
            cd
            dir
            ls
            mkdir
    git命令
        初始化一个git仓库,首先进入我的项目目录
        git init     #初始化完成后会在目录中创建一个.git文件夹,此文件夹为git的版本记录
        git status #查看当前仓库的状态
        git add #把文件加入缓存区
            git add . #把当前项目中没有缓存的文件全部加入缓存区
            git add 文件名 #把指定文件加入缓存区
        git commit -m '提交信息的备注'            
        git branch #查看分支
        git branch 分支名 #创建一个分支
        git checkout 分支名 #切换到指定的分支
        git merge 分支名 #合并指定分支的内容到当前分支

3.界面化操作(第三方的GUI工具):TortoiseGit  SourceTree (类似于GitGUI,下载时自带的)

4.github操作
    如何在github上创建一个个人主页
        用户名:bh0814
        密码:**************
        邮箱:大邮箱
        1)、在github上创建一个代码仓库,仓库名字为:用户名.github.io
            需要创建一个文件:给文件起名字
        2)、在外网访问地址为:用户名.github.io/文件名
        3)、可以像管理一般的远程仓库一样对其进行管理
        4)、要带资源文件的话,可以先把文件clone下来,再push上去
        ps:README.td  readme文件
        ps:git过滤掉不需要提交到源代码中的文件
            a.创建一个文件 .gitignore的文件
            b.把不需要提交的内容写入此文件
            c.以/结尾表示目录,否则表示单个文件
        
    github desktop # github的桌面工具


1.nodejs相关内容
    nodejs开始于2009年
    两个版本 v4.5.0(用的人多,好多ES6不支持)  v6.6.0(最新版本)
    mac下安装也可以去下载安装包,也可以用homebrew安装(brew install node)
    
    npm
    nodejs的包管理工具
    npm init # 初始化一个nodejs项目,同时创建一个package.json(存储我们项目的一些配置信息)
    npm install 模块名 # 安装一个模块
    npm uninstall 模块名 # 删除一个模块
        在进行模块的安装和删除的时候可以加上参数
            -g # 表示把模块安装在全局环境中,安装后一般可以直接在终端输入命令使用
            -save # 表示把模块安装在本项目中,只能在此项目中使用
            其他常见npm命令自行查询
    express
    express是一个nodejs的web开发框架
    安装express最简单的办法,直接安装在全局中,安装一个项目生成工具。
    

git远程库操作:
git:分布式代码管理工具。所有版本的代码既在服务器存放也在每一个git客户端存放。


svn:集中式代码管理工具。客户端只存最新版的代码,历史版本的代码都再服务端存放,所以,使用svn想要提交代码或还原到某个版本,必须使用网络。


----------------------------------------------

多人合作开发时,每次push之前,最好先pull(fetch+merge)一次,保证当前本地库和远程库的版本一致,如果push前没有pull操作,那么远程库中有别人提交的代码时,就会push失败。

多人合作开发时,尽量避免多人同时编写同一个文件,否则当文件发生冲突时,需要手动排除冲突。

.gitignore:
# 配置语法
#    以斜杠/开头表示目录;
#    以星号*通配多个字符;
#    以问号?通配单个字符
#    以方括号[]包含单个字符的匹配列表;
#    以叹号!表示不忽略(跟踪)匹配到的文件或目录;

# 不想上传 Image 文件夹
images/
MyProject/*.zip
MyProject/abc?.cs
[Dd]ebug
[Rr]elease

# 常用的规则
#    /mtk/ 过滤整个文件夹
#    *.zip 过滤所有.zip文件
#    /mtk/do.c 过滤某个具体文件
#    以上规则意思是:被过滤掉的文件就不会出现在你的GitHub库中了,当然本地库中还有,只是push的时候不会上传


集中式和分布式:
集中式:
版本历史版本都在中心服务器上(仅此1份),本地只有最新版本。
集中式对中心服务器依赖很强,工作时要保持网络连接;
没有中心服务器的时候无法提交,也无法查看历史版本或进行大部分等操作。

分布式:
本地有完整的历史版本,可以随时查看历史,进行提交、分支合并等,
不存在中心服务器,不需要网络就可以完成几乎所有的版本管理工作;
在网络存在的情况下文件可以支持很多副本(成千上万的分支)并分散到很多电脑上。

终于可以在没有网络的情况下轻松工作了!!!
无论提交代码还是查看历史,还是分支、合并都可以秒完!
Git允许你很频繁地提交代码,更加详尽更加自由地记录开发过程!

处理冲突


当两个分支上的代码修改了同一部分,并且尝试将这两个分支合并时,就会发生代码冲突。Git提供了以下步骤来解决冲突:

运行 git status 命令查看哪些文件包含冲突。
编辑有冲突的文件,手动解决文件中的冲突。

遇见冲突可以点击有冲突的文件右键,可以选择以我的版本/他人版本合并解决冲突并提交,
也可以对编辑后的文件进行 git add,标记为已解决冲突的文件。
使用 git commit 提交更改,Git 会自动生成一个合并提交,其中包含各自分支中的更改。
注意:在解决冲突前,最好先备份当前的代码状态,以免不小心破坏代码库。另外,在处理冲突之前,可以通过运行 git diff 命令来查看冲突的源代码,以便更好地理解要解决的问题。

分支管理策略


在 Git 中,常见的分支管理策略包括以下几个方面:

主分支:主分支通常是最稳定的分支,用于发布生产版本。在 Git 中,主分支通常是 master 分支或者 main 分支。
开发分支:开发分支通常从主分支派生而来,在其上进行新功能或修复错误的开发。在 Git 中,通常使用 develop 分支作为开发分支。
特性分支:特性分支是为了开发单独的功能而创建的分支。这些分支通常从开发分支派生而来,并在实现目标后被合并回开发分支。在 Git 中,通常使用 feature/ 分支命名约定来表示特性分支。
发布分支:发布分支是用于准备发布版本的分支,通常从主分支派生而来。这些分支应该包含与发布相关的所有更改,并且应该经过全面测试和审核后再合并回主分支。在 Git 中,通常使用 release/ 分支命名约定来表示发布分支。
热修复分支:热修复分支通常用于快速修复紧急问题,例如安全漏洞或崩溃。这些分支通常从主分支派生而来,并且只包含必要的更改。在 Git 中,通常使用 hotfix/ 分支命名约定来表示热修复分支。
通过采用合适的 Git 分支管理策略,可以帮助团队更好地组织和管理代码,提高团队的协作能力和生产效率。除了上述常见的分支管理策略,还可以根据团队的具体需求和工作流程定制适合自己的分支管理策略。

bug分支


在 Git 中,通常使用 bug 分支用于修复代码中的错误或缺陷。当发现 bug 时,可以从当前开发分支(如 develop 分支)创建一个 bug 分支,在该分支上进行错误修复。修复完成后,可以将更改提交到 bug 分支,并将其合并回开发分支和主分支。

以下是一个典型的使用 Git bug 分支的流程:

从当前开发分支(如 develop 分支)创建一个新的 bug 分支:
git checkout -b bug/fix-xxx
在 bug 分支上进行错误修复,包括必要的测试和代码审查。
提交更改并推送到远程仓库:
git add .
git commit -m "Fix xxx bug"
git push origin bug/fix-xxx
将 bug 分支合并回开发分支(如 develop 分支):
git checkout develop
git merge --no-ff bug/fix-xxx
测试修复是否正确,如果一切正常,则将开发分支合并回主分支(如 master 分支):
git checkout master
git merge --no-ff develop
通过使用 Git bug 分支,可以帮助团队更好地管理和修复代码中的错误和缺陷,同时保持代码库的稳定性和可靠性。

多人协作


Git 是一个优秀的多人协作工具,以下是 Git 多人协作的一些最佳实践:

使用分支:使用分支可以帮助团队成员在不影响主分支的情况下进行开发和测试,避免代码冲突和错误。建议采用主分支、开发分支、特性分支、发布分支、热修复分支等分支管理策略。
提交规范:每次提交代码时应该附加有意义的提交信息,描述本次提交的更改内容和目的。建议采用语义化版本号和提交信息模板等规范,以便更好地记录和追踪代码变更历史。
定期合并:团队成员应该定期将自己的分支合并回主分支或者开发分支。这可以避免较大的代码冲突和错误,并且保持代码库的整洁和可维护性。
代码审查:通过代码审查可以确保代码的质量和一致性,并且可以识别和纠正潜在的问题和错误。建议采用 pull request 和 code review 等工具和流程,以便团队成员对彼此的代码进行审查和反馈。
团队协作:团队成员之间应该保持及时和有效的沟通,共享技术和经验,并尽可能避免个人行为和偏见对项目和团队产生不良影响。
通过采用上述最佳实践,可以帮助团队高效协作、保证代码质量和稳定性,并提高团队的生产力和创造力。

另外,在多人协作项目中,建议采用 pull request 和 code review 等工具和流程来对分支进行审查和反馈,以确保代码质量和稳定性。同时,也应该避免直接向主分支(如 master 分支)提交代码,而是应该使用分支管理策略来组织和管理代码。

抓取分支
在 Git 中,抓取分支指从远程仓库拉取最新的代码和分支信息,并在本地创建相应的分支。以下是在 Git 中抓取分支的一些常用命令:

拉取所有远程分支并更新本地分支:
git fetch --all
拉取一个特定的远程分支到本地:
git fetch origin <branch-name>
在本地创建基于远程分支的新分支:
git checkout -b <new-branch-name> origin/<remote-branch-name>
拉取远程分支并自动与本地分支关联:
git checkout --track origin/<remote-branch-name>

git checkout -t origin/<remote-branch-name>
抓取分支时,需要注意避免覆盖当前分支中未提交的更改。如果本地分支和远程分支存在冲突,需要解决冲突后才能将更改合并到本地分支中。

通过抓取分支可以使得开发者获取最新的代码和分支信息,在本地进行代码修改和测试,并将更改推送回远程仓库以进行协作开发。

git可视化工具


Git 可视化工具可以帮助开发者更直观地查看和管理代码版本控制历史,以下是几个常用的 Git 可视化工具:

GitKraken:GitKraken 是一款简单易用的 Git 可视化工具,支持 Windows、Mac 和 Linux 等多个平台。它提供了强大的图形界面,包括代码历史记录、分支管理、合并冲突解决等功能。
Sourcetree:Sourcetree 是由 Atlassian 公司开发的一款免费 Git 可视化工具,支持 Windows 和 Mac 平台。它提供了友好的用户界面,可以轻松地进行代码提交、分支管理和冲突解决等操作。
GitHub Desktop:GitHub Desktop 是 GitHub 公司出品的一款免费 Git 可视化工具,支持 Windows 和 Mac 平台。它提供了清晰明了的界面,可视化显示代码历史记录、分支管理、拉取请求(pull request)等功能,以及与 GitHub 网站的集成支持。
Git GUI:Git GUI 是 Git 官方提供的一个图形化界面的工具,支持 Windows、Mac 和 Linux 等多个平台。它虽然不如前面提到的工具那样友好易用,但是对于习惯命令行操作的开发者来说,Git GUI 可以提供便捷的图形化界面。
使用 Git 可视化工具可以帮助开发者更直观地理解和管理 Git 中的代码版本控制历史,提高协作效率和代码质量。

这边使用的是SourceTree

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值