git 是常见的版本控制软件。
但是如果不经常使用的话,就会忘记一些基本的命令操作。
本文的目的也是对常见的命令做一个备忘,同时希望可以帮助到大家。
创建 git 仓库
mkdir testone
cd testone
git init
会出现以下结果
Initialized empty Git repository in /home/xxx/excirsises/testone/.git/
当前目录下会创建 .git 目录,git 的版本文件就保存在里面。
添加一些文件然后提交
touch readme.md
git add readme.md
git commit -m 'just for test'
配置用户信息
git config --global user.email 'xxx@xxx.com'
git config --global user.name 'frank909'
从远程克隆仓库
git clone ssh://xxx@xxx.xx.xxx.xx/~/xxx/testone
从远程仓库克隆到本地
查看分支
git branch
# 查看本地和远程的分支情况
git branch -a
创建分支
# 创建名为 dev 的分支
git branch dev
切换分支
# 从当前分支切换到 dev
git checkout dev
创建同时切换分支
git checkout -b hot-fix
在当前分支上创建分支 hot-fix,并切换到 hot-fix
删除分支
git branch -d hot-fix
注意的是,如果你当前在 hot-fix 分支上,要先切换到其他分支,才能删除 hot-fix 分支。
将本地仓库和远程仓库关联
前提条件是远程仓库要先存在。
mkdir test.git
cd test.git
git init --bare
首先登录到远程服务器上并新建一个目录,然后初始化一个空的仓库。
再之后回到本地仓库操作
git remote add orgin server@192.168.1.1:/home/server/test.git
git push -u origin master
这里假设服务器登账号为 server,服务器地址为 192.168.1.1 后面的路径代表仓库在服务器上的地址。
开发者可以根据自己项目的真实情况设定。
将本地分支推送到远程分支。
# 提交本地的 dev 分支到远程仓库 origin 的 dev 分支
git push origin dev:dev
# 提交本地的 dev 分支到远程仓库 origin 的 remotetest 分支
git push origin dev:remotetest
删除远程分支
# 删除远程仓库的 remotetest 分支,本地的不收影响
git push origin :remotetest
拉取远程分支
git pull
完整命令其实是
git pull <remote> <branch>
# 比如将远程 origin 仓库的 testpull 分支拉取下来
git pull origin testpull
本地分支与远程分支关联
git branch --set-upstream-to=origin/<branch> dev
# 本地的 dev 分支和远程的 origin/dev 分支关联后,可以直接使用 git pull
git branch --set-upstream-to=origin/dev dev
合并分支
# 将test合并到当前分支上
git merge test
git checkout 远程分支
有时候向在远程仓库的基础上,拉取特定的某一个分支,命令如下
# localtest 是本地分支, origin/dev 是远程的 dev 分支
git checkout -b localtest origin/dev
git fetch
git fetch 和 git pull 很像,但 git fetch 要柔和一点,git pull 会将远程的命令拉下来直接和本地的合并。
git fetch 会先获取信息,但不合并。
git fetch origin dev
# 比较本地版本和远程版本
git log -p dev origin/dev
# 合并远程 dev 版本
git merge origin/dev
也可以这样操作
# 将远程 dev 分支拉取下来,并同步到 newtest 分支上,如果 newtest 分支不存在则创建,但不会切换
git fetch origin dev:newtest