git
1.创建repository仓库
1git --version
2mkdir my-cool-website
3cd my-cool-website
4git status #在不知道怎么办时获取一些信息
5git init #初始化仓库
6git status
2.设置用户信息
1## global 全局配置
2git config --global user.name "Valenti Despa"
3git config --global user.email "[email protected]"
3.第一次commit提交
1git commit #无文件提交(文件没有变化)
2vim readme.md #:x保存退出
3git status #出现未跟踪文件
4git add readme.md #添加追踪文件(暂存区)
5git status #出现要提交的变更
6git commit -m "My first commit"
4.一次提交多个文件
1vim index.html
2vim readme.md
3git status #出现未跟踪的文件以及待提交的变更
4#一个一个添加
5#git add readme.md index.html
6git add . #全部添加
5.取消暂存区的文件的变更
这样做不意味着原文件的变更取消了
1git reset HEAD readme.md
2git status
3git commit -m "Added first page"
4
5git add .
6git status
7git commit -m "Improve readme"
8git status
9
6.查看变更
1git log
2git log --patch #查看更详细的变更
7.提交文件夹
1mkdir temp
2git status #git不跟踪文件夹
3#插入空文件
4touch temp/.gitkeep
5git status
6git add .
7git commit -m "Added temp folder"
8.删除文件
1#未跟踪文件
2touch newfile.txt
3git status #未跟踪文件
4rm newfile.txt
5
6#在跟踪文件
7rm -rf -- temp #删除在跟踪目录
8git status
9git add . #暂存区删除目录
10git commit -m "Removed temp folder"
9..gitignore文件
有些文件在目录中但是不想让他们在仓库中,使用gitignore排除他们。
1mkdir config
2touch config/private.txt
3git status
4vim .gitignore
5
6config
7
8git status
9git add .
10git commit -m "Added gitignore configuration"
10.创建分支
创建实验性的东西, 开发新功能等。这样不会影响主分支
1git checkout -b feature/new-table #创建新分支并切换
2git status
3vim index.html
4git add .
5git commit -m "Added table"
6
7git checkout master #回到主分支
8cat index.html #没有变化
9
10git checkout feature/new-table
11.合并分支
这里只是出现简单合并。
1git branch -d featrue/new-table #删除分支出现error
2
3git checkout master
4git merge feature/new-table
5git log
6
7#合并模式为fastforward, 这只会在当master没有出现更改情况下的合并
8git branch -d featrue/new-table
12.高级分支场景
1git checkout -b bugfix/table
2vim index.html
3git add .
4git status
5git commit -m "Added table cell"
6
7git checkout master
8vim readme.md
9git add .
10git commit -m "Learning branching"
11
12#这时出现了双分支。两分支无共同父
13git merge bugfix/table
14#这时使用的是recursive 递归策略
15
13.获取另一个分支的修改
这样可以使得两个分支在一些文件保持一直, 可以进行快速合并
1git checkout -b bugfix/table-2
2vim index.html
3git add .
4git commit -m "Added 2nd cell"
5
6git checkout master
7vim readme.md
8git add .
9git commit -m "Learning rebaseing"
10
11#不能进行快速合并
12
13git checkout bugfix/table-2
14#bugfix/table-2获取,master的修改
15git rebase master
16
17git log
18git checkout master
19#快速合并
20git merge bugfix/table-2
14.解决合并冲突
合并冲突通常是两次提交修改到了同一文件甚至三同一行
1#准备
2git checkout -b bugfix/table-3
3vim index.html
4git add .
5git commit -m "Rename cell"
6
7git checkout master
8vim index.html #修改同一行
9git add .
10git commit -m "Renamed in My cell"
11
12#冲突
13git merge bugfix/table-3 #冲突
14git status #both modified: index.html
15git merge --abort #停止合并
16git status #一切都好
17
18git checkout bugfix/table-3
19git rebase master #冲突
20git rebase --abort #停止同步
21
22#解决
23git merge bugfix/table-3 #冲突
24git status #both modified: index.html
25vim index.html #出现HEAD, 分支等信息, 告诉你那里冲突了
26#解决冲突, 可以使用ide打开更好解决。
27
28#告诉git已经处理好冲突
29git add index.html
30git commit -m "Resolve conflict"
31git status
15.在远程仓库开发
-
创建新的项目
-
创建新仓库或者推送已有仓库
1git init 2 3#origin是后面链接的别名 4git remote add origin [email protected]:---/my-cool-website.git 5 6git remote -v #显示所有远程库
-
推送变化
1#注意如果没有sshkey需要生成并上传到代码平台 2ssh-keygem -t rsa -C "..." 3 4#只推送master 5git push origin master
Gitlab
1.gitlab web界面
可以查看提交commit看看那些内容发生了变化
可以master旁边添加分支
可以快速改变文件内容而不需要在本地改变
2.web界面中commit
直接edit文件,然后commit就行
3.从远程拉取变化到本地
1git pull
2git pull origin master
4.解决冲突
本地commit之后, web那里也收到了同一文件的commit, 这是本地不能push
1#方法一:
2#先把远程的冲突pull过来
3git pull origin master
4
5#进行冲突处理。merge commit
6
7#方法二:
8#直接同步为远端的master
9git reset --hard origin/master
10
11#或者rebase, 解决冲突/自动合并
12git pull origin master --rebase
5.克隆远端仓库
clone按钮有连接
1git clone 链接
6.将分支合并到master
1git pull 更新
2git checkout -b feature/cool-table
3git add .
4git commit -m "Text change"
5#推送远端分支
6git push origin feature/cool-table
7#进行merge request, 请求合并到主分支
8访问连接, 或者gitlab上merge‘
9
10vim index.html
11git add .
12git commit -m "fix"
13git push origin feature/cool-table
14这样再次更改也会反映在merge中。
15squash commit可以合并多个commit, 保持历史记录整洁