gitによって要約されたメモは、gitの一般的なコマンドであるあなたと共有されます。

git3つの領域

作業領域(コードを記述する場所)>ステージング領域(一時ストレージ、元に戻すことができます)>ローカルライブラリ(履歴バージョンを保存できます)

gitadd。ステージング領域に追加します。gitcommit-m""ローカルライブラリにコミットします。

分散型および集中型?

バージョン管理ツールの機能

  • 共同開発:複数の人がサーバー側で同じファイルを並行して変更します(bei-opposite-violation-error)

  • データのバックアップ:ディレクトリとファイルの現在の状態を保存するだけでなく、各コミットの履歴状態も維持します

  • バージョン管理:各バージョンのファイル情報を保存する場合、データを複製しない、ストレージスペースを節約する、開発効率を向上させる、svnインクリメンタル管理、gitファイルシステムスナップショット方式が必要です。

  • パーミッションコントロール:参加している開発者をコントロールするために最善を尽くします。外の世界に貢献する人はgitをレビューするために最善を尽くしますが、svnはしません(gitに固有)

  • 履歴:変更者の表示、情報のログ、変更されたコンテンツ、変更された時間

  • ブランチ管理:チーム開発が複数の生産部門の同僚と一緒にタスクを進めることを可能にし、開発効率を向上させます

バージョン管理ツールとは何ですか

  • 一元化されたバージョン管理ツールcvssvnvss

  • 分散バージョンおよび制御ツールgitMercurialBazaar Darcs

Gitが分散され、SVNが一元化されます

SVN集中型バージョン管理ツールは、サーバーを介した複数人による開発と操作です。サーバーがダウンすると、履歴情報とコードが失われます。

これがGitとSVNの最大の違いです。この概念を理解できれば、基本的に両者の違いは理解できます。Gitは分散されているため、Gitはオフライン作業をサポートし、次に起動される分岐機能を含め、多くの操作をローカルで実行できます。また、SVNが正しく機能するには、インターネットに接続する必要があります。

差異比較表

違い svn ギット
システム機能 1.集中型バージョン管理システム(ドキュメント管理は非常に便利です)2。企業内での並列集中型開発3. Windowsシステムでの開発に推奨4.クローン作成には約10,000のコミット(コミット)、5つのブランチがあり、各ブランチには約1500のファイルがあります、ほぼ1時間かかりました 1.分散システム(コード管理は非常に便利です)2。オープンソースプロジェクトの開発3. Mac、Linuxシステムの開発をお勧めします4.クローン作成には約10,000のコミット(コミット)、5つのブランチ、各ブランチには約1500のファイル、1つかかります分
柔軟性 1. svnを実行しているサーバーに障害が発生し、サーバーと対話できません。2.すべてのsvn操作には、中央ウェアハウスとの対話が必要です(たとえば、ブランチのプル、ログの表示など)。 1.単一のマシンで操作でき、gitサーバーの障害はローカルのgitウェアハウスでも機能します。2。プッシュおよびプル(またはフェッチ)操作を除いて、他のすべての操作はローカルで操作できます。3.ブランチを作成します。独自の開発タスクに従ってローカルで実行します。4。ログはすべてローカルで表示されるため、より効率的です。
安全性 不十分で定期的なバックアップ、およびsvn全体をバックアップする必要があります より高く、各開発者のローカルは完全なバージョンライブラリであり、バージョンライブラリのすべての情報を記録します(gitlabはバックアップ機能を統合します)
ブランチの側面 1.ブランチのプルはパスのコピーに似ています2.ブランチは任意のサブディレクトリで実行できます3.ブランチのプルはコピーと同等であるため、ブランチのプルは遅くなります4.ブランチの作成後、すべてのメンバーに影響し、誰もがこのブランチ5を持つことになります。マルチブランチの並列開発はより重くなります(より多くの作業と面倒) 1. Gitの任意のコミットポイントでブランチを開くことができます!(git checkout -b newbranch HashId)2.ブランチのプルは、ファイルとHEADを作成するための単なるポインターであるため、より高速になります。3.ローカルで作成されたブランチは他のブランチに影響を与えません。4。マルチブランチに適しています。並列開発5.gitcheckoutハッシュ値(前のバージョンに切り替え、バージョンのロールバックは不要)6.強力なチェリーピック
バージョン管理 1.変更前後の差分データをバージョン管理として保存します。2。バージョン番号を制御すると、各操作で高いバージョン番号(svnの主要機能であるsvnのグローバルバージョン番号、gitはハッシュ)が生成されます。価値) 1. gitは、ファイルのスナップショットを作成するように、ファイルデータの全体的な変更のみを考慮します。ファイルが変更されない場合、ブランチはファイルのポインターのみを変更します。ファイルが変更された場合、ポインターは変更されません。新しいバージョン2を指します。40ビット長ハッシュ値がバージョン番号として使用され、シーケンスはありません。3. git rebase操作により、コミットレコードをより適切に整理できます。
作業過程 1.ファイルを変更するたびに、ファイルを更新する必要があります。変更プロセス中にファイルが更新され、コミットが成功しない場合があります。2.競合がある場合、送信アクションが中断されます(競合の解決提出速度の競争です:速い人、最初に提出してください、すべてが安全です;あなたが遅い場合、後で提出すると、厄介な紛争解決に遭遇するかもしれません。) 1.作業を開始する前にフェッチ操作を実行し、開発作業の完了後に操作をプッシュし、競合がある場合は競合を解決します。2. gitの送信プロセスは中断されず、競合ファイルは次の場合にマークされます。競合があります。
コンテンツ管理 svnは中国語をうまくサポートし、操作は簡単で、一般の人にも適しています プログラムのソースコード管理は便利で、コードベースが占めるスペースが少なく、分岐管理が簡単です。
学習費 使い勝手が良く、svnは中国語をしっかりサポートし、操作も簡単で、一般の方にも適しています 使いやすさよりも効率を重視し、コストも高くなります(独自のコマンド、リベース、リモートウェアハウスインタラクション用のコマンドなどが多数あります)。
権限管理 svnのアクセス許可管理は非常に厳密であり、サブディレクトリのグループおよび個人によって制御できます(各ディレクトリに.svn隠しファイルがあります) Gitには厳密な権限管理制御はなく、アカウントの役割の分割のみがあります(プロジェクトのホームファイルの下に.svnディレクトリは1つだけです)
管理プラットフォーム SVNBucket SVNBucket-無料のSVNコードホスティングサーバー、無制限のプライベート、無制限のメンバー gitlab(推奨、より統合された関数、API開発)、gerrit、githubなど。

svngitの長所と短所

SVNは、優れた中国語サポート、簡単な操作、および使用の難しさはありません。アーティスト、製品担当者、テスター、および実装担当者は簡単に開始できます。使用インターフェースが統一されており、機能も充実しており、操作も便利です。

Gitは、プログラムのソースコードに対して差別化されたバージョン管理を実行し、コードベースはほとんどスペースを占有しません。簡単なコード分岐管理。中国語をサポートしておらず、グラフィカルインターフェイスのサポートが不十分で、使用が困難です。宣伝するのは簡単ではありません。

分散コードバージョン管理システムは、必ずしもすべてのチームに適しているわけではありません。たとえば、中小規模のチームは、コストの削減と使いやすさを重視する場合があります。SVNなどの集中型バージョン管理ツールの方が適しています。ただし、チームの開発プロセスと作業スタイルに適合し、コード管理がスムーズである限り、チームが最終的に選択するコードバージョン管理ツールに関係なく。

gitコマンドの概要

現在のファイルを一覧表示

ll

リソースが隠されているファイルを一覧表示する

ls -lA

初期ローカルリポジトリ

git init

あなたがどこにいるか見てください

pwd

返回上一级文件

cd ..

设置签名

命令

  • 创建一个文件

vim good.txt

  - 形式    name 用户名 token    email 邮箱地址    作用: 用于区分不同开发人员的身份
  -  项目级别/仓库级别:尽在当前本地仓库有效    

git config user.name sunzhihao

git config user.email [email protected]

  • 查看设置好了吗

cat .git/config

  • 系统用户级别:登录当前操作系统的用户范围

    git config --global user.name sunzhihao

    git config --global user.email [email protected]

    • 查看设置好了吗

    cd ~

    ls -lA|less    [  查看文件查看隐藏文件 ]

    cat .gitconfig    [ 读区改文件信息 ]

    • 优先级 :如果没设置签名则是系统用户级别 ,但是设置项目级别就优系统用户级别 二者都没有是不允许的

追踪文件列表

将 ‘新建 / 修改’ 添加到暂存区(添加操作就是你要操作哪个文件)

git add .     或    git add -A      或   git add   [ 文件名字 ]

暂存区删除

把你这个文件村暂存区里删除,不是直接删掉文件 - 你可以后悔

git rm --cached  [ 文件名字 ]

查看文件的状态

git status   [ 查看工作区,和暂存区的工作状态 ]

提交到暂存区

git commit -m "这里写的是本次需求新增了什么功能" file.txt  [ 提交到本地库] 

查看提交的历史记录

git log

多屏显示控制 : 空格向下翻页 b 向上翻页 q 退出

历史记录一行显示 若果日志太多屏幕放不下

git log --pretty=oneline

输出历史记录但是hash直选中其中一部分 (一行显示)

git log --oneline

显示到哪个版本需要移动几步

git reflog

HEAD@{移动到当前版本去要第几步}

回退任意版本信息

git reset --hard 35851ba   [ 35851ba 索引值 ]

reset 命令的三个参数 :

--soft 仅仅在本地库移动 HEAD 指针

--mixed 在本地库移动head 指针 重置暂存区

--hard 在本地库移动head 指针 重置暂存区 重置工作存区

回退上一版本

git reset --hard HEAD^    [ 回退到上一个版本 ]

git reset --hard HEAD^^   [ 回退到上二个版本 (以此类推)]

git reset --hard HEAD~2   [  回退到上二个版本 (以此类推)]

删除文件恢复文件

rm file.txt

恢复回退版本即可

前提 删除前,文件存在的状态提交到了本地库

git reset --hard 35851ba [ 删除操作已经提交到本地库 35851ba指针位置 ] 

git reset --hard HEAD     [ 删除操作尚未提交到本地库 ]

比较内容的差异 (将工作区的文件内容与本地历史记录里的内容比较差异 )

不带指定文件名比较多个

git diff 练习git.txt    [练习git.txt文件名字]

git强制推送push(慎用)

git push -f origin master

git 分支

初始化之后是有一个master 主分支 (骨干)

分支的好处

  - 同时并行推进多个功能开发。提高开发效率。
  - 各个分支在开发过程中。如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除,重新开始即可。

创建分支

git branch hot_fix - hot_fix       [ hot_fix 分支名字]

查看分支

git branch -v

切换分支

git checkout hot_fix     [ hot_fix 分支名字]

合并分支

切换到要合并的分支上面 git merge 进行合并

git checkout hot_fix    [ hot_fix 分支名字]

git merge hot_fix        [ hot_fix 分支名字]

分支冲突

只要你的代码和我的代码在同一行修改了,我们合并分就会冲突,他会显示自动合并失败,然我们解决分支,然后找到对应的文件夹,里面的内容会用 大于号小于号等号分割开来,找到修改代码的人,我们要商量好,就决定要用哪个代码。把多余的代码删除即可。再去执行 git add . 即可 ,再去用 git commit -m "结束合并" 不能带文件名字 结局完毕。

git add .

git commit -m "日志信息"       [不能带文件名字]

补充:

  • 如果不是基于GitHub,远程库的最新版。所做的修改。不能推送,必须先拉取

  • 拉下来后,如果进入冲突状态。则按照分支。是冲突解决操作即可。

git hash 算法

hash是一个系列的加密算法。各个不同的哈希算法虽然加密强度不同。但是有以下几个共同点。

  • 不管输入数据量有多大。输入同一个哈希算法,得到加密结果长度固定。

  • 哈希算法确定。输入数据确定。输出数据能够保证不变。

  • 哈希算法确定输入数据有变化,输出数据一定有变化,而且通常变化很大。

  • 哈希算法不可逆。

git底层的是sha-1算法。git hash 指的就是哪个数字和英文的结合相当于 一个 id

git 保存项目路径,推送项目,克隆项目

查看项目路径

git remote -v

保存路径

git remote add origin sunzhihao: 2022孙志豪案例    [-origin 是给这个路径设置的别名,跟上路径]

推送项目

git push origin master     [origin 是路径的名字(看上一条) master 分支名字(主分支)]

克隆项目

git clone 有三个效果 1、 完整把项目下载到本地 2、 创建远程别名3、初始化本地仓库

git clone sunzhihao: 2022孙志豪案例            [git clone 跟上地址]

拉取代码

pull = fetch + merge

pull fetch [远程库地址名] [远程库分支名]

git fetch [远程库地址别名/远程分支名]

git pull [远程库地址名] [远程库分支名]

git push -u origin "master" 

跨团对协作访问

a 我有问题了 让 b 协作

1、b 、我想跨团对协作访问,首先找到你要访问的项目地址然后搜索然后点击右上角FORK

2、FORK 完了克隆地址 修改 推送

3、 点击 pullRequest > new pull request >create pull request

4、a 看代码 点击 Merge pull request 合并代码即可 把修改完拉取本地

视频地址

【尚硅谷】Git与GitHub基础全套完整版教程(快速上手,一套搞定)_哔哩哔哩_bilibili

おすすめ

転載: blog.csdn.net/qq_54753561/article/details/122723569