文章目录
1,Git 全局设置
git config --global user.name "风吹花中花吹风"
git config --global user.email "791314247@qq.com"
git config --global credential.helper store
2,创建并布署公钥
注意:必须在Git全局设置用户名和email后再操作
1.查看是否已经有了ssh密钥:
cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.产生密钥:
ssh-keygen -t rsa -C “791314247@qq.com”
按3个回车,密码为空。
3.通过cat ~/.ssh/id_rsa.pub
,获取到你的 public key:
4.复制生成后的 ssh key到github或者gitee的公钥管理:
3,创建 git 仓库并推送到远程
1,gitee或者github中没有项目的情况:
git init
touch README.md
git add README.md
git commit -m "first commit"
github+http推送:
curl -u '用户名' https://api.github.com/user/repos -d '{"name":"仓库名"}' //汉字部分需要自己改
git remote add origin https://github.com/用户名/仓库名.git
git push origin master
github+ssh推送:
curl -u '用户名' https://api.github.com/user/repos -d '{"name":"仓库名"}' //汉字部分需要自己改
git remote add origin https://github.com/用户名/仓库名.git
git remote add origin git@github.com:用户名/仓库名.git
git push origin master
gitee+http推送:
git remote add origin https://**username:password**@gitee.com/==qq791314247==/==linux-imx-rel_imx_4.1.15_2.1.0_ga.git== //qq791314247是你的用户名,linux-...git是你想要生成的远程项目名字
git push -u origin master
gitee+ssh推送:
待补充
2,gitee或者github中已经有项目的情况:
git init
git commit -m "first commit"
github+http推送:
git remote add origin https://github.com/用户名/仓库名字.git
git push -u origin master
github+ssh推送:
git remote add origin git@github.com:用户名/仓库名.git
git push -u origin master
gitee+http推送:
git remote add origin https://gitee.com/==qq791314247==/==linux-imx-rel_imx_4.1.15_2.1.0_ga.git== //"qq791314247"是你的用户名,"linux-...git"是你已有的远程项目名字
git push -u origin master
gitee+ssh推送:
待补充
4,创建本地分支然后推送的远程
git checkout -b xxxx //创建本地分支xxxx并切换到该分支
git push --set-upstream origin xxxx //将该分支与远程仓库分支xxxx 相关联,如果远程仓库没有xxxx 分支会自动创建
5,切换分支时注意事项
1) 使用git branch xxx
可以新建本地xxx分支,但是一定要在新建前git commit
所有改动,否则会将该分支下未提交的改动带入其他分支
使用git status
查看有没有新改动
2) 切换到远程分支命令如下:
$ git branch -a //查看远程所有分支
$ git checkout -b dev origin/release/caigou_v1.0 //新建分支并切换到指定分支(git checkout -b 本地分支名 origin/远程分支名),加-b可以忽略掉git branch步骤
上面两条命令可以将远程git仓库里的指定分支拉取到本地,这样就在本地新建了一个dev分支,并和指定的远程分支release/caigou_v1.0关联了起来。
3) 查看本地分支及追踪的分支
$ git branch -vv //查看本地分支及追踪的分支
git branch -vv
命令可以显示本地所有分支,执行结果如下:
* dev e67e3ef [origin/release/caigou_v1.0] 供应商详情页面
master 11160c2 [origin/master: behind 5] Merge branch 'master' of https://git.jointforce.com/scm/join/yj-stat
*表示当前所在分支,[远程分支]表示当前本地分支追踪的远程分支,最后一个是最近一次提交的注释。
4)将本地分支推送到远程
$ git push -u origin dev:release/caigou_v1.0 //git push <远程主机名> <本地分支名>:<远程分支名>
1) 远程仓库相关命令
检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push[name][newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
2)分支(branch)操作相关命令
查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name]
我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
$ git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
6,删除本地所有改动
git commit --amend 撤销上一次提交 并讲暂存区文件重新提交
git checkout -- <file> 拉取暂存区文件 并将其替换成工作区文件
git reset HEAD -- <file> 拉取最近一次提交到版本库的文件到暂存区 改操作不影响工作区
git clean -d -f //删除所有未跟踪的文件和文件夹
7,删除本地和远程分支
git branch -d xxx //删除本地xxx分支
git push origin --delete xxx //删除xxx远程分支
8,.gitignore不起作用修复方法
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
9,合并分支
例如想从master合并到v1.0分支:
先切换到v1.0分支:
git branch v1.0
然后将master分支的改动合并到v1.0:
git merge master
10,项目同时推送至github和gitee
git remote set-url --add origin xxxx //xxxx为你的第二个gitee或者github的项目克隆地址
执行命令后一次push即可推送到2个地址。
11,更新fork的项目
1)简介
Fork是一个复制的操作,当你Fork一个项目之后,你就有了在原项目的基础之上进行修改和扩展的权限。
通常情况下,Fork操作用于参与别人的项目(成为项目中的一员),或者以别人的项目为基础来开发自己的项目。
当你使用一个开源项目的时候,如果项目中存在bug,除了可以将bug报告项目开发人员。你也可以通过Fork原项目,并参与进来。
首先,Fork原项目,并将项目代码更新到你的本地;
其次,修复项目中的bug,并确认问题已修复;
最后,如果一切测试都没有问题,你就可以提交一个pull request给项目所有人,如果项目所有者认可你的代码,他就会将你的修改更新到原项目中;
在Github中,Fork一个开源项目主要有两步:
查找到你想要Fork的项目;
点击项目介绍页面右上角的Fork;
保持同步
当你Fork一个项目之后,你的项目与原项目之间就不存在联系了,当原项目有更新的时候,你自己Fork的项目也不会同步保持更新。为了保持与原项目的一致,你需要使用到Git的命令行。
2)方法
1 将原项目地址给添加进来
git remote add upstream xxx //xxx为原项目的ssh或http的master地址
2 检查原项目更新
git fetch upstream //检出upstream分支以及各自的更新
3 切换到你的本地分支主干或者你需要更新的某个分支
git checkout master
4 合并远程分支到本地,执行后本地你要的更新的分支就和最新的原分支一样了
git merge upstream/master //合并远程原分支到本地
5 假如你更新了最新的原分支,你自己的项目是基于之前的分支新建的分支,那么你还得合并最新的本地的分支到自己的开发分支
git merge master //合并master分支到本地
git tag(给当前分支打标签):
列出tag:
git tag:在控制台打印出当前仓库的所有tag
git tag -l ‘v0.1.*’: 搜索符合模式的Tag
11,git打tag
git tag分为两种类型:轻量tag和附注tag。轻量tag是指向提交对象的引用,附注Tag则是仓库中的一个独立对象。建议使用附注Tag。
创建轻量Tag:git tag v0.1.2-light
创建附注Tag:git tag -a v0.1.2 -m “0.1.2版本” (我一般上线前打tag都用这种)
创建轻量Tag不需要传递参数,直接指定Tag名称即可。
创建附注Tag时,参数a即annotated的缩写,指定Tag类型,后附Tag名。参数m指定Tag说明,说明信息会保存在Tag对象中。
切换到Tag:git checkout tagName (与切换分支命令相同)
查看Tag信息:git show v0.1.2(用git show命令可以查看Tag的版本信息)
删除Tag:git tag -d v0.1.2(误打或需要修改Tag时,需要先将Tag删除,参数d即delete的缩写,意为删除其后指定的Tag。)
删除远程tag:git push origin --delete tag tagName
给指定的commit打Tag
打Tag不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和(通过git log获取)。
补打Tag:git tag -a v0.1.1 9fbc3d0
Tag推送到服务器
通常的git push不会将Tag对象提交到git服务器,我们需要进行显式的操作:
git push origin v0.1.2:将v0.1.2 Tag提交到git服务器
git push origin --tags: 将本地所有Tag一次性提交到git服务器
注意:如果想看之前某个Tag状态下的文件,可以这样操作
1> git tag:查看当前分支下的Tag
2> git checkout v0.21 :此时会指向打v0.21 Tag时的代码状态,(但现在处于一个空的分支上)
12,git将beyond compare设置为默认的比较工具
在c盘目录C:\Users\candy(自己的用户名)下打开文件.gitconfig,然后在最下面复制以下代码即可,注意把beyond compare工具设置为自己的目录。
[diff]
tool = bc4
[difftool]
prompt = false
[difftool "bc4"]
cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
[merge]
tool = bc
[mergetool]
prompt = false
[mergetool "bc4"]
cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
当merge <branch_name>提示冲突时,执行下面命令便可以调出bc合并冲突
git mergetool
当需要比较2个分支时,执行下面命令便可以调出bc比较
master为要比较的分支1,branch为要比较嗯分支2
git difftool --dir-diff master…branch