Git常用命令
1.忽略已经在版本控制里的文件
1 | git update-index --assume-unchanged 文件路径 |
某目录下所有文件可以写成 src/**
2.更改签名
1 | git config user.name [AAA] |
3.提交操作
1 | git add 文件名 |
4.撤回操作
1 | git reset --hard [哈希索引值] |
5.切换分支
1 | git checkout [分支名] |
6.检出仓库
1 | git clone xxxxxxxx |
7.历史
1 | git log |
8.暂存
1 | git stash |
9.合并
1 | git merge [brance] |
10.更新
1 | git fetch |
11.git引起的变化
1 | git reflog |
12.回滚远程
假设3笔提交
1 | commit 3 |
1 | git reset --hard HEAD~1 |
13.cherry-pick
1 | git cherry-pick [哈希索引值] |
14.撤销某笔操作
1 | git revert [哈希索引值] |
15.rebase
1 | git rebase -i [startpoint] [endpoint] |
-i
的意思是--interactive
,即弹出交互式的界面让用户编辑完成合并操作,
合并图中的两笔
1 | git rebase -i 5f81895032add1c5f003519b059e67d971d5bdd8 f4544e9b890b988f51fcff211d2399d203ef57fc |
1 | pick:保留该commit(缩写:p) |
修改内容,第二个pick改成s或者squash
wq保存
合并最后几笔记录log:
1 | git rebase -i HEAD~2 |
需要将多笔提交,复制到其他分支的时候,如图
1 | git rebase [startpoint] [endpoint] --onto [branchName] |
1 | 放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃 |
16. pull
1 | git pull |
FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
比如有两个分支
1 | D---E develop |
执行
1 | git merge develop |
1 | D--------E |
merge会产生新节点
执行
1 | git rebase test |
1 | A---B---D---E---C‘---F‘--- develop, master |
rebase会将两个分支合并。rebase 操作的话,会中断rebase,同时会提示去解决冲突。
解决冲突后,将修改add后执行git rebase --continue
继续操作,或者git rebase --skip
忽略冲突。
1 | git rebase --continue |
碰到的问题
在git push的时候发现当前分支没在远程上,解决方案:切换到需要提交的分支,cherry-pick过来。
可能碰到的问题
本地和远端分支没有关联,导致下拉代码有问题(比如因为没建立关联,develop分支下拉的是别的分支的代码,不是远端的develop)
1 | git branch -vv |
17.查看分支
1 | git branch |
18.删除分支
1 | git branch -D 要删除的分支 |
备注:
.gitignore文件
.gitignore只能忽略那些原来没有被追踪的文件,如果需要新增忽略文件的话
1 | git rm -r --cached . |
误删本地分支恢复
1 | 删除分支 |
删除分支的本质,其实是删除了.git/refs/heads/目录下的一个与分支同名文件,文件内容是一个分支所指向commit对象的sha-1值。也就是说真正删除的并不是commit对象本身,更为形象的说就是揭掉贴在commit对象上的标签,当然我们可以再贴上一个标签。