打tag
git tag -a "tagxxx" -m "messagexxx"
git push origin tagxxx
克隆仓库到本地
git clone xxx
克隆仓库分支到本地
git checkout -b 分支名 origin/分支名
查看git所处分支
git status
查看git远程仓库地址
git remote -v
在已有的项目中新增.gitignore文件
1)本地工作区是远程仓库最新版,暂存区内没有东西
- 打开git bash,切换到工作区目录
3)在本地项目目录下清除缓存
git rm -r --cached .
4)touch .gitignore
5)记事本打开进行编辑
网上有很多gitignore模板
6)git add .
7)git commit -m "add ignore"
- git push
保持分支和master最新代码一样
修改注释
git commit --amend
撤销工作区修改
git checkout []
eg. git checkout .
撤销暂存区修改
git reset []
备份当前代码内容,应用场景:放下手头上的工作,要去看仓库中的代码,不用重新新建文件夹等复杂操作了
git stash # 备份当前的工作区的内容,保存到Git栈中
git pull
git stash pop. # 从Git栈中读取最近一次保存的内容
查看备份列表
git stash list
撤销分支
git reset --soft HEAD^
分支操作
1)创建并切换到新分支
git checkout -b panda
2)查看分支
git branch
- 切换到基础分支,如主干
git checkout master
4)更新分支代码并提交
git add .
git commit -m "init panda"
git push origin XXX分支名
Q1:old mode 100644 new mode 100755 的提示
中间进行过chmod操作,和代码本身没有关系
git config --add core.filemode false
Q2:# Your branch is ahead of 'origin/master' by 1 commit.
就是本地仓库有一个提交,比远程仓库要先进一个commit。git push origin master之后,再用git staus
Q3: error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
fatal: The remote end hung up unexpectedly
分支合并到主干
在主干下,按照以下步骤运行
(1)在主干master上合并分支branch
(master) git merge branch --squash
--squash 选项的含义是:不提交。效果:分支的commit历史不重要,不会把分支的历史合并到主干上。把分支不同于master分支的所有文件罗列出来(无论有几个提交)
?如果不加--squash就会合并历史?
(2)提交合并后的代码
(master) git commit -m "合并分支代码"
(3)将代码推送到远程仓库
(master) git push
主干合并到分支
在分支下执行以下步骤:
(1)在分支branch上合并主干master
(branch) git merge master --squash
(2)提交合并后的代码
(branch) git commit -m "合并主干代码"
(3)将代码推送到远程仓库
(branch) git push
协作开发遇到的问题
- 场景:
主干1 => 分支1
->主干改2 -> 分支改2
- A从主干1拉了分支1,做修改,变成了分支改2
主干1被人在主干上修改,变成了主干改2 - 现在A想将分支改2合并到主干改2中去,怎么办?
解决方法:
1.将主干的修改合并到分支1及其以后的commit中去
效果:分支1是从主干改2拉出去的,而不是从主干1
git rebase master
ps: rebase和merge的区别:https://blog.csdn.net/qq_41047322/article/details/81584437
如果在其中发现冲突(主干改2和分支改2同时修改了b文件),则解决冲突:
- 手动解决冲突,解决完后,和主干改2和分支改2都不一样:
git add .
git rebase --continue
- 以分支中的修改为准,解决完后,其实就是分支中的内容,那可skip
git rebase --skip
- 放弃rebase
git rebase --abort
2.将rebase后的分支,force push到远程仓库(为什么是force push?因为)
git push -u origin 分支1 -f
3.切换到主干,将分支的改动合并到主干:参见上面
1个分支替换另一分支的内容
切换到分支
git checkout 分支
再将本地的分支重置成master
git reset --hard master
最后推送到远程仓库分支
git push origin 分支 --force
本地关联远程分支:
git branch --set-upstream 本地关联远程分支