git使用
本地配置
git config --global user.name “xxx” 全局配置git的用户名,会出现在所有的commit信息中
git config --global user.email “xxx” 全局配置git的邮箱,会出现在所有的commit信息中
git config --global alias.xxx checkout 配置checkout的别名
git基本操作
git init 初始化仓库
git status 查看当前git状态
git add 将文件添加到git的暂存区(git add .)
git commit 将暂存区内容提交到本地仓库(git commit -m “xxxx”)
git log 查询操作git的日志
git分支
git branch xxx 创建git分支,git初始化后默认生成一个主分支master
git branch 查看当前的分支情况
git checkout xxx 切换git分支
git checkout -b xxx 创建并切换git分支
git branch -r 查看远程分支情况
git push origin :xxx 删除远程分支
git checkout xxx origin/xxx 如果远程有个xxx分支,本地没有,把远程的xxx分支迁到本地
git merge xxx 合并分支,需要先切换到要合并的分支上,然后就合并xxx分支上的代码
git branch -d xxx 删除分支,比如分支新建错了,或分支已经合并到主分支上了
git branch -D xxx 强制删除分支,分支代码没有合并到主分支上,使用-d就会报错
git标签
git tag xxx 新建tag标签,tag标签的内容不会改变
git tag 查看历史tag记录
git checkout xxx 切换到指定tag标签
git操作远程仓库
git psuh origin master 推送本地仓库代码到远程仓库master分支
git pull origin master 拉取远程最新代码,一般在push之前先pull,这样不容易冲突
git clone xxx.git 克隆远程仓库代码到本地,这时本地项目已经是一个git仓库了,并和远程仓库做了关联
git remote add origin xxx.git 将本地已有的仓库和远程仓库进行关联,orgin 是项目的远程仓库名称,名称可以随便取,一般大家默认为这个名称
git remote -v 查看当前项目有哪些远程仓库
git比较文件差别
git diff 比较当前文件和暂存区的差别
git diff commit_id1 commit_id2 比较两次提交的之间的差异
git diff branch1 branch2 比较两个分支的之间的差异
git diff --staged 比较暂存区和版本库之间的差异
git隐藏当前没有commit的代码
git stash 把当前分支没有commit代码隐藏起来
git stash list 查询隐藏区的记录
git stash apply 还原隐藏区的内容
git stash drop 删除隐藏区的记录
git stash pop 还原并删除隐藏区的记录
git stash clear 清空隐藏区的所有记录
merge冲突
当git不知道怎么合并两处冲突的修改时,会中断自动合并,并对冲突文件进行标记。
解决方法:
1.手动把文件冲突修改好
2.git add 命令把修改的内容添加暂存区
3.git merge --contine 来继续自动合并流程
checkout
移动HEAD,让它指向某个commit或branch
git checkout --detach 让HEAD脱离当前branch,直接指向下面的commit
git checkout xxx.md 撤销操作,还原文件,针对的是没有加入到暂存区文件
rebase
把当前commit以及它之前的commits应用到指定的需要rebase的commit上
git中的每⼀个commit都是不会改变的,所以rebase之后的每个commit都是新产⽣的,⽽不是对原先的commit进⾏修改
rebase冲突
解决方法:
1.手动把文件冲突修改好
2.git add 命令把修改的内容添加暂存区
3.git rebase --contine 来继续流程
reset
把当前branch指向指定的commit
git reset commit_id 移动到指定commit,并保留working tree的内容
git reset --hard commit_id 移动到指定commit,并重置working tree
reset和checkout的区别
都是移动HEAD,checkout移动的时候是自己移动,不带着branch,而reset会带着branch一起移动
revert
git revert commit_id 撤销commit内容,原理是创建一个新的commit,内容是指定commit的相反内容
cherry-pick
git cherry-pick commit_id1 commit_id2 把某个分支上的两个提交合并到当前HEAD上
git修改已提交的commit注释
1.没有push到远程仓库
修改最后一次的注释
git commit --amend 输入i进入输入模式,修改好注释后,按esc退出编辑模式,输入:wq保存并退出
修改之前的注释
git rebase -i HEAD~2 最后的数字2表示倒数第几次的注释,输入i进入输入模式,把pick换成edit,esc->:wq
git commit --amend 修改注释,保存并退出
git rebase --continue
2.已经push到远程仓库的
首先把最新的代码pull下来,修改方法如1,修改完成后,强制push到远程仓库
git push --force origin xxx