基本操作:
1、mkdir learngit 创建空版本库
2、cd learngit 进入版本库
3、git init 在当前位置创建git库会提示Initialized empty Git repository 意思是初始化的空Git存储库
4、git clone 克隆一个库到本地库
5、vim readme.txt 新增一个文件
6、git add readme.txt 添加文件到git库,可同时添加多个文件 git add file2.txt file3.txt
7、git commit -m "a new file" 把文件提交到git库 -m 后面是备注信息随意填写
8、git diff 加文件名,详细查看修改过的文档内容,减号是去掉的内容加号是新增的内容
9、git status 查看当前库状态
10、git log 命令显示从最近到最远的提交日志 git log --pretty=oneline 缩略显示
11、git reset --hard HEAD^ 版本回溯,上上一个版本就是HEAD^^ ,100个版本写成HEAD~100。
12、git reset --hard <版本id> 找回已回溯的版本
注意:版本回滚后强制推送到远程 git push -f origin master
拉取最新分支的时候需要刷新缓存
git fetch --all // fetch所有分支上的内容,也可以选择只备份一部分内容
git reset --hard origin/master // 重置本地分支(这里master要修改为对应的分支名)
git pull
13、git reflog 用来记录你的每一次命令
14、git checkout --<文件名> 可以丢弃工作区的修改
15、git reset HEAD <文件名> 可以把暂存区的修改撤销掉(unstage),重新放回工作区
16、rm readme.txt 删除真实文件
17、git rm <文件名> 删掉版本库文件命令,版本库中删除该文件,那就用命令git rm删掉,并且需要 git commit 提交
工作原理详解:
把文件存入git库
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
分支详解:
<name>代表分支名称
更新远程全部分支:git fetch
查看远程全部分支:git branch -a
如果切换远程分支失败可以用以下:git checkout -b <name> 远程分支<name>
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
查看远程库的信息:git remote; git remote -v 显示更详细
推送分支:git push origin <name>
下载分支: git pull origin
图解:
1、创建切换到一个新的名为dev的分支
2、在当前dev分支修改readme.txt文件
3、在当前dev分支git add 添加 readme.txt文件
4、在当前dev分支git commit -m '' 提交readme.txt文件
5、git branch 查看当前分支,并切回默认分支master上
6、查看当然主分支 readme.txt 文件,之后合并dev分支所做修改到当前分支,查看文件变化
分支灵活用法
git stash 储藏当前工作空间到暂存区
git stash list 查看暂存区内容列表
git stash pop 恢复储存的空间的同时把stash暂存区内容也删掉
git stash apply stash@{num} 方法回到当前工作空间且不删除修改
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
强制使用远程仓库代码覆盖本地仓库
git fetch --all
git reset --hard origin/master ## origin/分支名
git pull
生成git pubkey -生成公共/私有rsa密钥对。
1、执行命令ssh-keygen 一路回车
2、cd ~/.ssh/ 下面即可找到,如果有人要你的公钥就把id_rsa.pub文件复制给他
官方文档:http://www.runoob.com/git/git-tutorial.html
Git 对比两个版本间某一个文件的变化
先列出两个版本间发生更改的文件列表
git diff commit1 commit2 --stat --name-only
查看指定文件在两个版本间发生的变更
git diff commit1 commit2 -- somefile.js