赞
踩
安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息,需要配置。步骤如下:
1、首先创建一个目录(我自里目录为Git)作为Git仓库。进入目录右键如下图。
2、选择Git Bash Here,出现如下窗口。
3、输入下面两条命令
git config --global user.name "此处填写自己的拼音全名"
git config --global user.email "此处填写自己邮箱"
4、查看是否已经有了ssh密钥:cd ~/.ssh
5、生成密钥:ssh-keygen -t rsa -C "此处填写自己邮箱"
6、上面命令执行完后,在用户/admin/.ssh目录下会看到id_rsa、id_rsa.pub文件。后面需要用。
7、 在github个人中心settings上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。
此时配置已经完成,可以使用命令在Git Bash Here控制台下操作了。
2.1 安装
sudo apt-get install git
命令进行安装。
2.2 配置
安装完成后进行git进行如下配置:
1、输入指令git config --global user.name "xxx"
和 git config --global user.email "你的邮箱地址"。
2、配置完成后,需要创建验证用的公钥,因为git
是通过ssh
的方式访问资源库的,所以需要在本地创建验证用的文件。使用命令ssh-keygen -C 'you email address@gmail.com' -t rsa
(注意ssh
与-keygen
之间没有空格),会在用户目录~/.ssh/
下建立相应的密钥文件。
4、创建完公钥后,需要上传。使用命令cd ~/.ssh
进入~/.ssh
文件夹,输入gedit id_rsa.pub
打开id_rsa.pub
文件,如下图,复制其中所有内容。接着访问http://git.oschina.net/profile网页,点击SSH公钥
,标题栏可以随意输入,公钥栏把你刚才复制的内容粘贴进去就OK了。
5、可以使用命令:ssh -T git@远程仓库网址
测试连接是否畅通。
6、此时已经配置完成。
方法一:
- git init //初始化仓库
- git remote add origin git@github.com:xxxx.git //将本地仓库与在线仓库进行连接
- git pull origin master //将在线仓库文件下载下来
- branch -a //查看分支
- git pull git@github.com:xxxx.git branch-name //拉取branch-name
方法二:
- git clone 地址
- git branch -a //查看分支
- git checkout 分支名 //切换分支
- git pull //拉取,或着更新
- git pull origin branch //拉取某个分支或更新
- git status //查看哪个文件被修改
- git diff fileName //查看某个文件修改的内容
- git add 某个具体文件 //上传某个文件
- git add . //添加所有更改文件
- git rm -r --cached '需删除的文件' //删除误加入的文件或文件夹
- git commit -m "注释" //写注释
- git push -u origin master(分支名或主干名) //推送,完成此步骤才真正完成
- git log
- git log -b -3 //查看前3条
- git log --oneline //显示的版本号
- git log --pretty=oneline //查看所有修改相关的commitId和注释信息
- git log --author=authorname //查看某个author的日志
git log --stat //查看所有提交记录的修改文件信息
git log --name-only //查看所有提交记录的修改文件信息
- git show commitId //查看指定commitId 的所有修改内容
- git show commitId fileName //查看某次commit中具体某个文件的修改
- git show --raw //查看最后一次提交记录的修改文件信息
- git show --raw commitId //查看指定commitId对应修改文件列表
- git checkout -b 分支名 //创建新分支并立即切换到新分支
- git branch [name] //创建本地分支,-注意新分支创建后不会自动切换为当前分支
- git push origin [name] //本地分支push到远程
- git branch -D 分支名 //删除本地分支-强删
- git branch -d 分支名 //删除本地分支-会在删除前检查merge状态
- git push origin --delete [branch_name] //删除远程分支
- git fetch origin --prune //从远处服务器更新所有分支到本地仓库
- git fetch origin develop //从远处服务器更新develop分支到本地仓库
- git checkout 分支名 //切换分支
- git branch --contains commitId //查看某commit属于那个分支
语法:
- git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]] [--[no-]allow-unrelated-histories] [--[no-]rerere-autoupdate] [-m <msg>] [<commit>…]
- git merge --abort
- git merge --continue
git merge 一般有以下三种方式:
- fast-forward
- no fast forward
- squash
注意:1、git merge 默认使用的 fast-forward 的合并方式;
2、git merge后也要push下,同步远程分支;
1、fast-forward
fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息,因为在这个过程中没有创建commit。
ps:我测试合并后删除分支,并没有丢失分支信息,commit也存在。
(1)git merge develop //合并分支develop,在需要合并的分支下执行
2、--no-ff
指的是强行关闭fast-forward方式,会创建一个新的commit。
(1) git merge --no-ff -m '注释' develop //注释一般写merge branch 分支名
3、squash
用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
(1) git merge --squash develop //git log看不到develop的commit信息,也没有merge的commit信息
4、cherry-pick
指定合并某个分支:git cherry-pick commitId,如:
git cherry-pick d71efced16fbefca0d42325e1503b3c0fb01efd0
解决冲突:
1、当主分支和develop分支改了相同地方,在git merge时会有如下错误提示:
2、通过命令:git ls-files -s,来查看到底是哪些文件发生了合并冲突:
- 0:表示对应的文件没有冲突,合并成功;如果不为0,则表示产生了合并的冲突;其中具体的值对应的意义是;
- 1:表示两个分支之前一个共同版本的对应文件内容;
- 2:表示当前分支对应的文件内容;
- 3:表示需要合并分支的对应的文件内容;
3、通过命令:git show :n:filename查看对应文件的对应版本的内容
4、在知道了三个版本的文件内容之后,我们就可以手动的对冲突的文件进行手动修改操作了。这里需要注意的是,对应的冲突文件的内容已经发生了改变,里面对应的冲突区域的内容将会同时存在当前分支的内容和远程版本的内容,如下图:
5、然后可以手动对该文件进行修改操作,然后在手动add、commit、push就可以了;
git status
git stash save backup 【将没有提交的内容缓存并移除到backup】
git stash list 【查看缓存列表】
git status 【此时可以看出,没有改变】
git pull 【pull最新代码】
git stash listgit stash pop 【将堆栈中最新的内容pop出来应用到当前分支上,且会删除堆中的记录】
git stash pop stash@{0} 【将堆栈中名为stash@{0}的内容,pop出来应用到当前分支上,且会删除堆中的记录】git stash apply 【与pop相似,但他不会在堆栈中删除这条缓存,也可以进行指定git stash apply stash@{0}】
git stash drop 【删除某个缓存,如:git stash drop stash@{0}】
git stash clear 【清除全部缓存】
git stash show 【显示与当前分支差异文件, 如git stash show stash@{0}】
git stash show stash@{0} -p【显示与当前分支差异具体内容】
git status //此时可以看出,有改变
情况Ⅰ:
只是修改了文件,没有任何 git 操作,直接一个命令就可回退:
git checkout -- aaa.txt // aaa.txt为文件名(只恢复这个文件) git checkout -- * // 恢复所有文件情况Ⅱ:
修改了文件,并提交到暂存区(即编辑之后,git add但没有 git commit -m ....)
git log --oneline //可以省略 git reset HEAD //回退到当前版本 - 保留改下的内容 git reset HEAD fileName //回退某个文件 - 保留改下的内容 git checkout -- fileName 或 git reset --hard 'commitId' //回退到指定版本 git reset --hard HEAD~1 //回退到当前版本
情况Ⅲ:
修改了文件,并提交到仓库区(即编辑之后,gitadd和git commit -m ....,但没有git push)
git log --oneline //可以省略 git reset HEAD^ // 回退到上一个版本 - 保留改下的内容 git checkout -- aaa.txt //aaa.txt为文件名注意:
- 情况II 和 情况III 只有回退的版本不一样;
- 对于 情况II,并没有 $ git commit,仓库版本也就不会更新和记录,所以回退的是当前版本;
- 对于情况III,一旦 $ git commit,仓库版本就会更新并记录,所以要回退的也就是上一个版本。
git reset 版本号 ---- 将暂缓区回退到指定版本
根据 $ git log --oneline 显示的版本号(下图黄色的字),可以回退到任何一个版本,也可通过 HEAD 来指定版本(下图红色的字)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。