git config user.name
git config user.email
查看用户名和邮箱
git config --global user.name "......"
git config --global user.email "......"
设置用户名和邮箱
git init
初始化git仓库
git add .
添加内容到暂存区
git commit -m"提交信息"
提交内容到本地版本库
git remote add origin https://github.com/guyibang/TEST2.git
关联一个远程仓库
git push -u origin master
提交本地版本库到远程仓库同时关联远程master分支
git clone https://github.com/guyibang/TEST2.git
克隆远程仓库(当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin)
git pull
从远程库下拉文件(要先建立和远程库分支连接关系)
git pull origin master --allow-unrelated-histories
强制下拉远程仓库文件(GitHub你建好带ReadMe文件远程仓库在pull的时候会报本地和远程库不关联,可以用这个命令pull)
git branch -u origin/master master
本地分支和远程分支建立连接
git remote remove origin
删除一个远程库的连接
git分为工作区,暂存区,版本库,我们平时在操作的就是工作区
add命令就是将文件添加到暂存区,commit命令就是将暂存区文件提交到版本库
git checkout filename
撤回工作区的修改操作,分两种情况:
1.文件修改后没有add,则会回退到版本库中文件的状态
2.文件修改后add到暂存区,之后又进行第二次修改,回退到暂存区的文件状态
(本质就是将文件撤回到暂存区或者版本库的状态)
git reset HEAD <file>
可以把暂存区的修改撤销掉
git reset Head~1回退到上次提交,暂存区和版本库回退,工作区内容保留 (--mixed)
git reset --soft HEAD~1 回退到上次提交,版本库回退,暂存区和工作区内容保留
git reset --hard HEAD~1 回退到上次提交,暂存区,版本库,工作区都回退
版本回退
git status
查看当前暂存区的文件
git diff
查看版本库和工作区文件的不同
git diff --check
查看合并时的冲突是否解决完毕
git log
查看提交日志(commit日志)
(git log
我们常用 -p
选项展开显示每次提交的内容差异,用 -2
则仅显示最近的两次更新
某些时候,单词层面的对比,比行层面的对比,更加容易观察。Git 提供了 --word-diff
选项,我们可以将其添加到 git log -p
命令的后面,从而获取单词层面上的对比。另外,git log
还提供了许多摘要选项可以用,比如 --stat
,仅显示简要的增改行数统计)(git log commitId -1可以指定id查看一天提交记录)
git log --oneline查看提交日志(精简模式)
git log --graph查看提交日志(图像模式)
git branch
查看当前分支
git checkout -b dev
创建分支dev,并且切换到该分支 等价于 git branch dev创建分支 + git checkout dev切换分支
git merge branchname
合并branchname到当前分支
(在一个分支上进行代码修改之后要add+commit再进行切换分支,否则修改的内容还是在工作区间就会带到另一个分支)
(同理在pull之前也要add+commit,否则会出现错误)
当你要处理另一个分支的一个紧急bug的时候,可以commit当前分支的代码再进行切换
也可以git stash将当前暂存区连带工作区的内容存入git栈中,然后你就可以切换到另一个分支处理完bug再切换回来恢复存入栈中的内容
git stash
将当前暂存区内容连带工作区相同的内容存入git栈
git stash apply
恢复git栈中的内容到工作区间
git stash list
查看当前git栈下是否存在内容
这个情况是合并的时候没有加-m"合并信息"
1.按键盘字母 i 进入insert模式
2.修改最上面那行黄色合并信息,可以不修改
3.按键盘左上角"Esc"
4.输入":wq",注意是冒号+wq,按回车键即可
git log之后出现冒号,按q键退出
merge合并分支的时候产生冲突:
<<<<<<< HEAD
这是master的修改
=======
这里是另一个分支的冲突部分
>>>>>>> dev
上面部分是当前分支的内容,下面部分是要合并分支的冲突内容,修改之后git add就视为冲突解决
解决完冲突之后git diff --check查看冲突是否解决完毕