基础命令
# 设置你的仓库用户名
git config --global user.name "Your Name"
# 设置你的仓库邮箱
git config --global user.email "email@example.com"
# 初始化一个 Git 仓库
git init
# 添加所有更改的文件
git add --all
# 可以添加指定文件
git add filename
# 添加更改的信息
git commit -m "commit message"
# 查看 Git 当前状态
git status
# 查看 filename 文件改动
git diff filename
# 查看最近的提交日志
git log
# 单行显示提交日志
git log --pretty=oneline
# 利用 Git log 得到的 commitID 返回版本
git reset --hard commitID
# 回到上一个版本
git reset --hard HEAD^
# 查看命令的历史,可以找到 Git log 看不到的 commitID, 因为 Git log 只显示当前的提交日志, 如果你提交了一次, 退回版本后又后悔了, 就能查看上次提交的 commitID
git reflog
# 利用版本库中的版本替换工作区中的文件.
# 撤销文件修改分两种情况: 撤销工作区中的修改 (没有使用 Git add 命令添加到暂存区) 撤销暂存区中的修改 (添加到了暂存区又做了修改) 找回删除的文件工作区中文件误删了, 可以通过此命令从版本库中找回.
git checkout -- filename1
# 撤销 add, 回到工作区
git reset HEAD filename
# 删除文件
git rm filename
# 将本地库关联到 Github 远程库上
git remote add origin https://github.com/demo/demo.git
# 第一次推送的时候要加上 -u 参数, 可以将本地库的 master 分支与远程库的 master 分支关联起来, 下次提交就不需要加 -u 了
git push -u origin master
# 克隆远程库到本地
git clone https://github.com/pengloo53/learngit.git
分支管理
# 创建 dev 分支并切换到 dev, 相当于 git branch dev, git checkout dev 两条命令
git checkout -b dev
# 查看当前分支
git branch
# 合并指定分支到当前分支
git merge dev
# 删除 dev 分支
git branch -d dev
# 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
# 禁用 ( Fast forward ) 也就是保留分支的相关信息
git merge --no-ff -m "merge with no-ff" dev
# 将工作区现场储藏起来, 等以后恢复后继续工作. 通常用于处理更为着急的任务时, 例如: bug.
git stash
# 查看保存的工作现场
git stash list
# 恢复工作现场
git stash apply
# 删除 stash 内容
git stash drop
# 恢复的同时直接删除 stash 内容
git stash pop
# 恢复指定的工作现场, 当你保存了不只一份工作现场时.
git stash apply stash@{0}
# 强行删除分支, 用于不需要合并, 就地删除的情况.
git branch -D feature-vulcan
# 查看远程库的信息, 一般返回 origin
git remote
# 查看远程库的详细信息
git remote -v
# 将本地 master 分支推送到远程 master 分支.
git push origin master
# 将远程库克隆到本地, 默认只能看到 master 分支.
git clone https://github.com/pengloo53/learngit.git
# 创建远程 dev 分⽀到本地 dev 分支
git checkout -b dev origin/dev
# 将远程分⽀的最新内容抓取下来并合并 ( 推荐使用 git fetch )
git pull
# 将本地 dev 分支与远程 dev 分支之间建立链接, 多人协作工作模式首先, 可以试图用 git push
git branch --set-upstream dev origin/dev
# 推送自己的修改, 如果推送失败, 则因为远程分支比你的本地更新, 需要先用 git pull 试图合并 ( 如果 git pull 提示 “no tracking information”, 则说明本地分支和远程分支的链接关系没有创建, 用命令 [git branch --set-upstream branch-name origin/branchname] 如果合并有冲突, 则解决冲突, 并在本地提交, 没有冲突或者解决掉冲突后, 再用 [git push origin branch-name] 推送就能成功.
origin branch-name
标签管理
# 给当前分支打上标签
git tag v1.0
# 查看所有的标签,按时间顺序列出.
git tag
# 缩略 commitID 并单行显示提交信息
git log --pretty=oneline --abbrev-commit
# 创建带有说明的标签, -a 指定标签名, -m 指定说明文字.
git tag -a v0.1 -m "version 0.1 released" commitID
# 删除标签 v0.1
git tag -d v0.1
# 推送标签 1.0 到远程
git push origin v1.0
# 推送所有的标签到远程
git push origin --tags
# 删除远程标签, 但是前提是要先在本地删除对应标签.
git push origin :refs/tags/v0.9
搭建Git服务器
# 安装 Git
sudo apt-get install git
# 添加 Git 用户
sudo adduser git
git clone --bare my_project my_project.git
# 修改仓库的所属用户为 Git
sudo chown -R git:git my_project.git