Git使用指南
常用命令
提交日志:
一行显示提交日志列表:
git log --pretty=oneline
最近两个礼拜的提交:
git log --since=2.weeks
某日期开始的提交:
git log --since="2018-04-01"
查看某个人的提交:
git log --author=gitster
组合查看:
git log --since="2018-04-01" --pretty=oneline
分支操作:
查看分支:
git branch
切换分支:
git checkout newBranchName
创建分支:
git branch newBranchName
推送分支:
git push origin newBranchName
设置标签:
git tag -a 1.0.0 -m 'Version1.0.0'
推送标签:
git push origin --tags
回滚版本:
git reset --hard b70e59944d312fff806b475a81a48bd914fb79ae
各种状态
1、首先了解下git所处的4种区 (工作区, 暂存取,本地仓库, 远程仓库)
加入到暂存区:
git add .
/git add <file>
加入到本地仓库:
git commit -m "commit info"
推送到远程仓库:
git push origin master
2、git的5种状态
未修改(Origin)
已修改(Modified)
已暂存(Staged)
已提交(Committed)
已推送(Pushed)
3、git diff 对比修改
已修改,未暂存:
git diff
已暂存,未提交:
git diff --cached
已提交,未推送:
git diff master origin/master
git查看修改选项: 1. git status
查看修改了那些文件 2. git diff
查看具体修改的文件内容 3. git log -p files
查看某个文件的详细修改记录
4、撤销修改(观看上面的图)
已修改,未暂存:
git checkout .
(git checkout )已暂存,未提交:
git reset
(git reset --hard 会覆盖)已提交,未推送:
git reset --hard origin/master
(远程仓库覆盖本地仓库)已提交,已推送:
git reset --hard <commitID>
(如果要覆盖远程必须强制推 git push -f)
仓库分类
1、本地仓库
创建并提交:
git init
git add .
git commit -m 'initial'
删除方式:
方法一:
ind . -name ".git" | xargs rm -Rf
方法二:
rm -rf .git
方法三:直接删除
.git
文件(显示隐藏文件的情况下)
2、远程仓库
查看远程仓库:
git remote -v
添加远程仓库:
一般形式添加:
git remote add origin git@xxx.git
带密码形式添加:
git remote add origin http://yourusername:password@git.oschina.net/xx-project.git
注:比如同一台Mac操作多个GitHub账号的时候,需要使用到上述命令
多个远程仓库的添加:
添加github远程仓库:
git remote add github git@xxx.git
添加gitee远程仓库:
git remote add gitee git@xxx.git
移除远程仓库:
git remote rm origin
移除指定的github远程仓库:
git remote rm github
提交远程仓库:
提交主分支代码:
git push origin master
提交开发分支代码:
git push origin develop
拉取远程仓库:
拉取主分支:
git pull origin master
拉取开发分支:
git pull origin develop
3、状态和日志
查看git状态:
git status
查看有多少暂存:
git stash list
查看提交历史:
git log
注:会按提交时间列出所有的更新,最近的更新排在最上面
查看所有分支的所有操作记录:
git reflog
包括commit和reset的操作,包括已经被删除的commit记录,
git log
则不能察看已经删除了的commit记录
暂存:
git stash
分支
1、分支相关操作
查看本地分支:
git branch
(前面带“星号”的分支表示当前所在的分支)查看远程分支:
git branch -r
查看所有分支:
git branch -a
(远程分支会用红色表示出来(如果你开了颜色支持的话))创建本地新分支:
git branch newBranchName
切换到本地新分支:
git checkout newBranchName
创建并切换分支:
git checkout -b develop
(一步到位)推送本地新分支到 origin:
git push origin newBranchName
重名名分支:
git branch (-m | -M) <oldbranch> <newbranch>
(注:m/M 至少选择一个)
2、删除本地分支
删除分支:
git branch -d branchName
强制删除分支:
git branch -D branchName
注:-d,表示“在分支已经合并到主干后删除分支”。如果使用大写的-D的话,则表示“不论如何都删除分支”
案例:
git branch -d ryan
git branch -d feature/reconstruction
git branch -d feature/darkMode
3、删除远程分支
删除远程分支,需要先将远程分支下载到本地,然后删除本地,然后提交
git checkout <branchname>
git push origin --delete <branchname>
git push origin: <branchname>
案例:
git push origin --delete ryan
git push origin --delete feature/reconstruction
git push origin --delete feature/darkMode
4、分支合并
把 develop 代码合并到 master 分支:
直接创建 develop 分支并切换过去:
git checkout -b develop master
切换到 master 分支:
git checkout master
对 develop 分支进行合并:
git merge --no-ff develop
使用
--no-ff
参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。
5、分支管理策略:
可以参照阮一峰的:Git分支管理策略
标签
参考网址:Git-基础-打标签
标签有两种类型:轻量级的(lightweight)和含附注的(annotated),但是不推荐使用轻量级的标签
1、创建标签
创建一个含附注类型的标签:
git tag -a 1.0.0 -m 'tag info'
推送本地标签到云仓库:
git push origin --tags
2、删除标签:
删除本地:
git tag -d 2.0.0
删除远程:
git push origin :refs/tags/2.0.0
一起执行删除本地和远程:git tag -d 2.0.0; git push origin :refs/tags/2.0.0
3、常用命令
显示标签列表:
git tag
显示某个标签的详细信息:
git show v1.0.0
推送本地标签到云仓库:
git push origin --tags
后期添加标签:
查看提交历史:
git log --pretty=oneline
,获取提交唯一标识,比如 9fceb02。某次提交添加标签:
git tag -a v1.2.1 9fceb02
推送本地标签到云仓库:
git push origin --tags
用户名/邮箱管理
1、全局配置
查看全局设置命令:
git config -l
全局设置用户名:
git config --global user.name "XXXX"
全局设置邮箱:
git config --global user.email "XXXX@gmail.com"
2、局部配置
注:项目单独配置的用户名具有比全局配置的用户更高优先级
配置方式一:使用命令设置: 1. 局部设置用户名:git config user.name "XXXX"
2. 局部设置邮箱:git config user.email "XXXX@gmail.com"
3. 设置查看命令:git config --list
配置方式二:直接修改文件: 1. 进入 .git 目录,找到 config 文件并打开 2. 修改 config 文件添加用户名和邮箱:
撤销回滚
1、撤销当前修改
撤销当前的修改:git reset —hard
2、回滚到某次提交
回滚代码到某个版本 git reset --hard f8b05d07dc9220e79387b9a183e9ebaab97257cd git reset –soft f8b05d07dc9220e79387b9a183e9ebaab97257cd 会将之间的修改全部进行revert,然后在进行add commit操作就行了。
重置到某一版本:git reset 1d7f5d89346 恢复最后一次暂存的改动:git stash pop
3、回滚到某个标签
先 git clone 整个仓库
然后 git checkout tag_name 就可以取得 tag 对应的代码了
但是这时候 git 可能会提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:git checkout -b branch_name tag_name,这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。
代码冲突解决
提交代码到本地 Git
拉取代码,发现冲突:会显示冲突文件
1、解决方法一:直接打开文件修改
Finder 中打开冲突文件
搜索关键词,快速定位冲突地方:<<<<<<< / >>>>>>> / HEAD,
解决冲突
去掉被人代码
去掉自己的代码
合并代码
2、解决方法二:使用 Sourcetree 工具
Sourcetree 打开工程
提交修改到本地
拉取远程代码,发现冲突文件
右键冲突文件,选择解决冲突:
方式一:外部合并工具,选择Action,比如保存两者
方式二:使用我的版本,会直接修改
方式三:使用他人版本,会直接修改
提交合并代码的操作
推送到远端
其他使用
1、忽略文件
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:
规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
2、记住密码
让本地快速提交、记住密码的三种方法:
带密码形式的添加远程仓库:
git remote add origin http://yourUsername:password@git.oschina.net/name/project.git
git remote add origin http://yourUsername:yourPassword@xxx.com/xxproject.git
设置存储密码:
默认15分钟:
git config --global credential.helper cache
自定义保存时长:
git config credential.helper 'cache --timeout=3600'
(保存一小时)长期存储:
git config --global credential.helper store
添加 SSH Key:
生成SSH:
ssh-keygen -t rsa -C "XXXX@gmail.com"
查看SSH:
cat ~/.ssh/id_rsa.pub
3、修改仓库名
修改仓库名:
git remote rename oldname newname
(一般oldname是origin)注:以后推送时执行的命令就不再是 git push origin master 而是 git push newname master 拉取也是一样的
4、git ignore 配置
git ignore 可以配置 n 个的,每个文件夹下面都可以单独配置一个 ignore 文件
可以针对不同的文件夹进行配置不同的 ignore 文件
5、一次提交所有分支的代码
方法一:
git push origin --all
方法二:
git push origin '*:*'
5、远程仓库地址修改了怎么办?
当远程仓库地址修改了(比如仓库名称修改了 xx.git 修改成了 xxx.git )
直接到本地仓库修改一下远程仓库的地址就可以了,不影响当前的提交以及已经提交的提交
SSH Key
1、常用命令
生成 SSH Key:
ssh-keygen -t rsa -C "XXXX@gmail.com"
一路回车就好了,或者设置一个密码
拷贝 SSH Key:
cat ~/.ssh/id_rsa.pub
添加 SSH Key:
测试 SSH Key:
ssh -T git@git.oschina.net
ssh -T git@github.com
获取 ssh key
方法一:
vim ~/.ssh/id_rsa.pub
方法二:
cat ~/.ssh/id_rsa.pub
2、关于码云可能添加不了 SSH Key 的坑,解决办法:
ping gitee 网址:
ping gitee.com
,获取 ip 地址添加
218.11.0.86 gitee.com
到/etc/hosts
文件中第二步应该会遇到无法编辑的情况,解决方法:
拖动
hosts
文件到桌面编辑
hosts
文件拖回
/etc/
路径,选择鉴定
,输入登录密码,搞定!!!
ssh -T git@git.github.com(52.74.223.119)
3、SSH 提交方式,多用户的情况下配置:
Last updated
Was this helpful?