1.创建远程仓库
无论在之后的第二步你是想从本地到远程还是远程到本地,创建远程仓库是第一步肯定的。(推荐克隆本地,然后把本地的代码拷入,然后add push)
因为clone ,github会帮忙创建一个banrch
.gitignore 设置项目类型
像我是在github上面建仓库,所以在GitHub网站操作新建自己的一个仓库,.gitignore 设置项目类型,.gitignore 是 Git 仓库中的一个特殊的文本文件,它里面记录了你不希望提交到仓库的目录和文件的名称或类型,例如你的 /build 目录;
如果是文件夹,直接在后面写上文件夹的名称就可以过滤掉,还可以过滤具有某些特殊后缀的文件,以及文件名指定文件
仓库的名称,可以是任意的:
如果第二步你是从远程clone到本地那么你需要注意,你的仓库名称就是你的项目名称。
如果第二步你是从本地push到远程那么你需要注意,你的项目名和你的仓库名可以是不一样的。
ssh和https的区别:推荐ssh
在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地。这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置。
.git
LICENSE 和 .gitignore 文件外,还有一个叫做 .git 的隐藏目录。 这个 .git 目录,就是你的本地仓库(Local Repository),你的所有版本信息都会存在这里。而 .git 所在的这个根目录,称为 Git 的工作目录(Working Directory),它保存了你当前从仓库中签出(checkout)的内容。
checkout切换分支,clone获取远程仓库代码
git工具
下载git.exe,Windows在使用git工具时,可以看到有两个命令输入窗:
1. Git CMD
2. Git Bash
两者的区别:Bash是基于CMD的,Bash在CMD的基础上新增了一些命令和功能,故建议使用Bash更方便。
Git GUI 是一个图形操作页面。
在项目工程上打开"Git Bash Here"这个命令行窗口上操作的,另外不建议cmd,建议git bash,可以补全
所有的命令都有快捷提示补充功能tab键,比如输入"git status"这个命令时,只需要输入"git stat"再按tab键就补充剩下的了,其他也是
2.初次把远程仓库取到本地
git clone 你刚复制的地址
这里需要注意的是:
1.你当前所在的目录是你项目的父目录。
2.你需要配置ssh。https://blog.csdn.net/qq_34291777/article/details/55052201?locationNum=1&fps=1
Please make sure you have the correct access rightsand the repository exists 或Permission denied (publickey).
想从Git库中克隆项目。没想到原来要进行密钥生成。就是和你https://github.com上的账号进行验证。在本机生成密钥与自己账号绑定。这样就可以从git上下项目了。(这也是为什么我们要fork别人的项目,fork了才方便自己clone和提交)
git config –global user.name “yourname”回车
git config –global user.email“your@email.com”回车
这两个命令相当于配置了密码,任何更改,在家目录下.gitconfig文件中更改
[user]
email = g1695698547@163.com
name = Gaoyongxian666
ssh-keygen -t rsa -C “your@email.com”(请填你设置的邮箱地址)回车(命令中的引号可以不加)最后在家目录 下找 .ssh 文件夹中的 id_rsa.pub 用记事本打开(不是那个文件)
3.初次把本地仓库推到远程
在你的项目目录下:
git init 初始化
git add . 提交全部
git status 查看状态
git remote add origin [写下你的仓库地址] 让本地仓库连接远程仓库
git commit -m "Initial commit" 提交信息(可以不加引号,加引号可以写多行注释)
git push origin master 提交到主分支
注意:
1.origin和master中不能有/
2.fatal: remote origin already exists. 或者用3
git remote rm origin
git remote add origin [url]
3.如何更改远程仓库 git remote set-url origin [url]
4.免密
1)新建文件并保存密码
$ touch ~/.git-credentials
$ vim ~/.git-credentials
2)添加内容
https://{username}:{passwd}@github.com
3)添加git配置
$ git config --global credential.helper store
另外还有一个更简单但安全性低一些的方案:执行这行代码:git config credential.helper store
在这之后你只需要再输入一次密码, Git 就会把你的密码保存下来,这之后就再也不用输入了。说它「安全性低」,是因为这条指令会让 Git 把你的密码以明文形式保存在你的电脑上。具体这两种保存密码的方案选择哪个,看你自己了
5.命令:
上面提到的都是一个文件一个文件的添加到staged,所以用"git add 文件名",添加所有文件到暂存区可以直接用“git add .”
提交直接用"git commit -m '你提交的信息'",推到中央仓库也可以直接用 "git push origin master"就好了
上面提到输入用户名和密码这个,我只知道把项目clone下来时不用"https 的那个url",而是用“ssh 的那个url”这样就不需要每次操作输入用户名和密吗
5.1 log查看提交记录
在这里你只能看到一个提交,这个提交是 GitHub 帮你做的,它的内容是创建你的初始 .gitignore 和 LICENSE 这两个文件。图中第一行中的 commit 右边的那一大串字符(09773235…21411),是这个 commit 的 SHA-1 校验和(如果不知道什么是 SHA-1,你可以暂时把它简单理解为这个 commit 的 ID);后面括号里的内容(HEAD -> master ...)稍后再讲;第一行的下面,依次是这个 commit 的作者、提交日期和提交信息,其中提交信息记录了这个提交做了什么,是提交者填写的(当然,这条提交信息是 GitHub 帮你写的)。
简单看一下这些信息,然后按 q 键退出吧,往下继续。
5.2 commit提交
现在你在项目的目录下输入:
git log, Show commit logs
可以在 git commit 后面接 -m ‘<变更日志>’ ,就不需要使用 vi 输入
注意:提交之前无论是commit还是push都要进行status 。
5.3 status 状态 与 add 追踪
git status Show the working tree status,用来查看工作目录当前状态的指令,只要不是暂存成功的,都需要add
git add Add file contents to the index
"untracked" 状态,它的意思是 Git 仓库对它没有进行任何记录,你在提交的时候不会把它提交上去,查看提交历史也不会看到它。总之,对于 Git 仓库来说,它是不存在的。
"staged"(已暂存)状态,意思是这个文件中被改动的部分(也就是这整个文件啦)被记录进了 staging area(暂存区)。
暂存区: staging area,是 .git 目录下一个叫做 index 的文件(嗯,它的文件名并不叫 stage )。
每个文件有 "changed / unstaged"(已修改), "staged"(已修改并暂存), "commited"(已提交) 三种状态,以及一种特殊状态。"untracked"(未跟踪)。
5.4 push到中央仓库
git commit 提交指令,提交到本地仓库
git push 提交一次或多次到本地后,把本地提交 push
到中央仓库
先pull 再push,防止冲突
5.5 pull更新本地仓库
git pull 是更新
5.6 一般的工作流程
git clone--写代码--git add--中间可以随时git status(总共四种工作状态)--git commit--git push---git pull---写代码
5.7 管理级别
Git 的管理是目录级别,而不是设备级别的。也就是说,/git-practice 目录内的 .git 只管理 /git-practice 里的内容,/git-practice-another 目录内的 .git 也只管理 /git-practice-another 里的内容,它们之间互不知晓,也互不影响。
5.8 完成提交
push/或者 commit 之后,i 输入提交信息, 然后esc 连续两个大写的Z 就保存且退出了.如果是commit -m 就不用这么麻烦。
fatal 致命的