git常用命令

*查看用户名和邮箱
git config user.name
git config user.email

  • 首先是配置帐号信息
    git config --global user.name xxx
    git config --global user.email xxx@bigdatadecode.club
  • 查看配置的信息 git config --list
  • 禁止自动换行转换 git config --global core.autocrlf input
  • 查看远程分支 git branch -a
  • 查看本地分支 git branch
  • 创建本地分支并切换 git checkout -b dev,也可使用git branch devgit checkout dev这两条命令
  • 将本地分支推送到远程 git push origin dev:dev ,第一个dev是本地的分支名字,第二个dev是远程分支的名字,远程分支名字可以不存在,会自动创建
  • 拉取远程分支 git pull origin dev
  • 合并远程分支, 先创建一个与远程分支同名的本地分支git checkout -b test,执行合并命令git merge dev(此时的当前分支是test,将dev合并到test分支),然后push到远程git push origin test
  • 查看tag git tag
  • 切换tag git checkout tagName # 类似branch

开发本地分支同步到远程dev

1
2
3
4
5
6
7
8
9
10
# 先将远程dev同步到本地开发分支 test
git pull origin dev
# 开发结束之后将本地分支提交到远程test分支
git add --all
git commit
git push origin test
# 将远程test分支合并到dev分支
git checkout dev
git merge test
git push origin dev

本地与远程代码冲突

当你pull远程代码时,可能发生冲突,报错内容如下:

1
2
3
4
error: Your local changes to the following files would be overwritten by merge:
...
Please, commit your changes or stash them before you can merge.
Aborting

提示使用stash命令,具体操作如下:

1
2
3
4
5
6
7
8
git stash # 备份当前的工作区的内容到git栈中
git pull # 拉取git仓库中最新的代码
git stash pop # 将你保存在git栈中的代码与从git仓库中拉取的代码进行merge
git diff -w filePath # 用diff查看哪些文件进行merge,去相应的文件中解决冲突
# 进入冲突的文件,进行代码修改
# 修改结束之后,将当前的代码push到git仓库
# 将stash中的备份清空
git stash clear

版本回滚

在解决冲突的过程中,或者其它原因可能需要将版本进行回滚,回滚到之前的某个版本,操作如下:

1
2
3
4
5
6
7
8
git log # 查看提交提交历史记录
# (此时就可以看出每次push代码时都要写备注,要不不知道回滚到哪个版本)
# 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数
git log --pretty=oneline
# 回滚版本
git reset --hard HEAD^ # or git reset --hard HEAD~1

如果要回滚的版本和当前版本隔的版本较多,可以使用git reset --hard HEAD~num,其中num是回滚的版本与最新版本的差值+1

如果此时又想回到未来的某个版本,则可以从之前的记录中找到未来版本的对应的commit id,使用git reset --hard xxx,版本号没必要写全,前几位就可以了,Git会自动去找,但反正都是复制,为什么不复制全呢。

.gitignore 文件的配置

我用intellij开发,intellij的项目中会有个.idea文件夹,其内的内容和其他人的内容不一样,还有一些配置文件会不一样,所以就想把这些给忽略掉。

在项目中创建.gitignore,其内的内容如下

1
2
3
4
5
6
7
8
9
10
11
12
/target/
# ignore .idea
.idea/*
# ignore .gitignore
# 如果.gitignore文件没有被忽略的话,在git命令行中执行
# git update-index --assume-unchanged (PATH/FILE)在PATH/FILE处输入要忽略的文件
/.gitignore
# 本地忽略文件
src/main/resources/config/jdbc.properties

.gitignore配置完之后,向git仓库push代码时,.idea中的文件可能会发生冲突,则将本地.idea的内容从git缓存中删除,

1
2
git rm --cached <文件名> 删除文件的缓存
git rm --cached -r <目录名> 删除目录下的所有文件的缓存

然后将代码进行提交

error 解决

出现Non-fast-forward时,可以强制提交git push -f

  • Pull is not possible because you have unmerged files.(或者在进行其它操作时,提示xx have unmerged files.)
    应该是因为local文件冲突了,解决方法有两种:
  1. pull会使用git merge导致冲突,需要将冲突的文件resolve掉,然后执行git add -u, 最后git commit之后才能成功pull。
  2. 如果想放弃本地的文件修改,可以使用git reset --hard FETCH_HEAD,FETCH_HEAD表示上一次成功git pull之后形成的commit点。然后git pull。
您的肯定,是我装逼的最大的动力!