git相关
1) git安装与配置
1.1) Git for Windows. 镜像文件下载
Git for Windows. 国内直接从 官网下载 比较困难,需要翻墙。这里提供一个国内的下载站 git下载 ,方便大家下载。
1.2) git配置
配置用户名和邮箱
初次安装git需要配置用户名和邮箱,否则git会提示:please tell me who you are.
git config --global user.name "xiao"
git config --global user.email "xx@qq.com"
此用户名和邮箱是git提交代码时用来显示你身份和联系方式的,并不是github用户名和邮箱
配置使用git协议–ssh密钥
git支持https和git两种传输协议,github分享链接时会有两种协议可选:
git使用https协议,每次pull, push都会提示要输入密码,使用git协议,然后使用ssh密钥,这样免去每次都输密码的麻烦
初次使用git的用户要使用git协议大概需要三个步骤:
- 生成密钥对
- 设置远程仓库(本文以github为例)上的公钥
- 把git的 remote url 修改为git协议(以上两个步骤初次设置过以后,以后使用都不需要再次设置,此步骤视以后项目的remote url而定,如果以后其他项目的协议为https则需要此步骤)
1.生成密钥对
大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有操作系统上都差不多。
1.查看本机是否已经有密钥对
SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:
cd ~/.ssh
进入账号主目录下的 ~/.ssh 目录,例如:C:\Users\Liu.ssh 这里的.shh文件夹
ls
查看文件夹里的子文件
看一下有没有id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之类成对的文件),有 .pub 后缀的文件就是公钥,另一个文件则是密钥。
2.假如没有这些文件,甚至连 .ssh 目录都没有,可以用 ssh-keygen 来创建密钥对
ssh-keygen -t rsa -C "your_email@youremail.com"
创建密钥对
上面生产密钥对过程中建议不要输入密码passphrase,输入passphrase在公钥添加到远程仓库是会用到,git操作的时候也要输入,而且据调查是git为了保证安全没有重新修改密码的选项,这样忘了的话很麻烦。
作为懒蛋一个 和 7秒记忆的我,可以重新生产一个不带密码的密钥对
然后在GitHub更新一下公钥就ok了
如上如,本地的密钥对就生成
2.添加公钥到你的远程仓库(github)
1、查看你生成的公钥:
cat ~/.ssh/id_rsa.pub
查看公钥
2.登陆你的github帐户。点击你的头像 —> Settings —> 左栏点击 SSH and GPG keys —> 点击 New SSH key
3、然后你复制上面的公钥内容,粘贴进“Key”文本域内。 title域,自己随便起个名字。
4、点击 Add key。
5、测试 SSH 连接,参考 github 帮助文档
ssh -T git@github.com
第一处输入yes回车生成known_hosts文件,第二处输入生成密钥对时设置的密码
如上图,公钥添加到的远程仓库(github)成功
3.修改git的remote url
git remote -v
查看你当前的 remote url
如果是以上的结果那么说明此项目是使用git协议进行访问的(如果地址是https开头则表示是 https协议)
如果是https协议,可以登录github,复制ssh链接,然后使用命令 git remote set-url 来调整你的url,再用命令 git remote -v 查看一下,url是否已经变成了ssh地址
git remote set-url origin git@github.com:Eva-3288/js-demo.git
配置完后,就可以愉快的使用git fetch, git pull , git push,再也不用输入烦人的密码了
2) 初始化仓库
2.1) 初始化本地仓库,并提交内容到本地
打开 命令行终端
cd d:
进入D盘
mkdir js-demo
新建文件夹 js-demo
cd js-demo
进入文件夹 js-demo
git init
初始化本地仓库,此时仓库是空的
Git会自动为我们创建唯一一个master分支,我们能够发现在当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了
touch README.md
新建一个.md文件 - 说明文档
ls
查看文件夹下文件
git status
查看修改
git add .
添加全部已经修改的文件,准备commit 提交 该命令效果等同于 git add -A
git commit -m '提交说明'
将修改后的文件提交到本地仓库,如:git commit -m ‘增加README.md说明文档’
2.2)从github创建一个空的仓库
如果我们在创建远程仓库的时候添加了README和.ignore等文件,我们在后面关联仓库后,需要先执行pull操作
2.3)连接到远程仓库,并将代码同步到远程仓库
git remote add origin 远程仓库地址
连接到远程仓库
连接到github上远程仓库并为该仓库创建别名origin . 这个别名是自定义的,通常用origin,之后push 或者pull 的时候就需要使用到这个 origin 别名;
如果本地仓库有内容,上传时git pull origin master --allow-unrelated-histories
github 的仓库和本地的没有一个共同的 commit 所以 git 不让提交,认为是写错了 origin ,如果开发者确定是这个 origin 就可以使用 --allow-unrelated-histories 告诉 git 自己确定
因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在 git pull 之后,这句代码是在git 2.9.2版本发生的,最新的版本需要添加 --allow-unrelated-histories 告诉 git 允许不相关历史合并
假如我们的源是origin,分支是master,那么我们需要这样写git pull origin master --allow-unrelated-histories
————————————————
版权声明:本文为优快云博主「lindexi_gd」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/lindexi_gd/article/details/52554159
git remote -v
git查看远程仓库地址
git push -u origin master
同步代码到远程仓库
创建一个 upStream (上传流),并将本地代码通过这个 upStream 推送到 别名为 origin 的仓库中的 master 分支上
-u ,就是创建 upStream 上传流,如果没有这个上传流就无法将代码推送到 github;同时,这个 upStream 只需要在初次推送代码的时候创建,以后就不用创建了
mac 命令行冲突写commit 记录时,操作如下:
- press “i” (i for insert)
- write your merge message
- press “esc” (escape)
- write “:wq” (write & quit)
- then press enter
参考:
mac命令行问题
3) git- 忽略某个文件(git提交忽略不必要的文件或文件夹)
忽略文件有两种方式: .gitignore 和 .git/info/exclude ; 这两种不同的是 .gitignore 这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。而 .git/info/exclude 这里设置的则是你自己本地需要排除的文件。 他不会影响到其他人。也不会提交到版本库中去。
使用 .gitignore 文件
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。该方法保证任何人都提交不了配置忽略的文件
- 进入本地仓库文件夹,右击“Git Bash Here”,然后执行如下命令,在仓库中创建隐藏文件
.gitignore
:
- 因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件。
- .gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。
touch .gitignore
- 用文本编辑器 输入需要忽略的文件或文件名:
1.
/target/
:过滤文件设置,表示过滤这个文件夹
2.*.mdb ,*.ldb ,*.sln
表示过滤某种类型的文件
3./mtk/do.c ,/mtk/if.h
表示指定过滤某个文件下具体文件
4.!*.c , !/dir/subdir/
!开头表示不过滤
5.*.[oa]
支持通配符:过滤repo中所有以.o或者.a为扩展名的文件
注意:
.gitignore
只能忽略那些原来没有被track(跟踪)的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的
正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
git update-index --assume-unchanged FILE 在FILE处输入要忽略的文件。
如果要还原的话,使用命令:
git update-index --no-assume-unchanged FILE
.gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件 可以当作是一个 placeholder 。当你需要为项目创建一个空的 log 目录时, 这就变的很有用。 你可以创建一个 log 目录 在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。
配置.git/info/exclude文件
通过配置.git/info/exclude文件来忽略文件。这种方式对仓库全局有效,只能对自己本地仓库有作用,其他人没办法通过这种方式来共享忽略规则,除非他人也修改其本地仓库的该文件。
4) git常用操作
提交:
git status
git add .
git commit -m"备注"
git status
git pull origin v.1.4.1.3.20 //拉取
git status
git push origin v.1.4.1.3.20 //推送
切换新分支:
git fetch
$ git checkout -b v.1.4.1.3.20 origin/v.1.4.1.3.20
切换已有分支:
$ git checkout v.1.9.1.5.25
撤销未提交的修改:
$ git checkout -- .
查看提交记录:
$ git log (查看所有)
$ git log -5 (查看最近5次)
查看某次的修改内容:
$ git show XXXXXXX