使用Git的大忌:
- 没什么有价值的修改就提交,也就是没有意义的提交
- 提交到别人的分支
- 提交的代码又引入了新的更严重更明显的bug,也就是不如不提交。比第一条更严重,让别人也无法合并
如果git下载不成功,试试下面的代理1
git clone https://mirror.ghproxy.com/https://github.com/stilleshan/dockerfiles
wget 和 curl 同理1
2wget https://mirror.ghproxy.com/https://github.com/stilleshan/dockerfiles/archive/master.zip
curl -O https://mirror.ghproxy.com/https://github.com/stilleshan/dockerfiles/archive/master.zip
在本地建立仓库到push的过程:
1 | git init |
提交会附带消息和一个哈希值,哈希值是一串包含数字和字母的随机序列。
生成公钥
单独push某文件
1 | git commit test.cpp |
删除Repository
在GitHub网站上操作,打开要删除的Repository,点 Settings
Commit message 用 emoji
初次提交示例:1
git commit -m ":tada: Initialize Repo"
🆕 (全新) :new: 引入新功能
(闪电) :zap: 提升性能
🔖 (书签) :bookmark: 发行/版本标签
🐛 (bug) :bug: 修复 bug
(急救车) :ambulance: 重要补丁
(扳手) :wrench: 修改配置文件
(加号) :heavy_plus_sign: 增加一个依赖
➖ (减号) :heavy_minus_sign: 减少一个依赖
(备忘录) :memo: 撰写文档
(锤子) :hammer: 重大重构
🔥 (火焰) :fire: 移除代码或文件
撤销对文件的修改
对 test.cpp
修改后,打算返回上次提交的状态,使用命令:1
git checkout -- qclipper.cpp
如果要撤销 所有文件 的修改,命令为:1
git checkout -f
git diff ReadMe.mdown
表示在commit之前查看文件修改哪些地方, 在commit之后使用此命令无效。
避免每次提交时登录
如果我们git clone的下载代码的时候是连接的https://而不是git@git (ssh)的形式,当我们操作git pull/push到远程的时候,总是提示我们输入账号和密码才能操作成功,频繁的输入账号和密码会很麻烦。
解决办法:git bash进入你的项目目录,输入1
git config --global credential.helper store
然后你会在你本地生成一个文本,上边记录你的账号和密码。不用关心在哪,使用上述的命令配置好之后,再操作一次git pull,然后它会提示你输入账号密码,这一次之后就不需要再次输入密码了。
在Github找到以前提交的版本
点击commits
点击红圈的标志,进入旧版本的repository
,然后可以下载
重命名文件
1 | git mv file.cpp new_file.cpp |
删除远程库的某文件
1 | git rm file.cpp |
从本地库中删除了,再push就可以从远程库删除
从远程仓库拉取
1 | git init |
修改commit message
上一次的message如果需要修改,使用:git commit --amend
如果上一次的commit已经push了,那么需要强制提交 git push -f origin master
修改别人的代码
先到别人的项目上fork到自己的GitHub下,clone下来以后进行修改,push到自己的项目。
在自己的项目页面pull request
,把我的修改发到对方的项目里,GitHub同时给对方发了邮件,由对方决定是否接受修改。
注意:不要在对方的项目页面clone
查看当前用户名和邮箱
1 | git config user.name |
修改用户名和地址,不加global只能生效一次1
2git config --global user.name "your name"
git config --global user.email "your email"
打标签
Git 中的tag指向一次commit的id,通常用来给开发分支做一个标记,如标记一个版本号。1
git tag -a v1.01 -m "Relase version 1.01"
注解:git tag 是打标签的命令,-a 是添加标签,其后要跟新标签号,-m 及后面的字符串是对该标签的注释。
gitignore
gitignore
在本地仓库的根目录,执行文件屏蔽 屏蔽规则
问题累计
对git本地仓库,使用rm
而不是git rm
删除一个文件A后,直接commit 和 push,远程仓库仍然有A。此时已经不能再执行git rm
了,所以将删除动作添加到暂存区 git add .
,然后再commit 和 push
git add
报错: fatal: in unpopulated submodule
先执行 git rm --cached . -rf
,再 git add
github push 代码出现fatal: Authentication failed for
2021.8月份开始远程登录不在支持使用账户密码的方式,解决方法: 把git remote add origin https://github.com/xxx/xxx.git
换成 git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git