ubuntu下安装
命令行模式安装
1
$ sudo apt-get install git
用户名,邮箱配置
1
2$ git config --global user.name "github用户名"
$ git config --global user.email "github绑定邮箱地址"创建验证用的公钥
1
$ ssh-keygen -C 'you email address@gmail.com' -t rsa
上传公钥到github,找到ssh key 添加公钥
1
2$ cd ~/.ssh
$ cat id_rsa.pub //查看公钥, 复制添加到github上
windows下安装
- 下载地址:https://git-scm.com/download/win
- 点击安装, continue next
- 在Adjusting your PATH environment选项中, 选中Use Git from the Windows Command Prompt, 把git命令添加到系统环境变量中,可以在任何地方使用git命令
- 打开命令窗口或者打开Git Bash使用git命令
1 | git config --global user.name “用户名” //配置用户名,邮箱 同上 |
Git 使用小妙招,专治各种误操作
Git 流程图
本地创建仓库发布的远程仓库
1
2
3
4
5
6$ mkdir myRepository
$ cd myRepository
$ git init //到这一步仓库已经初始化了,可以往里面添加内容
$ git add . // 把添加内容添加到 暂存区stage
$ git commit -m "" //生成commit记录, 把暂存区内容提交到本地仓库index
$ git push origin master //push到远程master分支, 可以去github上查看了拉取远程repository到本地
1
$ git clone https://github.com/xxxx/xxxx.git
在本地切一个新分支
1
$ git checkout -b newbranchName //是git branch 跟git checkout 合操作
从远程切一个分支到本地来创建本地分支
1
$ git checkout -b localBranchName origin/branchName
使用commitId 来创建一个分支
1
git branch branchName commitId / git checkout -b branchName commitId
查看分支
1
2$ git branch //查看本地分支列表
$ git branch -a //查看远程分支列表切换分支
1
$ git checkout branchName
删除分支
1
2$ git branch -D <BranchName> //删除本地分支
$ git push origin --delete <BranchName> //删除远程分支重命名分支
1
$ git branch -m <oldBranchName> <newBranchName>
reset, checkout
回退
git reset HEAD | git reset
可以用于暂存区(index/stage)回退到工作区,撤销add 的修改过git reset commitId
用于回退到指定版本(commitId), 用于仓库修改回退到工作区,撤销commit的修改git checkout fileName
用于撤销工作区文件的修改,这两个可以配合使用,但是不能删除新建文件.git reset HEAD^
用于版本回退,撤销一个commit,修改过内容回退到工作区(默认 –sort),参数–sort 不删除修改过,–hard 会删除修改过git reset HEAD~n
表示回退到之前的几个版本
–amend作用
1
$ git commit --amend //用来修改上次提交信息,并且把本次提交跟上次合并
本地修改提交到别人的commit上,解决办法
1
2
3
4
5
6
7
8方法一:修改提交的用户名(不推荐)
$ git commit --amend --author='Your Name<email> '
方法二:重新切一个分支, 把那个commit cherry-pick过来
$ git branch newbranch origin/develop //切新分支
$ git log //查看commit,并且复制commitId
$ git checkout newbranch //切到新分支
$ git cherry-pick commitId //把复制的commitId Pick过来, 这时候本地多了一个commit
$ git reset HEAD^ //会退到上一个commit ,但是修改还在,这时候只需保留自己的修改,别人的修改丢弃rebase 解决冲突神器
1
2
3
4
5
6
7
8
9准备工作,日常必备:
$ git branch -u origin/remoteBranchName //指定起源远程分支
$ git fetch //拉取远程分支更新
$ git branch -vv //对比远程分支, 看ahead/behind 几个版本
用rebase 把远程更新应用到本地分支:
$ git rebase origin/remoteBranchName //rebase 后,会显示一些冲突,没有冲突的话就会自动合并,有冲突的话就需要手动解决冲突然后进行下面操作.
$ git add . //添加解决冲突的更改
$ git rebase --continue //继续rebase ,如果还有冲突就重复上面操作, 指导没有冲突.
$git rebase --abort //如果执行rebase 过程中想反悔悔,就执行次操作恢复reflog 无限轮回
当HEAD发生改变(包括切换branch, pull, rebase, 添加新commit)一个新的纪录就会被添加到reflog, 当你一些误操作1
$ git reflog //查看
当你误操作导致一些文件丢失时,其他解决方法时,就可以利用这些HEAD或者commitId 进行恢复1
2
3$ git reset commitId
或者
$ git checkout -b newbranch commitId //重新切一个分支
- 合并多个commit
假如你有三个commit: 1,2,3 你要合成一个,如下操作commit3 : "3" commit2 : "2" commit1 : "1" commit0 : "other's commit"
- 执行
$ git rebase -i commit0
会显示pick commit1 ... pick commit2 ... pick commit3 ...
- 修改commit2和commit3的pick 改成fixup,然后保存退出
- 然后执行
git add .
,git rebase --continue
完成
查看git config信息
1
2
3$ vim ~/.gitconfig //可查看配置文件
或者
$ git config --global --listreset 、 revert 区别
都是回退修改,reset 直接删除commit及其修改,revert生成一个新的commit来回退删除指定commit修改。 revert时如果有冲突的话
,解决冲突之后 可以 revert –continue , 如果不解决,想撤销回退,可以 revert –abort
r
例: 已经存在两个commit1
2commit2
commit1git reset HEAD 结果
1
commit1
git revert HEAD 结果
1
2
3Revert commit2
commit2
commit1删除本地和远程分支
1
2
3
4
5
6
7
8
9
10删除本地分支
git branch -D branchName
删除本地远程分支
git branch -r -d origin/branchName
删除远程分支
git push origin -d remoteBranchName
或
git push origin :remoteBranchName