1. 本地
-
git commit;
-
git branch 分支名 #新建分支 早建分支!多用分支!
-
git checkout 分支名 #切换到分支上
-
git merge 分支名 #需要在主分支上
-
git rebase master #在分支合并到主分支,后切到主分支在 git rebase 分支名;
-
git checkout master^^ #爷爷节点
-
git checkout Head~4 #向上移动4 (本身不算)
-
git branch -f master HEAD~3 #将 master 分支强制指向 HEAD 的第 3 级父提交
-
git reset HEAD~num 撤销更改(本地分支)
-
git revert HEAD~num 撤销更改
-
git cherry-pick 提交号(提交的Hash值) #将一些提交复制到当前位置(HEAD),多个提交号用空格
-
git rebase -i HEAD~num #交互式 选择将一些提交复制到当前位置( HEAD~num 位置) 列表列出 HEAD~num 所有提交
-
git commit --amend #对以前提交的记录做一些小的修改
- git rebase HEAD~n 将需要修改的提交移动到最近
- git commit --amend #对修改进行提交
- git rebase HEAD~n #i重新移动提交顺序
- git branch -f master 新位置 # 强制修改主分支到新位置
- git tag v1 提交号 # 标签 签出后 进到 分离 HEAD 状态,因不能再TAG 上进行 COMMIT;
- git describe
输出:__g
tag 表示的是离 ref 最近的标签, numCommits 是表示这个 ref 与 tag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。 - git checkout HEAD ~^2~3 # 快速定位 ^2 (多父时使用)
2. 远程仓库
远程分支:<remote name>/<branch name>
-
git clone
-
git fetch #下载
从远程仓库下载本地仓库中缺失的提交记录
更新远程分支指针(如 o/master)
不会改变你本地仓库的状态。它不会更新你的 master 分支,也不会修改你磁盘上的文件
参数与 push 类似方向相反
git fetch origin foo:会到远程仓库的 foo 分支上,然后获取所有本地不存在的提交,放到本地的 o/foo 上
git fetch orgin :foo #foo 远程也没有,在本地仓库创建分支 -
git pull # 拉去数据 就是 git fetch 和 git merge 的缩写!
git pull --rebase 就是 fetch 和 rebase 的简写!
git fetch origin bar~1:bugFix; git merge bugFix -
git push
git push <remote> <place>
<place>: 可以是::
git push origin master^:foo # 将本地的master 上一个修改提交远程的 foo 分支
git push orgin :foo #foo 远程有,删除远程foo 分支 -
git rebase o/master side1 #在分支side1 合并到o/master
rebase 的优缺点:
- 优点:Rebase 使你的提交树变得很干净, 所有的提交都在一条线上
- 确定Rebase 修改了提交树的历史
merge: - 保留提交历史,因此更偏爱 merge
- 远程追踪分支
- git checkout -b localBranchName o/master # 设置远程中分支与本地分支的关系(隐含的 push 目的地以及 merge 的目标)
master 和 o/master 的关联关系就是由分支的“remote tracking”属性决定的
这个clone 由git 自动设置好:
local branch “master” set to track remote branch “o/master”
git checkout -b foot o/master ;git commit;git push;#我们将一个并不叫 master 的分支上的工作推送到了远程仓库中的 master 分支上
- git branch -u 命令
git branch -u o/master foo #如果当前就在 foo 分支上, 还可以省略 foo
3. 其他
3.1. 增加私钥
错误:
Error:SSL certificate problem: self signed certificat
解决:
git config --global http.sslVerify "false"
或者
set GIT_SSL_NO_VERIFY=true git clone
3.2. 增加私钥
ssh-keygen -t rsa -C "co6co@qq.com"
cat id_rsa.pub #复制
ssh-add ~/.ssh/id_rsa #增加私钥```
ERROR:Could not open a connection to your authentication agent
ssh-agent bash
3.3. 清理冲突
git init
git remote add origin https://gitlab.xxx.com/userName/web.git
git pull --rebase origin master
#有风险的,会删除本地的修改
git clean -d -fx " "
x -----删除忽略文件已经对git来说不识别的文件
d -----删除未被添加到git的路径中的文件
f -----强制运行
git push -u origin master
4. gitconfig
本地:项目所在文件夹\.git\config
全局:C:\Users\Administrator
系统:X:\Program Files\Git\etc
5. 登录失败
git Incorrect username or password (access token) fatal
,
windows 控制面板
中找到 凭据管理
-->输入正确的用户名和密码!