GIT操作记录

GIT本地环境配置账号
git config --global user.name "用户名"
git config --global user.password "密码"
or
git config --global user.name=用户名
git config --global user.password=密码
GIT 本地代码关联到远端新建的分支
远端分支路径eg:remotes/origin/develop
remotes:标识该分支路径存在于远程仓库
origin:远程仓库的名称。
develop:具体的分支名称(替换下面命令中的:remote_branch_name、local_branch_name)。
remote_branch_name: 远程仓库创建的分支名称,eg:develop。
local_branch_name: 要在本地创建的分支的名称,一般同远程分支名称,eg:develop。

1.拉取远程新分支到本地(remote_branch_name/local_branch_name:末级名字,eg:develop)
git fetch origin remote_branch_name:local_branch_name
2.切换到本地分支
git checkout local_branch_name
3.创建本地分支与远程分支的关联
git branch --set-upstream-to=origin/remote_branch_name local_branch_name
GIT小乌龟导出所有修改的文件带目录层级路径
1.小乌龟打开Git-Commit,列出本地所有修改的文件。
2.选中需要导出的文件右键(可多选)
3.点击 Export selection to...,弹框选择存放路径即可。
GIT主流的代码分支管理
master:
注分支,生产环境发版使用的代码。
主分支 生产发版的分支,需要确保稳定、随时/随CommitId可发版;
release:
预发版分支,保持与master代码一致,预发环境测试验证通过之后,上线之前,整体合并release到master 分支。
灰度环境,分支代码、服务器等各依赖环境保持和生产环境一致。

develop:
开发环境分支,变动频繁 所有开发人员开发的功能会合并到次分支在,个人分支基于 develop,开发完后也应合并到此分支,发布测试环境;
内部测试人员使用。
develop-*
个人开发分支,develop-张三,个人从release拉取分支,完成自己的新功能开发后,合并到develop发测试环境验证,通过后,提交release分支发预发版环境验证。

bugfix - 生产环境问题紧急修复的分支,问题解决完后合并到,develop。
GIT log用法
git只查看提交描述内容
	git log -1 --pretty=%B    // -1 表示commit次数,可根据查看多少修改设置,如:-10
	指定commitId:git log <commit> --pretty=%B

查看本地修改文件及修改日期:
Linux:
	git status -s | while read mode file; do echo $mode $file $(stat -c %y $file); done
window:
	git status -s | while read mode file; do echo $mode $(date --reference=$file +"%Y-%m-%d %H:%M:%S") $file; done
OSX(source):
	git status -s | while read mode file; do echo $mode $(stat -f "%m" $file) $file; done|sort

查看分支/合并日志:git log -10 --oneline --graph

分支操作日志查看:git reflog
git reflog:查看所有引用(包括分支、标签和HEAD)的操作历史记录。
git reflog <ref>:查看指定引用(如分支名、标签名)的操作历史记录。
git reflog show <commit>:显示指定提交的操作历史记录。
git reflog --all:查看所有引用(包括已删除的)的操作历史记录。

简易日志:git log -10 --oneline

查看某次提交的文件列表:git show 9ddc9dca00b --stat 
同步远程分支列表:git fetch
退出git命令行:shift+: => q
查看本地分支和远端分支对照关系:
git branch -vv 或 git remote show origin
查看远端分支列表及当前commitid:git  ls-remote
Git 合并分支
前提:将需要合并的两个分支都更新到最新。
1、切换到xxxx分支下
	git checkout xxxx
2、将本地xxxx分支代码更新到最新
	git pull
3、切换到目标合并分支上,并更新代码到最新
	git checkout 分支名
	git pull
4、merge合并xxxx分支代码到当前分支
	git merge xxxx
5、解决冲突
6、将本地跟新好的内容push到分支
	git push
GIT合并指定commit到当前分支
git checkout branchX
git cherry-pick commitId
git push
注:解决冲突时注意合并文件左边的+-符号,再觉得从上面的左边还是右边合入。
git merge后回退
查看分支操作历史记录用:git reflog 命令。

方法1:参考上面:GIT撤销commit、add和merge 的内容。

2、如果本地修改不需要了,可以直接用远端分支强行覆盖本地分支:
**谨慎使用:放弃本地所有操作,并使用指定分支覆盖本地**(也可以处理操作失误导致commit日志混乱的问题)
git fetch --all && git reset --hard origin/分支名称

放弃本地所有操作:git fetch --all
重新拉取分支覆盖本地:git reset --hard origin/<branch_name>
GIT MERGE时本地解决冲突
冲突文件位置提示:
<<<<<<< HEAD
本地代码
=======
拉下来的代码
>>>>>>>

如果这样的提示都处理完了 git status还提示both modified,则使用git可视化工具:
Git-Commit双击冲突文件对比添加需要保留的内容,这样冲突文件就不会再提示了。
GIT分支合并、更新时代码冲突解决

git pull时提示:

error: Your local changes to the following files would be overwritten by merge:
		xxxxxxxxxxxx
Please commit your changes or stash them before you merge.

方法一:(用GIT的方式解决)

本地修改先放入暂存区,然后拉代码,恢复暂存区修改代码,在本地形成代码冲突再解决。
git pull时提示代码冲突,解决办法:
1、git stash :将修改的内容保存至堆栈区 每个git stash也有它自己的commitId,也可以作为git回退等操作的节点。
	带保存日志eg:git stash save "develop-bug-fix:xxxx"
2、git pull : 更新代码
3、	> git stash pop  恢复暂存时也会删除暂存记录
	> git stash pop stash@{0}:恢复暂存时不会删除暂存记录
4、本地解决冲突文件
	<<<<<<< Updated upstream
		git pull拉下来的内容
	=======
		stash 恢复的备份内容,即本地修改的内容
	>>>>>>> Stashed changes
5、将解决完的冲突文件执行 git add xxxx
6、提交代码
相关命令:
	git stash list:查看暂存区的备份列表, 
	git stash clear:清空暂存区。

方法二:(手动解决,适合文件较少的情况)

将冲突文件复制到另一个暂存的文件夹,然后将文件revert回会修改版本,执行git pull拉取最新代码,
然后通过Beyond Compare对比将暂存文件夹里面文件修改合到项目代码中。
GIT撤销commit、add和merge

使用TortoiseGit可视化工具提交代码前未更新最新代码,导致提交失败时,撤销commit及add后拉取远程最新代码后再提交。


注:merge前如果本地有未开发完的代码,需要先将改的内容保存至堆栈区,使用命令,git stash,参考上面【GIT暂存本地修改,合并分支或拉取远端代码到本地库,然后还原本地修改】块的内容,每个git stash也有它自己的commitId,也可以作为git回退等操作的节点,回退到指定commitID后,merge过来的文件不会自动删除,看好状态,需要手动删下。

注意:禁止使用 --hard 参数,它会删除回退点之后的所有提交和修改信息,除非需要远端版本强制回退。
1、 撤销commit,到add状态
	撤销commit,到add状态:git reset --soft HEAD^
2、 撤销commit,到add之前的状态
	不带参数时默认为(--mixed 模式),用于重置暂存区的文件与目标的(commit)保持一致,工作区文件内容保持不变。
	> 撤销add:git reset HEAD^			//将所有add/commit后的file退回到add之前的状态,即本地修改状态。
	> 撤销指定文件的add:git reset HEAD xxx/文件名  //撤销指定文件的add操作。
	2中的操作操作会使得被操作的文件图标从绿色变红色。
3、对于红色的文件,分两种情况,一种是自己本地修改的,一种是merge过来的,如果是merge过来的,直接删除就行。

HEAD 说明:
	HEAD / HEAD~0 : 表示当前版本
	HEAD^ / HEAD~1  : 上一个版本
	HEAD^^ / HEAD~2  : 上上一个版本 
	.........依次类推
	或指定commitId:git reset --soft commitId / git reset commitId 
网页创建新分支后本地看不到解决方法
本地手动更新下,执行如下命令:
git fetch origin

之后从Remote Branches中Check Out到本地。
Git打差异更新包
new commit ID: 4033ef7b2714d1ccf56b8a60f9607857b1804987
old commit ID: a36014b1ad40bed835f755120def1f948451f2ba
从old commit ID到new commit ID的差异文件,不包含old commit ID,包含new commit ID修改的文件。

window下git bash中用tar打包,执行如下:
git diff 4033ef7 a36014b1 --name-only | xargs tar -czvf update-xxxx.tar.gz

Linux下用zip打包,执行如下:
git diff 4033ef7 a36014b1 --name-only | xargs gzip > update-xxxx.zip

Fork 项目更新

#用git remote查看远程主机状态
git remote -v 
 
#添加远程仓库
git remote add upstream git@github.com:xxx/xxx.git
//git remote remove upstream 删除远程仓库

#从源仓库同步更新代码
git fetch upstream
 
#合并到本地代码
git merge upstream/master
 
#push
git push 

GIT强制回退已提交(远端库代码)的代码(慎用)
1、找到要回退commit的ID: commitId
2、回退本地代码:git reset --hard commitId
3、强制提交本地代码到远端库:
git push -u origin 分支名 --force
(git push develop develop --force  (本地分支和远程分支都是 develop))

回退到上一个版本:git reset --hard HEAD^ 
合同develop历史commit节点到master
0、备份develop和master分支。
1、develop分支 reset --hard commitId
2、切换到master分支
3、在master使用git merge develop将当前本地的develop代码合并到master。
4、master分支 git push 提交合过来的代码。
5、切回develop,使用git pull将develop更新到最新。
6、删除develop和master备份分支。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值