赞
踩
其实我用svn用了好多年了,git一直断断续续的用,老忘记一些用法,干脆写下来,方便查阅。
地址:https://git-scm.com/downloads
安装完git后,其实就能用了,不需要配环境变量。不过一些用到git的编程软件,像IDE这种是需要配置一下git.exe的路径。
在任意位置打开git-bash
键入
where git
结果就出来了
不管是使用GitHub还是GitLab,为了保证账户和数据的安全,都是需要验证的。主要有下面几种方式:双重身份验证、SSH、提交签名。
参考文档:authenticating-to-github
使用SSH协议,您可以连接和验证远程服务器和服务。一般要有私钥和公钥,生成后将公钥添加到GitHub或者GitLab对应位置,将私钥添加到ssh-agent。
ls -al ~/.ssh
打开git-bash键入以下命令之一即可
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-keygen -t ecdsa -C "your_email@example.com"
ssh-keygen -t rsa -C "your_email@example.com"
然后设置安全密码(直接回车表示没有安全密码),安全密码能避免有人拿到密钥之后乱搞。然后初次运行 Git Bash 时,系统会提示要输入密码。
添加或修改密码示例:
ssh-keygen -p -f ~/.ssh/id_rsa
确保ssh-agent在运行,用git-bash运行
eval `ssh-agent -s`
输出
Agent pid 59566
然后添加(这条可能不需要)
ssh-add ~/.ssh/id_rsa
GIthub->Settings->SSH and GPG keys->New SSH,复制id_rsa.pub文件的内容到Key值,输入标题然后添加SSH key。
使用SSH密钥,可以连接到GitHub,而无需在每次访问时提供用户名或密码。但是也有一些原因会造成不好使,比如.ssh下的配置文件配置错误,再比如ssh代理没有运行。这时候使用个人访问令牌就比价好了。
个人访问令牌来代替密码,可以设置令牌的作用域或权限。
Github在Settings->Developer settings->Personal access tokens
GitLab在Settings->Access Token
GitHub能设置的权限比较多,GitLab的少;GitHub会自动删除一年内未使用过的个人访问令牌,GitLab则在一开始就设置令牌的到期时间。
新建完成后,把token字符串好好保存。
使用“ -f ”来指定文件名,示例:
ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/xxx-rsa
没有路径,我们就先创建文件夹再执行ssh-keygen
cd ~
cd .ssh
mkdir jack
ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/jack/xxx_rsa
当然路径还可以是其他,D盘、E盘都可以。
使用命令ssh-keygen -t rsa -C “your_email@example.com”,生成的私钥开头是
-----BEGIN OPENSSH PRIVATE KEY-----
//使用以下命令强转成pem格式
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
再打开私钥文件,开头变成
-----BEGIN RSA PRIVATE KEY-----
可直接使用命令ssh-keygen -m PEM -t rsa -b 4096 -C “your_email@example.com”
取消全局代理
git config --global --unset http.proxy
git config --global --unset https.proxy
设置全局代理,本人使用了一个代理,本地地址是http://127.0.0.1:8123,所以设置如下
git config --global http.https://github.com.proxy http://127.0.0.1:8123
git config --global https.https://github.com.proxy http://127.0.0.1:8123
结果就是原来30kb/s的速度变成了4M/s,如图所示:
注意:上面代理设置只对使用http和https协议的连接生效,不会对通过ssh连接的操作产生影响。建议首先使用ssh协议进行clone,速度比较客观,速度很慢再换https,https速度还不行,最后再设置代理。
主要是方便,在个人电脑上通过git的操作,都会使用这个用户名和邮箱。
git config --global user.name "name"
git config --global user.email name@example.com
windows下.gitconfig文件在C:\Users\Administrator目录下
使用文本编辑器打开,修改[http]和[https],示例如下,本地环回接口8123端口开了代理:
[http "https://github.com"]
proxy = http://127.0.0.1:8123
[https "https://github.com"]
proxy = http://127.0.0.1:8123
额,也许https有问题,把远程地址从https://换成git@。还有可能是你代理的问题,请参考上文,把代理删掉。
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
说明
解释:绿色的5位字符表示提交的ID,分别指向父节点。分支用橘色显示,分别指向特定的提交。当前分支由附在其上的HEAD标识。 这张图片里显示最后5次提交,ed489是最新提交。 master分支指向此次提交,另一个maint分支指向祖父提交节点。
把需要忽略的文件写进忽略清单里,提交时会自动忽略清单里的文件。示例:
.project
.gradle
.idea
*.iml
build
在一个工作目录下执行git init会在这个目录创建一个.git文件夹,文件夹是隐藏的。
一般开发流程:在工作区执行init,然后执行git clone命令把远程项目拉到本地。然后各种修改之后,在项目文件夹执行各种git命令(pull add commit push等)
git clone <repo>
//克隆到指定目录directory
git clone <repo> <directory>
git add命令将文件添加到暂存区
git add [file1] [file2] ... #添加多个文件
git add [dir] #添加目录,目录下的也会被添加
git add . #添加当前目录下所有文件
结合git status命令,可以查看哪些文件是新添加的,哪些被修改了,哪些被删了。
提交暂存区修改到本地仓库。
git commit -m [message]
#示例
git commit -m "feat(rules): add body-full-stop rule"# 添加新功能 body-full-stop规则
git commit --amend #修改最后一次提交(需要同时修改提交内容和提交信息)
git commit --amend --no-edit #修改最后一次提交(仅修改内容不修改提交信息,常用于修改笔误)
关于-a命令:会自动暂存已修改和删除的文件,但是对于未新增的文件没有作用。
关于提交规范可以查看:
值得一试:commitlint
将本地的修改推送到远程。
命令格式
git push <远程主机名> <本地分支名>:<远程分支名>
分支名相同可以省略
//将本地的master分支推送到远程的master分支
git push origin master
强制推送(不建议这么搞 本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。