git和其他所有的版本控制系统一样,都只能追踪文本的改变
配置用户名和email
git config --global user.name "curious_cat"
git config --global user.email "xx@qq.com"
global参数设置了电脑上的所有的git仓库的默认的name和email
git config --global user.name和git config --global user.email能查看当前的所有git仓库默认的用户名和email
初始化git仓库
git init 当前目录成为了git可以管理的仓库(版本库),并且当前目录自动生成了.git目录,.git目录是Git来跟踪管理版本库的。
.git目录中会自动创建一个叫master的分支
*HEAD指针总是指向当前分支 *
将文件添加到git仓库
git add test.txt 把工作目录中文件添加到.git目录的暂存区,可同时添加多个文件
test.txt等文件必须放在工作目录,才可以添加到git仓库
将文件提交到git仓库
git commit -m "修改了test.txt文件" 把文件提交到.git目录的中的当前分支(HEAD指针指向的分支)
每次修改文件后必须先执行git add 再执行git commit -m,因为git管理的是修改,而非文件
查看git仓库状态
git status 查看git仓库的状态
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
提示修改了文件test.txt,需要使用git add test.txt 添加到暂存区,或者使用git checkout -- test.txt撤销修改。
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: test.txt
提示:test.txt 的修改需要使用git commit -m "修改了XX" 提交到当前分支上
查看文件是如何修改的
git diff test.txt
*如果git status提示有文件被修改过(未git add),用git diff就能查看修改的内容了 *
删除文件
rm test.txt 直接用rm命令删除
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
提示使用git checkout -- text.txt将撤销对文件的删除,使用git rm text.txt 然后使用git commit确实要从版本库中删除该文件
git rm text.txt 配合git commit -m "xx" 从版本库删除该文件
查看git仓库日志和版本回退
git log --pretty=oneline 查看提交日志,以便确定要回退到哪个版本
git reflog 查看命令日志,以便确定要回到未来的哪个版本
git reset --hard HEAD^ 回退到上一个版本,HEAD表示当前版本,HEAD^表示上一个版本
git reset --hard HEAD^^ 回退到上上一个版本,HEAD^^表示上上一个版本
git reset --hard 3628164 回退到指定的版本,需配合git reflog使用
撤销修改
git checkout -- readme.txt 修改文件后,使用git status会提示使用此命令将撤销对工作目录中readme.txt的修改
git reset HEAD readme.txt 修改文件后并使用了git add,使用git status会提醒使用此命令会把暂存区的修改撤销,但工作区中仍然是修改后的内容,相当于回到了未git add状态。
如果修改文件后使用了git add 和git commit 只能使用版本回退功能了
创建与合并分支
1. git checkout -b dev -b参数表示创建dev分支并切换到分支,可以进行分支开发了,上面命令相当于: git branch dev 创建分支dev ; git checkout dev 切换到分支dev;
2. git checkout master dev分支开发完成后切换到master分支
3. git merge dev 然后合并dev分支到当前分支上
4. git branch -d dev 合并完成后就可以删除dev分支了
git branch 命令会列出所有分支,当前分支前面会用(*)号标识
git鼓励在分支上完成任务,合并后再删除分支,这和直接在master分支上工作效果一样,但过程更安全
解决分支合并冲突
1. 打开冲突的文件修改后使用git add 和git commit -m命令提交到当前分支
2. git merge dev 然后合并dev分支到当前分支上
3. git branch -d dev 合并完成后就可以删除dev分支了
git log --graph 可以查看合并图
Bug分支
- git stash 保存当前工作现场,等以后恢复现场后继续工作