一、【尚硅谷】 Git&GitHub 最全教程,从入门到精通
https://www.bilibili.com/video/av24736323?from=search&seid=3857060205860170652
@Git独有:对团队外开发者贡献的代码进行审核
@系统快照方式
@分制管理
@避免单点故障
@Git大部分操作在本地完成,不需要联网;完整性保证(哈希操作);尽可能添加数据而不是删除或修改;分分支操作非常流畅快捷;与Linux命令全面兼容。
@
@use git from git bash only(建议)
@
OpenSSL更通用一些,其实都可是实现
@
$ git add good.txt
warning: LF will be replaced by CRLF in good.txt.
The file will have its original line endings in your working directory(不用管)
@
@
@
@
@
在文件夹空白处右键gitbash
- cd Git转到Git文件夹
- ls -LA 显示文件夹内容(补全)
- mkdir test 创建test目录(mkdir: cannot create directory ‘test’: Permission denied,win系统注意用管理员身份启动bash)
- ll 显示当前文件夹内的文件
- git init 初始化
- git help hard 获取帮助,介绍hard
- pwd 显示当前目录
- ls -LA 显示包括隐藏的所有文件夹
- ll .git/ 显示.git文件夹内的文件(本地库文件,不能动)
- cd 空格 .. 是上一级
- cd 空格 / 是回最高级,也就是 /
- cat .git/config 查看文件文本内容(config文件可查看账号)
- cd ~ 家目录(pwd 显示/c/Users/sunlu)
- git status 提示git项目的状态
- vim good.txt 创建文件,创建后i开始输入,输入完后esc,直接输入冒号,输入wq表示保存并退出,回车返回命令窗口。
- rm -r xx 删除xx文件夹
@设置签名
作用:区别身份
形式:用户名和邮箱
辨析:这里签名与远程库的账号密码没有任何关系
命令
- 仓库/项目级别:项目内的账户,账号信息在.git里的config
- git config user.name tom
- git config user.email xxx@xxx
- 系统用户级别:桌面系统用户git config --global,账号在家目录的config
两者都有的话,会有限用项目级别
@填充本地仓
创建文件:vim good.txt
查看状态:git status
提交到暂存区:git add good.txt
从暂存区撤回:git rm --cached good.txt
$ git add good.txt 提交到暂存区
$ git commit good.txt 提交文件到本地库,并对新提交的改变的备注
:set nu 显示vim的行号
vim good.txt 修改txt文件
git commit -m 'luwen' good.txt 直接备注修改情况,不用再用vim打开文本输入‘luwen’
@版本前进与后退
git log 显示历史版本
- commit 14fdf2b64a40d7ee6a7d71df46328dcd6e83fa05 (HEAD -> master)#HEAD是指针,commit后面的值是hash值
- Author: AKmendo <871216137@qq.com>
- Date: Fri Dec 7 15:46:23 2018 +0800
- luwen
git log --pretty=oneline 显示历史版本的第一行解释
- edc2180663f3710f9cd3d90347602e93e394452f (HEAD -> master) lsdjflasdfasdf
- 14fdf2b64a40d7ee6a7d71df46328dcd6e83fa05 luwen
git log --oneline 显示当前版本的之前版本的第一行解释,并且hash值只显示末尾
- edc2180 (HEAD -> master) HEAD@{0}: commit: lsdjflasdfasdf
- 14fdf2b HEAD@{1}: commit (initial): luwen
git reflog 显示所有版本的第一行解释,并显示版本指针,就是从当前版本移动需要多少步
- edc2180 (HEAD -> master) HEAD@{0}: commit: lsdjflasdfasdf
- 14fdf2b HEAD@{1}: commit (initial): luwe
git reset --hard 14fdf2b 转到哈希值对应的版本(只能后退)
git reset --hard HEAD^ 往后退一个版本(一个^表示退一个版本)
git reset --hard HEAD~3 后退3步
基本用hard
@删改及还原
已提交本地库的,指针到历史版本
尚未提交本地库的,指针用HEAD
git diff good.txt 修改后查看对比(工作区和暂存区比较)
git diff HEAD good.txt 工作区和本地库比较
P26
@windows里面的git转到路径斜杠表述:cd /c/Users/sunlu/.ssh/
廖雪峰
@下载
sudo apt-get install git
@创建目录
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
@创建仓
git init
@当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了,.git是隐藏的,用ls -a查看
(版本控制只能完全监控纯文本文件,像word、图片等二进制文件只能监控大小等变化)
@项目拷到目录中
cp -r ./* 目录地址
@把一个文件放到Git仓库,add可以多次,然后一次commit就行,-m表示加一下变更说明(提交所有git add .)
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
忽略提交
vim创建.gitignore(有些账户什么的,直接写文件名字保存里面)
@
@修改并查看修改详情及仓库状态
git diff yihang_work_1.25/manage.py
git status
@返回版本
git log
命令显示从最近到最远的提交日志;
git reset --hard HEAD^(如果是回退100个版本,HEAD~100,同时会把暂存区的修改回退到工作区。)
git reset --hard 1094a 根据commit id返回
git reflog
查看命令历史
@撤销
git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令。让这个文件回到最近一次git commit
或git add
时的状态。
@删除
git rm 工作区文件删除后,再用该命令删除仓库里的文件并git commit;
@远程仓库
ssh-keygen -t rsa -C "871216137@qq.com" 在.ssh
目录里面有id_rsa
和id_rsa.pub
两个文件,分别为私钥和公钥,将公钥复制到github里。可以自己搭一个git服务器,公司内部开发必备。
@创建远程仓
git remote add origin git@github.com:AKmendo/yihang_work_xiaohei_1.25 计划提交到我的账户/目录中(如果出现“不是一个 git 仓库”,转到目标目录并git init,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的);
git push -u origin master 确认提交,实际上是把当前分支
master
推送到远程,-u可以把要提交的和远程库的文件进行关联,以防不一致冲突,以后本地提交后,就可以直接用这个命令同步到远程库。
@克隆
git clone git@github.com:AK/gitskills.git(克隆是在当前目录下生成一个项目文件夹)
Git支持多种协议,包括https
,但通过ssh
支持的原生git
协议速度最快。
@创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
@查看远程库
git remote
@版本标签
git tag v1.0 在当前分支上的版本创建标签;
git tag 查看所有标签;
git tag v0.9 f52c633 给某个commit id打标签;
@github
git remote -v 查看远程库;
git remote rm origin 删除远程库的关联
;
@新环境下载远程仓并关联
新建文件夹;
激活 git init;
与远程分支建立连接 git remote add origin_yihang 远程仓ssh;
分支拉到本地 git fetch origin_yihang desktop(远程分支,码云可查);
本地创建分支并切换到该分支 git checkout -b master(本地分支) origin_yihang/desktop;
内容拉到本地 git pull origin_yihang desktop;
以后再有变更就用 git pull
@git配置过程中fatal:拒绝合并无关的历史
git pull origin master --allow-unrelated-histories (忽略版本不同造成的影响)
@git在win系统下add文件时出现LF警告
https://blog.csdn.net/qq_41249766/article/details/79354485
@
@pull远程库的时候提示本地有提交,合并失败:
git stash save "test-cmd-stash
@
@
@