Git使用技巧
术语
Workspace: 工作区 Index / Stage: 暂存区【add 后放入暂存区】 Repository: 本地仓库【commit后放入本地仓库】 Remote: 远程仓库【push后放入远程仓库】
远程仓库操作
查看远程仓库地址:
git remote -v
关联远程仓库:
git remote add origin 代码仓库地址
删除远程仓库:
git remote rm origin
分支操作
创建并切换分支:
git checkout -b 分支名称
查看远程分支:
git branch -a
删除远程分支:
git push origin -d 分支名称
删除本地分支:
git branch -d 分支名称
-d:--delete
拉取分支
新的项目
拉取指定分支:
git clone -b 分支名称 git仓库地址
已有项目
1、
git fetch origin 分支名
拉取了指定分支
2、
git checkout 分支名
或者git checkout -b 分支名 origin/远程分支名
切换到该分支即可. 后者意为切换到分支并关联远程分支
3、
git pull
一般不需要pull了
git fetch
拉取所有远程分支到本地,可以再进行上面第二步
TIP
pull & fetch 区别:两者都是从远程仓库拉取最新版本文件到本地. pull会把指定分支自动合并到本地当前分支; fetch不会自动合并
回滚与强制推送
1、reset 回滚到任意一个版本(适合错误内容未推送到远程)
git reset --hard + commitId
TIP
git reset
的操作是本地回退而已,远程仓库并没有回退,直接push会失败(提示远程仓库版本高于本地仓库版本,使用git pull拉取一次。但是拉取本地又会回到最新版本)
解决办法, 强制推送:git push -f origin + branchName
(不建议,会覆盖之前的commit)
2、revert (适用出错内容已经push到远程分支)
- 返回指定的版本,并产生一个新的commit记录
git revert HEAD
上一个分支
git revert HEAD^
上上一个分支
git revert commitId
指定commit
git push
rebase 合并commit记录
git rebase -i commitId
commitId不会包含在此次合并操作【表示即将合并commitId这条记录后的所有commit记录】
- 执行完上面命令后,在出现的vim窗口内按i开始修改,除第一条,其他pick全修改为 s。表示全部合并到第一条。:wq保存
- 出现新的vim窗口,填写此次合并的commit信息。:wq保存
- 如果这个过程中有操作错误,可以使用
git rebase --abort
来撤销修改,回到没有开始操作合并之前的状态 参考:https://www.jianshu.com/p/964de879904a
amend 修改提交信息
git commit --amend -m "新的提交信息"
注意点
amend会把当前 commit 里的内容和暂存区(git add .)里的内容合并起来后创建一个新的 commit,用这个新的 commit 把当前 commit 替换掉。
1、漏提交一个文件
git add xxx
git commit --amend
进入到vim界面,按i修改,wq保存并退出
2、刚刚提交完代码发现,我有个文件没保存,漏了提交上去怎么办?
git add .
git commit --amend --no-edit
git全局配置文件
vim ~/.gitconifg
# 添加以下信息
[user]
# 全局用户名/邮箱配置
name = xxx
email = xxx@xxx.com
[credential]
# 自动保存密码
helper = store
[core]
# 解决中文文件名乱码
quotepath = false