常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| git init git add 1.js git add . git commit -m "..." git commit -a -m "..." git commit --amend git rm a.txt git rm --cached a.txt git clone [url] git status -s 1. ?? 2. _M 3. M_ 4. A_ 5. _D 6. _R git mv a.txt b.txt 1. mv a.txt b.txt 2. git rm a.txt 3. git add b.txt git log 1. -p 2. -2 3. --stat 4. --pretty= 1. oneline 2. short 3. full 4. fuller 5. format:"%h - $an, %ar : %s" 1. %H 2. %h 3. %an 4. %ae 5. %ad 6. %ar 7. %cn 8. %ce 9. %cd 10. %cr 11. %s 5. --graph 6. --since=2.weeks 7. --until 8. -S "aaa" 9. [path] 10. --author= git log --oneline --graph --decorate git reset 0. 设工作区为A,暂存区为B,分支为C 1. git reset --soft [HEAD] 2. git reset [HEAD] 3. git reset --hard [HEAD] 4. git reset [file] 5. git reset [HEAD] [file] git checkout -- [file] git reflog git remote 1. git remote -v 2. git remote add [pb] [url] 3. git remote show [pb] 4. git remote rename [opb] [npb] 5. git remote rm [pb] git revert -n [HEAD] git diff [<commit-id>] [file] 1. --cached/staged [<commit-id>] [file] 2. HEAD [file] 3. git diff [<commit-id>] [<commit-id>] [file] 3. --stat git difftool -x "code --wait --diff" [HEAD] [file] git stash 1. git stash save "保存当前状态" 2. git stash list 3. git stash pop "[stash_id]" 4. git stash apply "[stash_id]" 4. git stash drop "[stash_id]" 5. git stash clear git update-index 1. git update-index --skip-worktree [file] 2. git update-index --no-skip-worktree [file] 3. git ls-files -v git cherry-pick 1. git cherry-pick [HEAD] 2. git cherry-pick [b] 3. git cherry-pick [HEAD] [HEAD] 4. git cherry-pick [HEAD1]..[HEAD3] 4. git cherry-pick [HEAD1]^..[HEAD3]
|
分支
1 2 3 4 5 6 7 8 9 10 11 12
| git branch 1. [b] 2. -d [b] 3. -D [b] 4. -v 5. --merged 6. --no-merged git checkout 1. [b] 2. -b [b] git merge [b] git checkout -b 本地分支名 origin/远程分支名
|
补丁
1 2 3 4 5 6
| git format-patch [HEAD] -1 git format-patch [HEAD] [HEAD] git diff [HEAD] [HEAD] > [file.diff] git apply --check [file.patch|diff] git apply [file.patch|diff] git am [file.patch|diff]
|
整合分支的修改(合并test分支到master)
1 2 3 4 5 6 7 8
| 1. 合并分支(git merge test) 2. 变基(提交历史可能会丢失) 1. git checkout test 2. git rebase master 3. git checkout master 4. git merge test 3. 不同之处:合并分支的历史记录为并行的,变基的历史记录为串行的 4. 注意:不要对在你的仓库外有副本的分支执行变基
|
git远程分支
1 2 3 4 5 6 7 8 9 10 11 12 13
| 当从远程库克隆时,会为你自动将其命名为 origin(git clone -o [test] [url],可以改为test),拉取它的所有数据,创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master(跟踪分支)。 Git 也会给你一个与 origin 的 master 分支在指向同一个地方的本地 master 分支。 本地提交的时候master指针移动,但是origin/master指针不会移动 > a=>b=>c=>d=>e > a=>b=>c > a=>b=>c=>f=>g git fetch origin: 获取本地没有的远程库origin数据,移动 origin/master 指针指向新的、更新后的位置 > a=>b=>c=>d=>e > a=>b=>c=>d=>e > a=>b=>c=>f=>g git merge origin/master: 合并到当前分支 git checkout -b newBranch origin/master: 新建分支,并指向跟踪分支的位置(跟踪分支和分支不同的是只有一个指针,不含可编辑的副本) git push origin --delete master: 删除远程分支
|
git配置自定义服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| useradd git passwd git su git mkdir .ssh chmod 700 .ssh cd .ssh touch authorized_keys chmod 600 authorized_keys vi authorized_keys cd /home/git git init --bare test.git 本地测试 git remote add local git@ip:/home/git/test.git git push local master
|
GitWeb
1 2 3
| yum install git-instaweb git instaweb -p 3000 git instaweb --start
|
GitLab
基本命令
1 2 3 4 5 6 7
| gitlab-ctl reconfigure // 重启配置,并启动gitlab服务 gitlab-ctl start // 启动所有 gitlab-ctl restart // 重新启动GitLab gitlab-ctl stop // 停止所有 gitlab-ctl status // 查看服务状态 gitlab-ctl tail // 查看Gitlab日志 vim /etc/gitlab/gitlab.rb // 修改默认的配置文件
|
centos7安装
1 2 3 4 5 6 7 8 9 10 11
| yum install -y curl policycoreutils-python openssh-server // 防火墙中打开HTTP,HTTPS和SSH访问 systemctl enable sshd systemctl start sshd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https systemctl reload firewalld yum install postfix // 邮件服务 systemctl enable postfix systemctl start postfix curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash // 下载速度慢,可以先下载安装包,用rpm -ivh安装 EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee
|
gitlab安装
1 2 3 4 5 6 7 8 9
| docker pull gitlab-ce // 获取镜像 docker volume create gitlab-etc docker volume create gitlab-log docker volume create gitlab-data docker run -d --hostname localhost -p 3001:80 -p 3002:443 --name gitlab --restart unless-stopped --volume gitlab-etc:/etc/gitlab --volume gitlab-log:/var/log/gitlab --volume gitlab-data:/var/opt/gitlab gitlab/gitlab-ce:latest docker ps docker exec -it gitlab /bin/bash // 进入容器 vi /etc/docker/gitlab.rb // 修改配置文件 docker restart gitlab // 重启服务
|
邮件配置
修改配置文件/etc/gitlab/gitlab.rb
1 2 3 4 5 6 7 8 9 10
| gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "******@qq.com" gitlab_rails['smtp_password'] = "授权码" gitlab_rails['smtp_domain'] = "smtp.qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = '******@qq.com'
|
gitlab-rails console // 进入控制台
1. Notify.test_email(‘收件人邮箱’, ‘title’, ‘body’).deliver_now // 发送邮件测试