推荐git学习工具
文档:https://git-scm.com/book/zh/v2
练习网站:https://learngitbranching.js.org/
拉取分支代码
git clone -b <branch name> <reposity url>
clone后,idea中代码分支和Aone中分支同属
放入缓存
git stash
git stash pop
git commit -a -m " "
推送更新
git push origin HEAD
拉取更新
git pull (会产生merge记录)
git pull -r (推荐)
拉取后如果有冲突先去除冲突
去除后再次编译运行,如果没问题再将本地添加和修改推送。
如果不编译运行,可能add或commit会和拉取后的文件之间编译运行错误
查看提交日志
git log
回滚某次提交
git revert <提交记录>
有提交记录,可重复revert
查看某一提交记录下具体更改
git show <85810125844049756cb20b110b07336e605e258a>
切换到远程新分支
查看远程分支
git branch -a
拉取远程分支
git pull -r
如果有修改先git stash,然后
git checkout <远程分支名:feature/*****>
把缓存释放
git stash pop
把之前branch1分支提交的commit都【复制】过来
git checkout < 要提交的分支名>
git cherry-pick <提交记录名>
合并master
git merge origin/master --no-ff
解决冲突
git add -u
然后 git commit (不需加注释,会自动出现合并主干注释文件)
然后git push origin HEAD
文件对比
git diff filepath 工作区与暂存区比较
git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较
git diff --staged 或 --cached filepath 暂存区与HEAD比较
git diff branchName filepath 当前分支的文件与branchName 分支的文件进行比较
git diff commitId filepath 与某一次提交进行比较
git commit ammend 修改已经提交的注释
切换协议
1. 查看当前remote
git remote -v
2. 切换到http:
git remote set-url origin https://github.com/username/repository.git
3. 切换到ssh:
git remote set-url git@github.com:username/repository.git (暂不确定是不是需要加origin)
git pull 和 git pull --rebas区别
1.git pull
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD
2.merge 和 rebase
现在我们有这样的两个分支,test和master,提交如下:
D---E test
/
A---B---C---F--- master
在master执行git merge test,然后会得到如下结果:
D--------E
/ \
A---B---C---F----G--- test, master
在master执行git rebase test,然后得到如下结果:
A---B---D---E---C‘---F‘--- test, master
merge操作会生成一个新的节点,之前的提交分开显示。
而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。
3.rebase好处
想要更好的提交树,使用rebase操作会更好一点。
这样可以线性的看到每一次提交,并且没有增加提交节点。
merge 操作遇到冲突的时候,当前merge不能继续进行下去。手动修改冲突内容后,add 修改,commit 就可以了。
而rebase 操作的话,会中断rebase,同时会提示去解决冲突。
解决冲突后,将修改add后执行git rebase –continue继续操作,或者git rebase –skip忽略冲突。