git config --global user.name "用户名" # 配置用户名
git config --global user.email "邮箱" # 配置邮箱地址
git config -l # 查看配置信息
git branch # 显示本地仓库中的分支列表,当前的分支前会有一个星号标记。
git branch -r # 显示远程仓库中的分支列表。
git branch -a # 显示本地和远程仓库中的所有分支列表。
git branch <name> # 创建分支
git checkout <name> # 切换分支
git init # 初始化 git 仓库
git clone <repo> # 从 git 仓库中克隆项目
git status # 查看 git 当前状态
git status -s # 查看简易信息
git diff # 查看 git status 的详细信息
git add . # 将添加的文件或修改的文件加入本地的缓存区
git commit -m '注释' # 将缓存区内容添加到仓库中
git commit -am '注释' # 跳过 add 过程
git pull # 拉取 master 分支上的最新代码
git pull origin A # 拉取指定分支上的最新代码
对分支(branch)和分叉(fork)的个人理解:去别人的开源仓库,把项目 fork 到自己的仓库,在自己的仓库里创建 branch 开发新的功能。
HTTPS 可以随意克隆 Github 上的项目,而不管是谁的;而 SSH 则是,你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key,否则无法克隆。
HTTPS 在 push 的时候是需要验证用户名和密码的;而 SSH 在 push 的时候,是不需要输入用户名的,如果配置 SSH key 的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
查看本地是否有已经生成好的 ssh key:
cat ~/.ssh/id_rsa.pub
若有,则先删除:
cd ~
rm -rf .ssh
重新生成 ssh key:
ssh-keygen -t rsa -C "邮箱"
代码参数含义:
t
指定密钥类型,默认是 rsa ,可以省略。C
设置注释文字,比如邮箱。f
指定密钥文件存储文件名。
接着,连续按回车。
在.ssh目录下得到了两个文件:id_rsa(生成的私钥)和 id_rsa.pub(生成的公钥)。
查看新生成的 ssh key:
cat ~/.ssh/id_rsa.pub
登录GitHub,点头像,点Settings,点SSH and GPG keys,点New SSH key,输入Title和Key。
Title 可以自定义,Key 就是
cat ~/.ssh/id_rsa.pub
输出的内容。
点击 Add SSH key。
测试是否设置成功:
ssh -T git@github.com
设置成功后,即可不需要账号密码 clone 和 push 代码。
随便找了一个开源项目,fork 一份。
在本地 clone 一份:
git clone git@github.com:zhulu506/demo.git
git add
。git commit -m 'description'
。git pull
。git push
。在本地的 demo 项目里新建一个 .txt 文件,提交更改:
cd demo/ # 进入 demo 项目
echo "hello world" > new.txt # 新建一个 .txt 文件
git add new.txt # 添加跟踪
git commit -m 'add new.txt' # 提交到本地仓库
git push # 将本地提交同步到远程仓库
直接在 Github 网页上修改 .txt 文件。
从远程仓库拉取更新并合并到当前分支:
git pull
git pull
相当于先运行 git fetch
获取远程更新,再运行 git merge
合并更新到当前分支。
情况:拉取远程仓库后,在远程仓库创建了新的分支 v1。
# 最初在本地分支 master
git pull # 拉取 master 分支上的最新代码
git checkout v1 # 切换到分支 v1,跟踪远程分支 v1
touch new_file # 修改动作
git add .
git commit -m 'add new_file'
git push
情况:远程仓库存在分支 v2,将本地分支 v1 的更改提交到 v2。
# 最初在本地分支 v1
git pull
touch new_file
git add .
git commit -m 'add new_file'
git push origin v1:v2
将本地分支推送到不同远程分支:git push <远程仓库名称> <本地分支名称>:<远程分支名称>
情况:本地存在分支 v1,将修改提交到本地分支 v3,再提交到远程分支 v3。
# 最初在本地分支 v1,远程仓库中还没有分支 v3。
vi new_file # 修改动作
git status # 将 v1 分支上的修改暂存起来
git checkout -b v3 # 在本地新建分支
git stash pop # 将暂存的修改放到新建分支中
git add .
git commit -m 'updata new_file'
git push -u origin v3 # 将提交的内容 push 到远程分支 v3
如果远程仓库没有该分支,则需要设置 upstream:git push --set-upstream origin target-branch-name
,或简写为:git push -u origin target-branch-name
。