Git提交代码相关

git config --global user.name 'xueshanshan' //git初次配置
git config --global user.email 'xueshanshan@huli.com'

git cherry-pick commitid //在第二个分支中把第一个分支的某次提交拉过来
git commit --amend //补充上次提交

首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
这就是多人协作的工作模式,一旦熟悉了,就非常简单。

git branch -a //查看所有分支,包含远程的
git branch --v //查看本地分支与远程分支对应关系
git branch new_branch //在当前分支的基础上,创建新分支
git branch new_branch commitId //在当前分支基础上,以某个commit创建新分支

git checkout <branch> //切换分支,如果不存在,将会根据同名的远程分支创建新的本地分支,如果找不到重名的,将会报错,如果本地分支存在,则直接切换
也可以使用 git checkout -b <local_branch_name> remotes/origin/dev-3.3 //明确指定哪个远程
git拉取远程分支并创建本地分支
git checkout -b <branch_name>在当前本地分支上创建新的本地分支
git checkout --merge <branch> //在切换分支的时候,将当前分支修改的内容一起打包带走

重命名本地分支
git branch -m old_local_branch_name new_local_branch_name

重命名远程分支
git branch -m old_local_branch_name new_local_branch_name //step 1:先重命名本地分支
git push origin :old_local_branch_name //step 2:删除远程分支
git push origin new_local_branch_name //step 3:重新推送新的本地分支

删除分支
删除的分支不是当前正在打开的分支 git branch -d <branch_name>
删除正在打开的分支 git branch -D <branch_name>
删除远程分支git branch -r -d origin/<branch_name> //只是删除本地索引,并不是真正删除远程分支内容
真正删除远程分支 git push origin :<branch_name>

stash命令
git stash可用来暂存当前正在进行的工作,比如想pull最新代码,又不想添加新的commit,或者另外一种情况,在修改了部分代码后,为了fix一个紧急的bug,先stash当前的工作,返回到上一次commit,改完bug push后再stash pop,继续原来的工作
基础命令:
git stash'
git stash pop

进阶:git stash save "描述"
当多次使用git stash命令后,栈里会有好多未提交的代码,
git stash list可以将当前的栈信息打出来,只需要找到对应的版本号,如 git stash apply stash@{1} 就能将对应的工作取出来
git stash drop stash@{1} //移除对应stash
git stash clear //删除所有缓存stash
git stash bransh //从stash创建分支

add完某个文件后将其从暂存区移除:
git rm --cached a.txt

git checkout -- a.txt撤销命令含义:两种情况
1 a.txt修改了,但是还没有add到暂存区 撤销后就回到和版本库一模一样的状态
2 a.txt修改了,并且add到了暂存区,又做了修改,撤销修改就回到添加到暂存区后的状态

add完某个文件后想放弃add 并丢弃修改
先使用git reset HEAD a.txt
然后 git checkout -- a.txt

同步远程分支,如果远程有被删掉的分支就会被同步
git remote update origin --prune
git pull --prune

变基
如果两个分支同时修改了同一个类,比如master和dev都修改了a.txt,那么如果master去merge dev的内容,那么merge后的合并图会非常混乱,会有两个commit 一个merge并且不再一条直线上,如果有多次这样的情况,历史log就会非常乱,为了使log图能够更加简单,成一条直线,通常本地出现冲突的时候会使用变基–rebase来代替合并–merge

  1. 首先切到dev分支 git checkout dev
  2. git rebase master 此时会失败,需要先解决冲突,解决完之后
  3. git rebase --continue
  4. 然后切换到master分支 git checkout master
  5. 合并dev git merge dev
  6. 查看log git log --graph --pertty=oneline --abbrev-commit

变基原理:首先找到两个要整合的分支的共同祖先,然后取得当前所在分支的每次提交引入的更改,并把这些更改保存为临时文件,这之后将当前分支重置为要整合到的分支,最后在该分支上依次引入之前保存的每个更改。说白了就是记录dev的更改并保存,然后把每次的更改依次引入master分支,这样相当于所有的更改都改在master上,merge和rebase的结果相同,但是提交历史完全不同。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值