1.主干合并分支
Git命令需要在主干下运行,命令执行后,分支的代码同步到了主干。
(1)在主干master上合并分支branch
(master) git merge branch --squash
--squash 选项的含义是:不提交、不移动HEAD,因此需要一条额外的commit命令。效果相当于将分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来(前提是分支的commit历史不重要)。
(2)提交合并后的代码
(master) git commit -m "合并分支代码"
(3)将代码推送到远程仓库
(master) git push
2.分支合并主干
Git命令需要在分支下运行,执行后主干的代码同步到了分支。
(1)在分支branch上合并主干master
(branch) git merge master --squash
(2)提交合并后的代码
(branch) git commit -m "合并主干代码"
(3)将代码推送到远程仓库
(branch) git push
Git master branch has no upstream branch的解决
设置gitthub仓库地址:
git remote add origin https://github.com/...
解决办法其实就是确定这两个值,方法有两种:
第一种:git push --set-upstream origin master。其中的origin是你在clone远程代码时,git为你创建的指向这个远程代码库的标签,它指向repository。为了能清楚了解你要指向的repository,可以用命令git remote -v进行查看。master是你远程的branch,可以用git branch -a查看所有分支,远程分支是红色的部分。然后确定好这两个值后,将值换掉即可。
另一种方法是:git push -u origin master。同样根据自己的需要,替换origin和master。
两个命令的区别是第一条命令是要保证你的远程分支存在,如果不存在,也就无法进行关联。而第二条指令即使远程没有你要关联的分支,它也会自动创建一个出来,以实现关联。
failed to push some refs to的问题
git pull --rebase origin master
Updating an unborn branch with changes added to the index
那么可能是你暂存区内还有未提交的代码文件,可以用git status查看一下,
如果显示nothing to commit暂存区才是干净的。
不然的话,重新提交
git add xxx.xx(代码文件)
git commit -m "xx"
git checkout master
git remote add upstream xxxx
git remote -v
git merge upstream/master
git push origin master
git branch查看分支
git add .
git commit -m "提交注释"
git checkout master 切换到master分支
git pull 从远程仓库拉去最新代码,更新代码后,要看代码是否有冲突,解决冲突后,git merge
git push把代码提交到远程仓库,git merge
git config --global credential.helper store
git commit --amend用法
适用场景:
比方说,你的代码已经提交到git库,leader审核的时候发现有个Java文件代码有点问题,于是让你修改,通常有2种方法:
方法1:leader 将你提交的所有代码 abandon掉,然后你回去 通过git reset …将代码回退到你代码提交之前的版本,然后你修改出问题的Java文件,然后 git add xx.java xxx.java -s -m “Porject : 1.修改bug…”
最后通过 git push origin HEAD:refs/for/branches
方法2:
leader不abandon代码,你回去之后,修改出问题的Java文件,修改好之后,git add 该出问题.java
然后 git commit –amend –no-edit,
最后 git push origin HEAD:refs/for/branches。
当我们想要对上一次的提交进行修改时,我们可以使用git commit –amend命令。git commit –amend既可以对上次提交的内容进行修改,也可以修改提交说明。
举个例子:
Step1:我们先在工作区中创建两个文件a.txt和b.txt。并且add到暂存区,然后执行提交操作:
Step2:此时我们查看一下我们的提交日志:
可以看到我们的提交日志中显示最新提交有两个文件被改变。
Step3:此时我们发觉我们忘了创建文件c.txt,而我们认为c.txt应该和a.txt,b.txt一同提交,而且a.txt文件中应该有内容‘a’。于是我们在工作区中创建c.txt,并add到暂存区。并且修改a.txt(故意写错语法且没有将a.txt的修改add到暂存区):
Step4:我们查看一下此时的提交日志,可以看到上次的提交0c35a不见了,并且新的提交11225好就是上次提交的修补提交,它就像是在上次提交被无视了,修改后重新进行提交了一样:
Step5:此时我们发现a.txt文件修改没有成功,于是我们还得进行一次对a.txt的修改,将a.txt add到stage,然后再执行一次与上一次类似的提交修补:
OK了,git commit –amend的用法大致就是这样。
总结:git commit --amend 相当于上次提交错误的信息被覆盖了,gitk图形化界面上看不到上次提交的信息,git log上也看不到之前的信息,而add 后再commit 相当于重新加了一个信息。相当于打了个补丁?
vscode 使用git
3. git 全局设置
git config --global user.name "xxxx"
git config --global user.email "xxxx@xx.com"
打开 目录下面.gitconfig
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://gitee.com/wangwei5200/daima.git #git项目地址
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
4.vs code 打开daima目录 拉取代码