赞
踩
- Git是分布式版本控制系统:他没有中央服务器,每个开发者电脑就是一个完整的版本库。
- 这样工作时候就不需要联网了,因为版本都是在自己的电脑上。不需要连接中央服务器提交代码。
- 每一个开发人员的电脑上都有一个本地仓库,我们就可以使用本地仓库来实现代码的管理,我们可以在本地把代码加到版本库中,就可以对文件进行增删改查的操作。
- 如果我们在开发一个项目时,只有一个开发人员,不需要和别人交换代码,我们只需要本地仓库,不需要远程仓库。
- 如果是多人协作开发项目,那么我们就需要交换代码,这时就需要一个远程仓库。远程和本地仓库中的内容其实是一样的,我们需要做的是将本地仓库向远程仓库复制 一份。如果别人想把远程仓库的代码拿到本地仓库,需要再复制一份!这样其实就是复制了整个仓库。
- 开发人员从远程仓库复制一份完整的仓库放到本地,如果不需要交换代码就不需要远程仓库,本地就是一个闭环!
Git应用场景介绍
1.多人开发代码管理
2.异地开发代码管理
3.版本管理、版本回滚
······
1.从远程仓库中克隆(Clone)Git资源作为本地仓库
2.从本地仓库中Checkout代码然后进行代码修改
3.在进行提交前先将代码提交到暂存区
4.提交修改,提交(Commit)到本地仓库,本地仓库中保存修改的各个历史版本
5.在修改完成后,需要和团队成员共享代码时,可以将本地仓库代码Push到远程仓库
官方网站:git-scm.com
[root@server1 ~]# yum install -y git
[root@server1 ~]# mkdir demo
[root@server1 ~]# cd demo/
初始化版本库
[root@server1 demo]# git init ##推荐不在主目录,以后执行命令在本目录
Initialized empty Git repository in /root/demo/.git/
查看状态
[root@server1 demo]# git status # On branch master # # Initial commit # nothing to commit (create/copy files and use "git add" to track) [root@server1 demo]# git status -s #简化输出 [root@server1 demo]# echo test > README.md [root@server1 demo]# ls README.md [root@server1 demo]# git status -s ?? README.md ##新建的文件,没有添加至版本库 [root@server1 demo]# git add README.md [root@server1 demo]# git status -s A README.md ##新建的文件被添加至暂存区 [root@server1 demo]# git config --global user.email "gong@westos.org" ##加个人信息 [root@server1 demo]# git config --global user.name "gong" ##加个人信息 [root@server1 demo]# git commit -m "add README.md" ##提交暂存区的数据 [root@server1 demo]# echo hello >> README.md [root@server1 demo]# git status -s M README.md ##文件在工作区被修改;可以撤销 [root@server1 demo]# git add README.md [root@server1 demo]# git status -s M README.md ##M变为左边,表示被添加至暂存区;reset可以撤销 [root@server1 demo]# echo world >> README.md [root@server1 demo]# git status -s MM README.md ##一部分在暂存区,一部分在工作区 [root@server1 demo]# git commit -m "v1" ##提交暂存区的数据 [root@server1 demo]# git status -s ##工作区的,未被提交 M README.md [root@server1 demo]# git add . ##添加至暂存区 [root@server1 demo]# git status -s M README.md [root@server1 demo]# git commit -m "v2" [root@server1 demo]# git status -s
忽略隐藏文件 [root@server1 demo]# touch .a [root@server1 demo]# git status -s ?? .a [root@server1 demo]# vim .gitignore ##忽略所有 .* [root@server1 demo]# git status -s [root@server1 demo]# echo helloworld > test.txt [root@server1 demo]# git add test.txt ##添加到版本库 [root@server1 demo]# git commit -m "add test.txt" 撤销文件修改 [root@server1 demo]# rm -f test.txt [root@server1 demo]# git status -s D test.txt ##在工作区被删除 [root@server1 demo]# git checkout -- test.txt ##撤销对文件修改 取消暂存区文件: [root@server1 demo]# git rm test.txt ##理解为add的反面 [root@server1 demo]# git status -s D test.txt [root@server1 demo]# git reset HEAD test.txt ##取消暂存区文件 版本回退 [root@server1 demo]# git rm test.txt [root@server1 demo]# git commit -m "delete test.txt" ## [root@server1 demo]# git reflog ## 58b1bc2 HEAD@{0}: commit: delete test.txt ... [root@server1 demo]# git reset --hard 6db53fe ##版本回退
登录:https://github.com/
或者:https://gitee.com/
本实验:初始化在本地做过了,远端不需要做了
上传公钥
[root@server1 demo]# ssh-keygen
[root@server1 ~]# cd demo/ [root@server1 demo]# git branch -M main ##设置主分支 [root@server1 demo]# git remote add origin git@github.com:westos007/demo.git ##添加远端服务器 [root@server1 demo]# git remote -v ##查看远端信息 origin git@github.com:westos007/demo.git (fetch) origin git@github.com:westos007/demo.git (push) [root@server1 demo]# git push -u origin main ##上传 The authenticity of host 'github.com (20.205.243.166)' can't be established. ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM. ECDSA key fingerprint is MD5:7b:99:81:1e:4c:91:a5:0d:5a:2e:2e:80:13:3f:24:ca. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts. Counting objects: 12, done. Delta compression using up to 2 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (12/12), 890 bytes | 0 bytes/s, done. Total 12 (delta 0), reused 0 (delta 0) To git@github.com:westos007/demo.git * [new branch] main -> main Branch main set up to track remote branch main from origin.
[root@server1 ~]# rm -fr demo/
[root@server1 ~]# git clone git@github.com:westos007/demo.git ##从远端ssh/http克隆
Cloning into 'demo'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 12 (delta 0), reused 12 (delta 0), pack-reused 0
Receiving objects: 100% (12/12), done.
[root@server1 ~]# ls
anaconda-ks.cfg demo
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
README.md test.txt
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。