本篇总结了 Git 使用过程中主要将用到的命令和其它一些问题的解决方法,包括:
- Git 分支管理
- 本地仓库-远程仓库的拉取/推送/关联
.gitignore
文件。- 用户邮箱配置
- SSH Key 配置
分支
创建 Git 分支,可以在原来的版本链上衍生出一条新的、独立的版本链,在新链上进行开发,再合并到主链中,这是协同开发和版本控制的精髓。
增删分支
# 创建分支
git branch new_branch_name
# 切换分支
git checkout branch_name
# 创建分支,并切换到新分支
git checkout -b new_branch_name
# 合并分支
git merge branch_name
# 删除分支
git branch -d branch_name
查分支
# 检查分支版本
git log --oneline --decorate
# 查看分支分叉历史
git log --oneline --decorate --graph --all
从另一个分支同步特定文件
git checkout <另一个分支名> <特定文件名>
远程库推送、拉取
本节内容为如何关联本地库与远程库,将你的代码托管在网络上,作为备份或和合作者协同开发。
远程库查询、增加、删除
# 查询
git remote -v
# 增加
git remote add origin <你的项目地址>
# 删除
git remote rm origin
推送到远程库
git push <远程主机名> <本地分支名>:<远程分支名>
首次推送并关联分支
git push -u origin master
从远程库拉取
git pull = git fetch + git merge
git pull <远程主机名> <远程分支名>:<本地分支名>
如果报错:本地和远程库是独立构建的,那么添加如下参数即可:
git pull origin master --allow-unrelated-histories
.gitignore
在 .gitignore 文件中声明的文件名,将不会被 Git 追踪(也就不会对它们进行版本控制、推送到远程库等),除非在更新 .gitignore 之前它们已经被追踪。
.gitignore 只对未追踪的文件生效
解决方法
注意:该方法会将暂存区里面的文件也同时删除!
在目标分支下,
git rm -r --cached <想重新忽略的文件名>
git add .
git commit -m "update gitignore"
设置 Git 用户名和邮箱
全局范围配置方法
git config --global user.name "github’s Name"
git config --global user.email "github@xx.com"
git config --list
只作用于当前项目的配置方法
git config user.name “gitlab’s Name”
git config user.email "gitlab@xx.com"
git config --list
也可以直接修改项目文件夹的
.git/config
文件,这个文件还可以配置 Git 的很多东西,包括关联的远程库地址、用户等。
SSH Key
SSH Key 是一个身份标识,用于让远程库(比如 GitHub)识别出你这台计算机的身份,从而不需要密码就可以安全提交。
第一步:生成 public key 和 private key
cd ~/.ssh
ls
# 此时会显示一些文件
mkdir key_backup
cp id_rsa* key_backup
rm id_rsa*
# 以上三步为备份和移除原来的SSH key设置
ssh-keygen -t rsa -C "邮件地址@youremail.com" #生成新的key文件,邮箱地址填你的Github地址
# Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<回车就好> #如果是二次创建,需要输入新的文件名
# 接下来会让你输入密码
第二步:查看 SSH 公钥
cd ~/.ssh
ls # 会列出文件,里面包含公钥文件
vim id_rsa.pub # 用 vim 编辑器打开公钥文件
# 复制文件内容到 github 即可
第三步:测试 SSH
ssh -T git@github.com
# 之后会要你输入yes/no,输入yes就好
一台电脑多个 Git 账号,配置多个 SSH Key 的方法
第一步:创建 SSH KEY
同上
第二步:配置 config 文件
查看用户~/.ssh下是否存在 config文件,如不存在使用命令 touch config创建,然后配置config
# 配置github.com
Host github.com
HostName github.com
IdentityFile C:\\Users\\popfisher\\.ssh\\id_rsa_github
PreferredAuthentications publickey
User username1
# 配置git.oschina.net
Host git.oschina.net
HostName git.oschina.net
IdentityFile C:\\Users\\popfisher\\.ssh\\id_rsa_oschina
PreferredAuthentications publickey
User username2
第三步:测试
ssh -T git@git.oschina.net
如果配置正确会提示 Hi your git account two in github ! You've successfully authenticated, but GitHub does not provide shell access.
使用方法:clone 项目到本地
原先操作是: git clone git@github.com:yourAccount/xxx.git
现改为:git clone git@git.oschina.net:yourAccount/xxx.git