git安装

1.下载后安装

以Windows系统为例,下载地址:
http://git-scm.com/download/win 自动下载

2.运行Git Bash

git config --global user.name xxx

git config --global user.email xxx@huifu.com

3.生成SSH公钥

ssh-keygen #一路回车就行

4.配置公钥到gitlab

C:\Users\admin\.ssh路径下,记事本打开id_rsa.pub,拷贝内容到gitlab上配置

5.eclipse导入代码

file -> import -> git -> Projects from Git #不需要填写账号密码

git配置

  • 配置全局用户名和邮箱

git config --global user.name "abc"

git config --global user.email "abc@163.com"

  • 配置局部用户名和邮箱

git config user.name "abc"

git config user.email "abc@163.com"

gitignore

添加.gitignore后,重新进行版本控制

git rm -r --cached .
git add .
git commit -m "update .gitignore"

git提交变更操作

1.拉取最新代码

git pull --rebase

2.将新增/修改的文件加入暂存区

方式1:git add 文件名

方式2:git add -p #对比选择变更的代码

3.提交本次变更到本地仓库

git commit -m '注释'

4.推送本次变更到远程仓库

方式1:git push origin 分支名

方式2:git push #省略[origin 分支名]参数,默认会将当前分支提交到远程对应分支

git 撤销操作

  • 未执行add操作的撤销

git checkout xxx

  • 执行add操作后,未执行commit的撤销

git reset HEAD xxx

  • commit后撤销
git reset --soft HEAD^ // 撤销commit回到前一个版本,不撤销git add,不恢复变更
git reset --soft HEAD~1 // 撤销commit回到前一个版本,不撤销git add,不恢复变更
git reset --soft HEAD~2 // 撤销commit回到前两个版本,不撤销git add,不恢复变更
git reset --mixed HEAD^ // 撤销commit回到前一个版本,并撤销git add,不恢复变更
git reset --hard HEAD^ // 撤销commit回到前一个版本,撤销git add,恢复变更
  • 强制回退远程版本
git log #查看本地提交记录,找到要回退的commit_id
git reset --hard commit_id #强制回退到某次提交
git push -f origin 分支名 #强制推送到远程仓库
  • 回退某次commit

使用git revert 逆向某次操作,对某次commit进行反向操作:

git revert -n commit_id  //逆向某次commit操作,如果有冲突解决冲突,使用git add添加修改,使用git commit提交本次修改
git push

替换上一次提交的信息

git commit --amend -m "Fixes bug"

撤销当前分支的变化

在当前分支修改并做了几次提交,发现不应该在当前分支做修改,应该新建分支修改并提交。

  1. 在当前已修改过的分支上新建一个分支,指向当前最新的提交,注意,这时依然停留在当前分支。
  2. git branch xxx #xxx代表分支名称
  3. 撤销当前分支到修改提交之前的状态
  4. 参考上面的撤销操作
  5. 切换到新创建的分支

git checkout xxx #xxx代表分支名称

从暂存区撤销文件

如果不小心把一个文件添加到暂存区,可以用下面的命令撤销。

git rm --cached [filename]

上面的命令不影响已经提交的内容。

撤销工作区的文件修改

如果工作区的某个文件被改乱了,但还没有提交,可以用git checkout命令找回本次修改之前的文件:

git checkout -- [filename]

它的原理是先找暂存区,如果该文件有暂存的版本,则恢复该版本,否则恢复上一次提交的版本。

注意,工作区的文件变化一旦被撤销,就无法找回了。

撤销提交

提交代码以后,意识到这个提交有问题,应该撤销掉,执行如下命令撤销:

git revert HEAD

抵消掉上一次提交导致的所有变化,它不会改变过去的历史,恢复内容到上一次提交,但是默认会保留本次的提交记录,同时会产生一次revert commit记录。

git revert命令还有两个参数:

--no-edit:执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息。

--no-commit:只抵消暂存区和工作区的文件变化,不产生新的提交。

代码合并

以下操作将master主干合并到feature分支

1.拉取最新代码

在当前分支拉取最新代码:git pull --rebase

如果有冲突使用以下步骤解决冲突:

1.1 手动解决冲突

1.2 git add filename

1.3 git commit –m 'xxxxx'

1.4 git status //根据提示继续操作

2.切换到master主干

git checkout master

git pull --rebase

3.切回feature分支

git checkout feature-xxx

4.合并master代码

git merge master

有冲突手动解决冲突,解决办法同上

5.推送到远程仓库

git push

hotfix操作

步骤:

1.拉取develop分支代码到最新

2.拉取master分支代码到最新

3.git flow hotfix start 临时分支名

4.紧急修改操作

5.git add

6.git commit

7.git flow hotfix finish 临时分支名

8.编辑提交的信息

9.分别提交到master和develop

feature分支操作

1. 开始一个新功能:

git flow feature start xxxx

2. 提交这个功能到远程库:

git flow feature publish xxxx

3. 完成功能,合并到develop:

git flow feature finish xxxx

4. 记得删除远程仓库里的分支:

git push origin :xxxx

A分支的部分提交应用到B分支

git cherry-pick <commitHash> #commitHash来自git log查看

使用步骤:

1.在A分支使用git log查看需要用到的commit_id,例如abc

2.切换到B分支,使用git cherry-pick abc

cherry-pick也支持将多个部分提交应用到B分支,例如:

git cherry-pick <commitHash1> <commitHash2> <commitHash3>

但是要保证先后顺序,即提交commitHash1必须早于提交commitHash2

也支持区间,例如:

git cherry-pick <commitHash1> <commitHash2>

但是要保证先后顺序,即提交commitHash1必须早于提交commitHash2

若过程中发生冲突,解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让Cherry pick过程继续执行:

git cherry-pick --continue

当然也可以在发生代码冲突后,放弃合并,回到操作前的样子,执行命令:

git cherry-pick --abort

学之多,而后知之少!朋友们点赞+转发是我持续更新的最大动力,我们下期见!