Skip to content

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记录

  1. git rebase -i commitId commitId不会包含在此次合并操作【表示即将合并commitId这条记录后的所有commit记录】
  1. 执行完上面命令后,在出现的vim窗口内按i开始修改,除第一条,其他pick全修改为 s。表示全部合并到第一条。:wq保存
  1. 出现新的vim窗口,填写此次合并的commit信息。:wq保存

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

shell
# 添加以下信息
[user]
# 全局用户名/邮箱配置
	name = xxx
	email = xxx@xxx.com
[credential]
# 自动保存密码
	helper = store
[core]
# 解决中文文件名乱码
  quotepath = false