Git使用

快捷键

查看本地 git 操作文档 中 checkout 的用法 git help checkout
帮助git help
配置git config
配置用户名git config “user.name”
配置邮箱git config “user.email”
查看配置 git config -l
初始化 git 仓库git init
添加当前所有文件到 git git add .
提交版本 git commit -m "提交备注"
给命令起别名 git config alias
查看文件状态git status
查看日志git log
单行形式查看日志git log --pretty=oneline
配置五颜六色的 log log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
全局配置 --global
版本回退
回退到上一个版本git reset --hard HEAD^
回退到上上个版本git reset --hard HEAD^^
回退到任意一个版本git reset —hard 版本号
查看指令使用纪录 git reflog
删除文件 (删除后要记得commit,才能同步到版本库)git rm
查看所属分支 git branch -a
查看当前所在分支git branch
切换分支git checkout 分支名称
checkout 分支到本地git checkout -b <本地分支名> origin/<分支名>
推到远端git push
强推到远端 git push origin HEAD --force
新建分支git branch <分支名>
对分支 进行删除git branch -d <分支>
查看命令历史history
推到远端分支git push origin :分支名称 意思是:上传本地当前分支代码到分支
删除所有内容,我们不想提交任何内容,所以我们需要把当前内容全部删除git rm -rf .
使用commit命令来提交分支git commit -am "new branch for documentation"

分支
1.创建空白分支git checkout --orphan <分支>
2.clone 某个分支git clone -b dev5 https://git.xx.git
3.clone 所有分支git clone https://git.xxx.gitgit clone默认会把远程仓库整个给clone下来;
但只会在本地默认创建一个master分支
4.如果远程还有其他的分支,此时用git branch -a查看所有分支
5.使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支git checkout -t origin/python_mail.skin
6.删除本地分支git branch -d <分支名> 删除的时候要先切换到别的分支
7.删除远程分支 git push origin --delete <分支名>
8.更新本地远程已删除的分支 git remote prune origin
9.查看分支的最后提交信息 git branch -v
10.–merged 与 --no-merged 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支 git branch --merged git branch --no-merged
11.未合并分支 git branch -d 会失败 该用git branch -D
12.需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了git rm file_path
13.需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制git rm --cached file_path

远端
关联远端 git remote add origin git@server-name:path/repo-name.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容
取消远端关联git remote remove origin
忽略本地仓库已修改并提交的文件,但不push到远程仓库git update-index --assume-unchanged xxx.txt
删除远端文件 ,但在本地依然保留该文件git rm --cached xx.txt//去掉 xx.txt 的版本跟踪 在 push 到远端 后 该文件在远端删除,本地依然存

合并分支
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。git merge --no-ff -m "merge with no-ff" dev

标签
打标签git tag v.xx -m "xxx"
标签推远端git push origin --tags

git 常识

working Directory 工作区
repository 版本库
stage 暂缓区
master 分支
HEAD 指针 :用于指向当前分支
git add 把文件修改添加到暂缓区
git commmit 把暂缓区的所有内容提交到当分支

分支看不见
如果没有任何文件提交的话,分支是看不到的,可以创建一个新文件后再次提交则新创建的branch就会显示出来。

无法 pull
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/

删除版本控制
打开终端
1、cd到项目目录
2、执行 find ./ -name .git -exec rm -rf {} ; 即可
命令中包含.git是删除掉目录下隐藏的.git文件夹,如果是svn管理的话,可以
find ./ -name .svn -exec rm -rf {} ;

日常操作

忽略本地,更新线上
git fetch --all
git reset --hard origin/master

目录下忽略一些文件,不加入版本控制
step1:
在仓库文件夹目录下创建.gitignore 文件
$ touch .gitignore
step2:
用文本编辑器打开.gitignore 进行编辑
*******以下是.gitignore 内容
Pods/
Pods目录下的库文件全部忽略
标题忽略所有 .a 结尾的文件
.a
但 lib.a 除外
!lib.a
仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/
.txt
忽略 doc/ 目录下所有扩展名为 txt 的文件
doc/**/
.txt


step3:
$git add . 命令会忽略掉 Pods文件夹下的所有文件

gitlab 配置公钥秘钥
cd ~/.ssh
ssh-keygen -t rsa -C "your.email@example.com" -b 4096 //此时,创建了公钥和秘钥,路径默认:~/.ssh
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub //获取公钥,并将公钥粘贴到gitlab服务器

git 本地仓库关联远程仓库
git本地仓库关联远程仓库主要有两种情形。
1.在远端创建仓库时有勾选初始化文件,即有初始化提交了有初始化
2.直接创建空远端仓库。
网上的关联远程教程一般是基于第二种情况的
$ mkdir gitResp //切换到某目录 创建一个叫 gitResp 文件夹
$ cd gitResp //切换到该目录下
$ git init //初始化git
$ git remote add origin <远程仓库地址> //添加远端仓库关联
$ git push -u origin master //本地推到远端 ,-u 参数是 git 首次 push 的时候才需要加上的,作用是把本地的 master 和远端的 master 分支关联起来。
其实,我们这里漏了一个步骤 ,这样直接推上远端会报
error: src refspec master does not match any.
error: 推送一些引用到 ‘https://gitee.com/JasonDu_iOS/ddd.git’ 失败
这个错误是说我们本地仓库没有任何被版本管理的文件 所以我们在 push 前需要先添加一些文件
$ touch README.md
$ git add README.md
$ git commit -m “initCommit”
最后,执行上面 push 的命令就: git push -u origin master 就O了。
但是,
通常我们在创建远端仓库的时候经常会直接初始化了,做了一次提交,例如文首那里的截图所示,勾选了其中一个,也就是第一种创建远端仓库的情况。这个时候会发现,我们继续操作的时候会要求我写 commit 内容,这个时候仓库里已经存在受版本控制的文件了。我们还是按照原来的操作会发现 ,先 push 的时候会告诉我们
提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
提示:再次推送前,先与远程变更合并(如 ‘git pull …’)。详见
提示:‘git push --help’ 中的 ‘Note about fast-forwards’ 小节。
我们版本已经落后了,需要先更新 ,于是
$ git pull
然后 ,终端告诉我们!
fatal: 拒绝合并无关的历史
被无情的拒绝了。
解决方式很简单 只需要在 git pull 后面加 --allow-unrelated-histories参数就好了。

有时会遇到git branch -a时总是不出现新的分支或者远程已经没有的分支在本地还有,这时就需要更新下本地的git分支保持和远程分支一致git remote update origin --prune还有可能是本地仓库什么东西都还没有,需要先提交

图形界面工具

source tree

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值