git安装初始化
- 用户名:
git config --global user.name "Your Name" - 电子邮件:
git config --global user.email "email@example.com"
本地库操作
- 创建目录文件夹:
mkdir learngit - 更改到创建的目录文件夹:
cd learngit - 显示目录文件:
pwd - 把目录变成Git可以管理的仓库:
git init - 显示隐藏的文件夹:
ls -ah - 把文件添加到仓库:
git add readme.txt - 把文件提交到仓库:
git commit -m "wrote a readme file"
** -m 后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。**
** 为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件。 ** - 时刻掌握仓库当前的状态:
git status - 看看具体修改了什么内容:
git diff - 查看历史记录:
git log
** 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数 ** - 回退到上一个版本:
git reset
** 在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。 ** - 查看文件内容:
cat readme.txt - 指定回退到某个版本:
git reset --hard 3628164 - 记录你的每一次命令:
git reflog
** 找不到新版本的commit id怎么办?在Git中,总是有后悔药可以吃的。当你用git eset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到ppend GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令 **
*** HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。*** - 丢弃工作区的修改:
git checkout -- file# file是要丢弃修改的文件 - 把暂存区的修改撤销掉:
git reset HEAD file# file是要撤销修改的文件
*** 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考[版本回退]一节,不过前提是没有推送到远程库。*** - 删除文件:
rm test.txt - 从版本库中删除该文件:用命令
git rm test.txt删掉,并且git commit -m " ..." - 把误删的文件恢复到最新版本:
git checkout -- test.txt
远程库操作
- 创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com" - 添加远程库:
git remote add origin git@github.com:michaelliao/learngit.git** #照抄github上的提示** - 推送到远程库:
git push -u origin master
*** 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。此后,用git push origin master推送修改*** - 克隆远程库:
git clone https://github.com/pipi636/work.gitorgit clone git@github.com:pipi636/work.git
分支
- 创建dev分支:
git branch dev - 切换到dev分支:
git checkout dev - 创建并合并到dev分支:
git checkout -b dev - 查看当前分支:
git branch - 把dev分支的工作成果合并到master分支上:
git merge dev - 删除dev分支:
git branch -d dev - 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。用
git log --graph命令可以看到分支合并图。
未完待续
感谢廖雪峰老师的git教程,通俗易懂。
