0.配置ignore-过滤
1 | *.log |
1.配置用户
1 | git config --global user.name "My Name" |
2.创建本地仓库
1 | //创建一个要同步文件夹,并且进入这个文件夹 |
3.检查状态–是否有更新
1 | git status |
4.暂存
1 | git add . //将文件夹内的所有文件放到暂存区,注意点之前有空格 |
5.提交
1 | git commit -m "这里写的是备注,注意:一定要用双引号" |
6.链接到远程仓库
1 | //如果要想传到github上,先在github上创建一个仓库,然后执行下边指令 |
7.删除远程仓库
1 | git remote rm origin |
8.上传到远程服务器
1 | //两个参数:远程仓库的名字+分支的名字 |
下边这种方式好像不太行,推荐这之后的方法1
2
3
4
5
6
7
8
9
10
11
12
13//push上去 这个master是分支的意思
git push -u origin master
git push -u coding master
//pull下来
git pull origin master
git pull coding master
运行几条命令,我们便可以把同一次提交提交到多个远程库,为了方便,我创建了一个push.sh的脚本,内容是:
#!/bin/bash
echo 'Push to origin master'
git push origin master
echo 'Push to osc master'
git push osc master
××可行的方法××-因为本地的分支名不可以重复,所以上边方法不可行1
2
3
4
5git branch coding-master //先创建一个新分支
git checkout coding-master //切换到这个新分支
git pull coding master //pull 一下(我是觉得这一步已经包含了下一步了)
git merge master //把master合并到coding-master
git push -u coding master
9.克隆仓库
1 | git clone https://github.com/pengweb/BLOG.git |
10.拉取代码
1 | git pull origin master |
11.查看分支,包括远程,及当前分支
1 | git branch -a |
12.创建新分支
1 | git branch new_branch |
13.克隆分支
1 | git clone -b <branch> <remote_repo> //没有b就是所有分支 |
14.切换分支
1 | git checkout tentou_new_branch |
15.和当前分支比较
1 | git diff 分支名 |
16.合并分支
1 | //要先回到主分支 |
17.删除分支
1 | git branch -d tentou_new_branch |
18.重命名分支
1 | git branch -m <old_branch_name> <new_branch_name> |
19.查看commit记录
1 | git log |
20.查看某次提交改动
1 | git show b10cc123 //后边编码可以通过git log查看 |
21.查看两次提交不同
1 | git diff 09bd8cc..ba25c0ff //中间用..隔开 |
22.回滚到之前版本(可单文件)
1 | git checkout 09bd8cc1 hello.txt |
23.回滚到最新提交-清除之前没有push的commit
1 | git revert HEAD |
24.去除远程子模块
1 | //清除缓存区-单独文件 |
25.远程公共自模块submodule
1 | //为当前工程添加submodule |
26.为此分支创建跟踪信息
1 | git branch --set-upstream-to=origin master |
27.SSH
27.1 打开ssh目录
一般都是隐藏的1
cd ~/.ssh
或者去直接找到这个文件夹在1
2
3C:\Users\计算机名\.ssh
//如果没有的话可以在cmd内生成
md .ssh
27.2 生成密钥文件,默认名字为id_rsa和id_rsa.pub
1 | ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" |
说明:换成你自己的邮箱
不要改名字,就用id_rsa和id_rsa.pub,我改过几次,都以失败告终,但是按理说是可以的
27.3 打开公钥文件(id_rsa.pub),并把内容复制至代码托管平台上
settings→SSH keys
28.将静态页发布到github-page
Step 1
把 dist 目录从项目的 .gitignore 文件中移除(yeoman 中默认是忽略 dist 目录的)
Step 2
把 dist 目录添加到 subtree:1
git add dist && git commit -m "Initial dist subtree commit"
Step 3
用 subtree 将 dist 目录推送到 gh-pages 分支:1
git subtree push --prefix dist origin gh-pages
29.fetch用法
fetch其实就是pull的第一步1
2
3
4
5
6
7
8
9
10
11
12
13git fetch
//干了如下两件事
//创建并更新 所有 远程分支的本地远程分支.
//设定当前分支的FETCH_HEAD为远程服务器的master分支
git fetch origin //手动指定了remote.
git fetch origin branch1 //设定当前分支的 FETCH_HEAD' 为远程服务器的branch1分支`.
git fetch origin branch1:branch2
//干了如下两件事
//首先执行上面的fetch操作
//使用远程branch1分支在本地创建branch2(但不会切换到该分支), 如果本地不存在branch2分支, 则会自动创建一个新的branch2分支, 如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作.
git pull 分解:1
2经命令中的pull换成fetch, 执行之...
git merge FETCH_HEAD
30.远程分支和本地分支重新关联
1 | git branch --set-upstream-to origin/master master |
31.切换远程分支到本地
1 | //现在源码基础上创建分支 |
32. reset回滚本地代码三种选择
1 | reset |
注意因为回滚后版本落后线上版本,所以push会失败,所以一定一定一定需要强行push1
git push -f
–mixed
会保留源码,只是将git commit和index 信息回退到了某个版本.(回滚记录)
–soft
保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
–hard
源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
当然有人在push代码以后,也使用 reset –hard <commit…> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突…..
33. revert 同时回滚仓库
git revert用于反转提交,执行evert命令时要求工作树必须是干净的.
git revert用一个新提交来消除一个历史提交所做的任何修改.
revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)
持续集成gitlab+jenkins
可以通过gitlab-ci来实现集成,这样就不需要jenkins了
gitlab 默认
1 | Git global setup |
如果远程有文件了
1、git pull origin master –allow-unrelated-histories //把远程仓库和本地同步,消除差异
2、重新add和commit相应文件
3、git push origin master //推送到远程
4、完活!
如果只是因为本地没有ReadMe文件,那么就在本地生成一个(远程仓库有某个文件,而本地没有,-把远程仓库的文件拉去到本地)
git pull –rebase origin master //本地生成ReadMe文件
git push origin master
合并没有关系的两个分支
1 | git merge master --allow-unrelated-histories |
移出缓存区
1 | git reset HEAD <file> |
移出跟踪文件
1 | git rm --cached "文件路径" // 不删除物理文件,仅将该文件从缓存中删除; |
Fork且保持同步原仓库
github上fork了别人的项目后,再同步更新别人的提交
GitLab Fork项目工作流程
GitLab同步到本地分支,在原仓库上,点击merge request就可以申请了
Git Submodule管理子模块
使用Git Submodule管理子模块
如何在WebStorm中使用Git Submodule
1、项目添加submodules目录1
git submodule add http://gitlab.zhuanspirit.com/zz-fe-g/submodules.git src/submodules
此时可以看到两个文件.gitmodules
和submodules
修改完之后正常commit
和 push
2、如何更新子模块1
2cd src/submodules
git pull
或者1
git submodule update --remote submodules(默认是拉取master,也可以设置分支名 git config -f .gitmodules submodule.submodules.branch 【分支名】)
或者更新所有1
2git submodule foreach git checkout master
git submodule foreach git pull
3、修改子模块1
cd submodules
然后可以切换分支,提交,以及push等,任何操作。但合并master必须要找管理员。
4、注意事项
git clone的时候包含submodules
git clone –recurse-submodules
合并Fork的分支(zz-ui合并到g-ui)
1 | git fetch git@gitlab.zhuanspirit.com:zz-fe-common/zz-ui.git master |
克隆包含子模块的项目
需要增加--recursive
参数
1 | git clone --recursive git@gitlab.zhuanspirit.com:zz-fe-g/GAppActivity.git |
如果下载的文件夹为空可以使用下边命令来更新1
2git submodule init
git submodule update
每次输入密码
1 | git config --global credential.helper store |
会自动生成文件
地址:~/.gitconfig
实际地址: /etc/gitconfig
如何处理git每次提交都输入密码
修改子模块链接方式
直接修改.git下的config就可以了
git-修改远程的URL
回滚revert和reset区别
修改地址
Git remote set url
merge的几种方法
git merge的三种操作merge, squash merge, 和rebase merge
git merge squash 和 rebase 区别