git&gitlab

目录

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.在远程仓库开发

  1. 创建新的项目

  2. 创建新仓库或者推送已有仓库

    1git init
    2   
    3#origin是后面链接的别名
    4git remote add origin [email protected]:---/my-cool-website.git
    5   
    6git remote -v #显示所有远程库
    
  3. 推送变化

    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, 保持历史记录整洁