创建版本库
配置Git用户名和邮箱
git config --global user.name "myname"
git config --global user.email "myemail"
创建个新的代码仓库
git clone http://xxx@xxx/xxx.git
cd folder
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
在某个文件夹里创建仓库
cd existing_folder
git init
git remote add origin http://xxx@xxx/xxx.git
git add .
git commit
git push -u origin master
在已有的仓库中关联远程分支
cd existing_repo
git remote add origin http://xxx@xxx/xxx.git
git push -u origin --all
git push -u origin --tags
工作区和版本库
工作区和版本库基本概念
隐藏的.git
目录所在的目录即是工作区,而.git
目录里即是版本库
添加到Git版本库的操作过程
git add
是把文件从工作区添加到版本库的stage
即暂存区里
git commit
是把更改后的暂存区的所有内容提交到当前的本地分支
git push origin xxx
是把本地分支内容提交到远程仓库对应的分支上
查看工作区和版本库里的一些操作
git status
是查看当前本地仓库的状态,如:
On branch master Changes not staged for commit
表示在master
分支上还没有准备提交的修改,
意味着暂存区没有修改即没有git add
修改过的文件.
Changes to be committed
表示将要被提交的修改即是没有git commit
还没有一次性将暂存区的修改提交到本地分支.
git diff HEAD -- readme.txt
即是查看工作区和版本库本地分支最新版本的区别
时间线和HEAD指针
Git
会把每次提交自动串成一条时间线即是分支,用可视化工具可以很方便地看到提交历史
HEAD
是指向本地版本库分支的指针
commit id
是SHA1
计算出来的十六进制数,用在分布式版本控制系统里作为版本号
git log
可以查看提交历史,方便回退到任意版本
git reflog
可以查看命令历史,方便回到回退前的任意版本
版本回退
$ git reset --hard HEAD^ //回退到上1个版本
$ git reset --hard HEAD^^ //回退到上2个版本
$ git reset --hard HEAD~100 // 回退到上100个版本
$ git reset --hard commit_id // 回退到回退前的具体某个版本,commit_id不用写全
撤销修改
撤销工作区修改
$ git checkout -- file // 撤销工作区某个文件修改
$ git checkout . // 撤销工作区所有文件修改
$ git reset HEAD file // 撤掉暂存区某个文件的修改,重新放回工作区
分支和时间线
具体参看廖旭峰博客
补充
$ git stash // 保存工作现场并存储起来
$ git stash show -p // 查看工作现场保存的内容
$ git stash list // 查看工作现场存到哪里
$ git stash apply stash@{0} // 恢复指定的stash
$ git stash apply // 恢复但不删除
$ git stash pop // 删除
$ git stash drop // 恢复并删除