基本功能:
git clone:克隆仓库
git pull:从远程仓库拉取代码到本地
git stash:将修改后的代码存储到本地(一个栈结构)
git stash pop:将你stash到本地的代码与重新git pull下的代码合并
git add XXX:将XXX文件加入到暂存区
git commit -m "注释":将暂存区的文件提交到本地仓库
git push:将本地仓库的内容推送到远程仓库
git checkout:切换分支或恢复工作树文件
-d:删除
-D:强制删除
删除本地分支:
git branch -D 分支名
删除远程分支:
git push origin --delete 分支名
获取新分支的代码
git checkout -b dev_etf_m3(本地名称) origin/dev_etf_m3(远程名称)
将diff.txt导入
git apply --reject diff.txt
log相关
查看当前分支图形化的commit历史(oneline 一条提交信息用一行展示)
git log --oneline --graph
显示当前分支的创建来源分支
git reflog show branchname
git diff 相关
只列出文件名不列出详细信息:
git diff --name-only
只列出文件名和增加、删除、修改等:
git diff --name-status
git diff 排除指定目录,如排除toolchain
git diff ':!toolchain'
获取commit ID
git rev-parse HEAD
git rev-parse --short HEAD
本地分支 push 到远程并追踪
git push --set-upstream origin branch_name
本地分支追踪远程分支
git branch --set-upstream dev_etf_m3(本地名称) origin/dev_etf_m3(远程名称)
git branch --set-upstream-to=origin/dev_etf_m3(远程名称) dev_etf_m3(本地名称)
git 标签tag
git tag tagname 添加标签名为tagname的标签
git tag -a tagname -m "commit" 添加标签并加注释
git checkout tagname 切换到tagname标签
git tag -d tagname 删除标签
git push origin tagname 提交标签到仓库
git中名词含义
HEAD:大多数时候HEAD指向分支中最新提交。
master:git在首次创建repo时创建的默认分支的名称。在大多数情况下,“主”意味着“主要分支”。
origin:git为主远程仓库提供的默认名称。
例子:git reset --soft HEAD^
HEAD^的意思是上一个版本,也可以写成HEAD~1;
如果进行两次commit都想撤回,使用HEAD~2;
本地分支推送到远程
git checkout -b feature-branch //创建并切换到分支feature-branch
git push origin feature-branch:feature-branch //推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)
rebase使用具体流程(作用是解决分叉)
git clone master branch
git checkout -b local
(在本地分支上开发和测试)
git checkout master
git pull
git checkout local
git rebase -i HEAD~2 //合并提交 2表示合并两个
git rebase master ----->解决冲突 ----->git rebase --contine
git checkout master
git merge local
git push
merge合并代码流程:
1、切换到merge的分支
git checkout dev_ht_etf
2、把代码拉下来
git pull
3、切换回原来的分支
git checkout dev_ht_etf_niemao
4、将原分支有的改动,则提交
git status
5、将要merge的分支merge过来
git merge dev_ht_etf
6、有冲突的需要解决冲突
git status
vi ETFRiskCtrl/PosHandler.hpp
7、将解决了冲突的文件再次提交一下
git status
git add ETFRiskCtrl/PosHandler.hpp
git commit -m "merge codes from dev_ht_etf -> dev_ht_etf_niemao"
8、push
stash使用方法:
git stash:将修改存储到stash中(本地)
git stash list:查看所有的stash
git stash pop:弹出最新的那个stash
git stash apply stash@{x}
git stash drop stash@{x}
git stash clear
reset的使用方法
reset:commit之后想撤销commit
--mixed:不删除工作空间代码,撤销commit,并且撤销git add。为默认参数, git reset --mixed HEAD^ 和 git reset HEAD^是一样的。
--soft:不删除工作空间代码, 撤销commit,不撤销git add。
--hard:删除工作空间代码,撤销commit,撤销git add。操作完成后,就恢复上一次commit的状态。
如果只是修改commit注释:git commit --amend
对比两个分支的差异的方法
1、显示出branch1 branch2中差异部分
git diff branch1 branch2 --stat
2、显示指定文件的详细差异
git diff branch1 branch2 具体文件路径
3、显示出所有有差异的文件的详细差异
git diff branch1 branch2
4、查看branch1 分支有,而branch2中没有的log
git log branch1 ^branch2
5、查看branch2中比branch1中多提交了哪些内容
git log branch1..branch2
6、不知到谁提交的多,谁提交的少,单纯想知道有什么不一样
git log branch1...branch2
7、在上述情况下,在显示出每个提交是在哪个分支上
git log --left-right branch1...branch2
注意:commit后面的箭头,根据我们在--left-right branch1...branch2的顺序,左箭头<表示是branch1,右箭头>表示是branch2的。
本地撤销commit
1、git reset --soft|--mixed | --hard <commit_id>
2、git push develop develop --force (本地和远程分支都是develop)
远程仓库合并commit
1、git log
找到和合并commit的分支
2、git rebase -i <commit_id>
执行rebase后,会弹出窗口
pick 3ca6ec3 '注释**********'
pick 1b40566 '注释*********'
pick 53f244a '注释**********'
将除了第一个的pick,其他都改为 s 或 squash
pick 3ca6ec3 '注释**********'
s 1b40566 '注释*********'
s 53f244a '注释**********'
修改后保存退出,这时 git log 一下,发现提交已经合并
3、 git push -f
到这里以后, git status 后会看到,提示让你git pull一下,千万不要这样做!否则你会发现这三条白合并了,还平白多了两条commit
这时候,需要强制push上去 git push -f , 当然要确保强制push不会覆盖了别人的代码,如果这个分支只有你维护那就可以为所欲为了
到此,合并多个远程分支成功~
资料:
https://www.jianshu.com/p/f7ed3dd0d2d8
https://www.cnblogs.com/qianqiannian/p/6008140.html
https://www.cnblogs.com/cristiano-duan/p/12682038.html
https://blog.csdn.net/default7/article/details/100515595
撤销本地commit:https://www.cnblogs.com/wuyun-blog/p/10026363.html
合并远程仓库commit:https://blog.csdn.net/qq_21744873/article/details/82629343
https://www.cnblogs.com/xiaojianliu/p/12618921.html