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 initgit 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 ryangit branch -d feature/reconstructiongit branch -d feature/darkMode
3、删除远程分支
删除远程分支,需要先将远程分支下载到本地,然后删除本地,然后提交
git checkout <branchname>git push origin --delete <branchname>git push origin: <branchname>案例:
git push origin --delete ryangit push origin --delete feature/reconstructiongit 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.gitgit 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.netssh -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?