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:Usersadmin.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" 撤销当前分支的变化 在当前分支修改并做了几次提交,发现不应该在当前分支做修改,应该新建分支修改并提交。 在当前已修改过的分支上新建一个分支,指向当前最新的提交,注意,这时依然停留在当前分支。 git branch xxx #xxx代表分支名称 撤销当前分支到修改提交之前的状态 参考上面的撤销操作 切换到新创建的分支 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来自git log查看 使用步骤: 1.在A分支使用git log查看需要用到的commit_id,例如abc 2.切换到B分支,使用git cherry-pick abc cherry-pick也支持将多个部分提交应用到B分支,例如: git cherry-pick 但是要保证先后顺序,即提交commitHash1必须早于提交commitHash2 也支持区间,例如: git cherry-pick 但是要保证先后顺序,即提交commitHash1必须早于提交commitHash2 若过程中发生冲突,解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让Cherry pick过程继续执行: git cherry-pick --continue 当然也可以在发生代码冲突后,放弃合并,回到操作前的样子,执行命令: git cherry-pick --abort 学之多,而后知之少!朋友们点赞+转发是我持续更新的最大动力,我们下期见!