git初次使用
这里说个有趣的事,如果电脑上之前没有git,为了使用,去下载一个,初次使用git需要设置姓名和邮箱,每次提交至远程,git都有记录,知道是谁提交了什么
git config --global user.name “Jhon”
git config --global user.email “johndoe@example.com”
设置好之后,以后所有的仓库都不用再重新设置
还有一种情况就是电脑里的git有其他人使用过,那么需要把git默认用户名及邮箱进行更改
首先,用config --list查看下当前有没有默认的用户名及邮箱
如果有,那么进行如下操作更改;
git config --gloabl --replace-all user.name "Mary"
git config --global --replace-all user.email "123456@qq.com"
那么git的的用户名及密码就已更改,在后期工作中,如果哪天你的代码造成重大 bug,方便产品经理来砍你
Git使用优势
关于版本控制,版本控制是一种记录一个或若干个文件内容,以便将来查阅特定版本修订情况的系统。
版本控制有三种:本地版本控制系统,集中式的版本控制系统(SVN)有一个服务器,如果A修改,从服务器拉过来,改完再上传服务器,B可以再改。服务器是一个集中的中心节点,所有操作都必须提交到中心节点。缺点:断网,提交不了;服务器坏了,全没有了。
分布式版本控制系统(Git):本地、远程都有一个仓库,两个仓库是一样的,本地仓库没有问题,再提交至远程仓库。断网时可先保存至本地仓库,相对安全。
- 可随时查看之前版本,多人合作时,我改完,上传,别人再接着改,可以简单实现分支管理。
- 速度快
- 设计的原理简单
- 允许上千个并行分支
- 分布式
git hub的注册
1.2.
3.##一般第一次进入git hub点击新建一个项目就会进入如下页面:
创建一个远程库后,发现右侧的clone 或者download协议一般默认是https,需更改为ssh协议
此外还有一种,是之前有git hub 账号,进入之后,在右中部有一个 New Respository
此步骤跟上面基本一致
填写repository name ,点击create repository
4.https(每次都需要用户名和密码),一般选择SSH协议(在使用过程中,不需要输入用户名和密码,需要设置公钥和私钥对,公钥进行匹配 ssh-keygen -t rsa -b 4096 -C+地址公钥给别人,私钥留给自己,进行匹配)
点击Git Hub里的个人设置settings,创造新的SSH密钥,
5.复制内容至Git Bash,之后一直点击回车键即可
6.此时已生成ssh.pub文件,切换cd到家目录下的.ssh文件,ls查看文件夹下的内容,复制cat id_rsa.pub
7.复制以上内容,到git hub上
8.git clone 将Git Hub上的blog文件(前期在github 上新建的仓库)拷贝至本地仓库
- cd blog1,切换到blog1文件,ls blog1查看blog1下的文件,vim index.html,并在vim编辑内容并保存,git add . 将index.html添加到本地仓库,git commit -am "add",提交,git push origin master推送到Git Hub.
可以将Git Hub上设置为网页代码,可让别人看的
1.进行设置
2.将GitHub Pages设置为master branch 并保存
3.即可以显示代码及页面
github在本地创建仓库,将远程的信息克隆到本地,操作,再推送
- 已提交的(mommitted)该文件已经被安全地保存在本地数据库中
- 已修改(modified)修改了某个文件,但还没有提交保存
- 已暂存(staged)把已修改的文件放在下次提交时要保存的清单中
1.选择你的项目保存文件夹,
cd test
2.将远程仓库的内容克隆至本地项目文件夹test
git clone git@github.com:Super-Mary/test.git
3.添加文件夹及文件
touch a.html 添加文件
mkdir abc 添加文件夹
echo "hello" > a.html,将“hello”导入a.html
4.将文件放入暂存区
git add .
当前文件夹下的所有新增和修改都放入
5.git status检测是否是暂存区内容
6.将所有的变动放入本地仓库
git commit -am "add"(-a是所有的,m是备注 “”里面些什么都可以)
7.推送
git push origin master(第一次使用,其他可使用git push)已推送至远程分支
Administrator@PC-20170629JWFL MINGW64 ~
$ git config --global myc901225
error: key does not contain a section: myc901225
Administrator@PC-20170629JWFL MINGW64 ~
$ git config --global user.name myc901225
Administrator@PC-20170629JWFL MINGW64 ~
$ git config --global user.email 572280245@qq.com
Administrator@PC-20170629JWFL MINGW64 ~
$ pwd
/c/Users/Administrator
Administrator@PC-20170629JWFL MINGW64 ~
$ mkdir test
Administrator@PC-20170629JWFL MINGW64 ~
$ cd test
Administrator@PC-20170629JWFL MINGW64 ~/test
$ git clone git@github.com:myc901225/blog2.git
Cloning into 'blog2'...
The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Administrator@PC-20170629JWFL MINGW64 ~/test
$ git clone git@github.com:myc901225/blog2.git
Cloning into 'blog2'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Administrator@PC-20170629JWFL MINGW64 ~/test
$ ssh-keygen -t rsa -b 4096 -C "572280245@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa.
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:e09AoJvXEzl32UT7fIrAhtaBSM14PfVa8bMKGqlFXmc 572280245@qq.com
The key's randomart image is:
+---[RSA 4096]----+
| .+.. .. ..o|
| ..o+oo. . *.|
| o...*o.E=oo|
| oo*o=o+ .+|
| o S=O.. .+|
| oooo+.....|
| .... o.. |
| . o |
| . |
+----[SHA256]-----+
Administrator@PC-20170629JWFL MINGW64 ~/test
$ ls
Administrator@PC-20170629JWFL MINGW64 ~/test
$ pwd
/c/Users/Administrator/test
Administrator@PC-20170629JWFL MINGW64 ~/test
$ cd ~/.ssh
Administrator@PC-20170629JWFL MINGW64 ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts
Administrator@PC-20170629JWFL MINGW64 ~/.ssh
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzG23/s2MBGIowxWw992DSdvHmONicL+dtxxogfcgXFAGuc5KIpdZlVq5gw/45OHZHbHjj0t4DhOxXvhn1GCgA44tA678+CEwMAOi5qXa0LfMY4EfaE6k0gfMVhv+AB01Yimkmn6sb02hUEmONyVpNoG+TQbvRkmEMIT3dI8pAVBxK44lqrlkiiljxxIa5ErHm+MnhAtlEWyjBxD+AM87lmpRy3yfudwC3zwfO1aLyX6HqIyvcDOsKxMz0MpUp6w9P+z1C5JcBe/pkOoycfNs1YUEJh9WNfyicgejJxriJPZIDsDKklDd8pS2Vqwu3ur1vgrKtQlqlsxweWhjm48h+mfErG4OxCy+b4HyT9fDUBULZ5F1hiQ4Uc/WuuuCVa9Z93Pt+DnZrDmfiOvMK25pI4B6BmH3dpMgI6cm4U2LCK3N2lrGke7rg++PSacHYQuYFXi6gMZEd3/6hnehHQr+sQ98js5jAPKgfkeVWIV5DJHImwZ2kJsd6/aOEaK18rWkUmqkMEaSrR0Df4nefOKJ8I1+o7qGpc7o4VL7ih6SJQSJR3iATTDtLMhrdJcMszHfbpipuZBcxpCjGeLdYfbspBh6Zpg0LSeD+zsgDnYgCf7jgNFEF14EXOJpMNVT9pd6fJRvpcWXwDbiL6MB/J7bIVX40/W4DIb7FO7MkVNJecQ== 572280245@qq.com
Administrator@PC-20170629JWFL MINGW64 ~/.ssh
$ cd ../
Administrator@PC-20170629JWFL MINGW64 ~
$ pwd
/c/Users/Administrator
Administrator@PC-20170629JWFL MINGW64 ~
$ cd test
Administrator@PC-20170629JWFL MINGW64 ~/test
$ mkdir blog3
Administrator@PC-20170629JWFL MINGW64 ~/test
$ git clone git@github.com:myc901225/blog2.git
Cloning into 'blog2'...
Warning: Permanently added the RSA host key for IP address '192.30.255.112' to the list of known hosts.
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Administrator@PC-20170629JWFL MINGW64 ~/test
$ touch 重识markdown.md
Administrator@PC-20170629JWFL MINGW64 ~/test
$ vim 重识markdown.md
Administrator@PC-20170629JWFL MINGW64 ~/test
$ git add .
fatal: Not a git repository (or any of the parent directories): .git
Administrator@PC-20170629JWFL MINGW64 ~/test
$ cd blog2
Administrator@PC-20170629JWFL MINGW64 ~/test/blog2 (master)
$ git add .
Administrator@PC-20170629JWFL MINGW64 ~/test/blog2 (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: "\351\207\215\350\257\206markdown.md"
Administrator@PC-20170629JWFL MINGW64 ~/test/blog2 (master)
$ git commit -am "add"
[master 15b30c1] add
1 file changed, 1 insertion(+)
create mode 100644 "\351\207\215\350\257\206markdown.md"
Administrator@PC-20170629JWFL MINGW64 ~/test/blog2 (master)
$ git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 308 bytes | 308.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:myc901225/blog2.git
dbd094a..15b30c1 master -> master
若远程的东西已修改,本地仓库没有修改,在推送之前,用git pull将远程的仓库和本地仓库自动合并,并进入VIM编辑器的命令模式,没有问题直接退出保存即可,再重新执行git add . git commit -am "add" git push即可。
修改删除文件
mkdir abc创建abc文件夹
cd abc 在abc文件夹下操作
touch a.html 新建a.html文件
vim a.md 编辑保存退出,
git stastus
git add .
git commit -a进入VIM编辑器,可进行修改,保存退出后,git push即可
删除文件
可用git add .
git commit -am "delete b.html"
git push
本地新建空文件夹,需要git init使本地文件夹初始化仓库,如果起初没有仓库,这样会覆盖,用一个空文件夹覆盖 .git文件夹即为仓库
git remote add origin 远程仓库的地址,给远程仓库起名为origin,方便记忆
用的时候再本地即可 git push origin master
git remote -v查看本地库里的远程库地址
git push -f origin master将本地仓库,强制推送,觉得远程没有用,直接推送,可以覆盖所有
git remote add
git remote remove abc删除abc标签
修改origin标签对应的地址
git remote set-url origin 新的地址
分支操作:实现了多个人同时开发多个功能,待各自开发完成后,合并主干,即为最新的。
git branch -a查看所有分支,红色的远程分支,蓝色的是本地分支,*是当前所处分支
open可打开文件
git checkout master 切换到主干
不同分支展示的内容是不同的
在本地创建一个分支,经过修改,再合并
git branch dev
git checkout dev
touch a.md
git add .
git commit -am "add a.md"
git push origin dev
git checkout master
git merge dev
git push origin master
当自己和别人改同一个文件的同一个地方,在执行git pull时更新本地合并时会出现冲突
远程有别人更改为index.html为“你好”,而本地自己更改index.html为“Hello”,提交时会产生冲突,git执行自动合并时,不知道要怎么办。选择哪一个,需要手动打开文件,进行修改,修复冲突的方法就是 vim index.html 找到文件,并修改
git bash 命令行
pwd当前终端窗口所在位置,查看当前文件的路径
ls 查看当前目录下的文件,不包括隐藏文件
ls -a 查看当前千目录下的文件,包括隐藏文件
ls -al查看当前目录下的文件的详细信息,包括隐藏文件
cd切换目录 cd +文件名,下一级文件
cd ../上级文件
cd /c/projrct打开c盘project文件夹
cd code 打开code文件夹
cd ../css打开上级目录的css文件夹
cd ~/Desktop 打开桌面上的,家文件
tocuch a.html新建一个a.html文件
rm a.html删除a.html文件,但是不能删除文件夹
rm -r tasks 删除tasks文件夹,会有进一步提示是否删除
rm -rf tasks强制删除tasks文件夹,直接消失
mv a.html abc.html把a.html重命名为abc.html
mkdir www创建一个www的文件夹
cd /根目录
~家目录
clear是清空当前内容