标签:script rename 清除 ash 界面 cache 作者 回滚 directory
Windows: https://git-scm.com/download/win
Mac: https://git-scm.com/download/mac
Linux/Unix: https://git-scm.com/download/linux
/*配置 user.name 和 user.email*/
$ git config --global user.name ‘your_name’
$ git config --global user.email ‘your_email@domain.com’
$ git config --local user.name ‘your_name’ # local 只对某个仓库有效
$ git config --global user.name ‘your_name’ # global 对当前用户所有仓库有效
$ git config --system user.name ‘your_name’ # system 对系统所有登录的用户有效
优先级排序:local > global
/*查看配置信息*/
$ git config --list --local
$ git config --list --global
$ git config --list --system
$ cd 项目目录
$ git init # 在当前目录下增加一个 .git 目录。
$ git init <directory> # 指定目录创建空的 git 仓库,创建一个名为 directory,只包含 .git 子目录的空目录。
$ git clone <repo> # 位于 <repo> 的仓库克隆到本地。
$ git clone <repo> <directory> # 位于 <repo> 的仓库克隆到本地。
* 本地协议:/path/to/repo.git 与 file:///path/to/repo.git。
* http/https 协议:网络协议。
* ssh 协议:常用的智能协议,需要公私钥。
* 哑协议: 哑协议传输进度不可见,只能协议传输可见。
* 智能协议:智能协议比哑协议传输速度快。
$ git clone --bare /path/.git git_name.git (哑协议)
$ git clone --bare file:///path/.git git_name.git (智能协议)
git 提交流程:当前项目 -> git add -> 暂存区 -> git commit -> Git仓库
$ git status # 查看 git 当前状态。
$ git add files # 添加文件到暂存区。
$ git add -u # -u 是 update 的意思,保存修改和删除,不包括新建文件。
$ git add -A # -u 是 all 的意思,将文件的修改,文件的删除,添加到暂存区。
$ git add . # 保存新的添加和修改,但是不包括删除。
$ git commit -m ‘Add Info’ # 提交暂存区信息到 git 仓库。
$ git commit --amend # 对最近一次提交的 message 进行变更。
$ git push # 将提交的更改发送到远端仓库。
$ git push origin master # 将本地的 master 分支推送到 origin 主机的 master 分支。
$ git checkout # 检出文件、检出提交、检出分支(检出提交会使工作目录和这个提交完全匹配。)
$ git checkout master # 回到 master 分支
$ git checkout commit_id file # 查看某个分支下的 file 文件
$ git checkout -b dev # 创建并切换分支
$ git branch # 查看本地分支
$ git branch -r # 查看远程分支
$ git branch -a # 查看本地和远程分支
$ git branch -d branchName # 删除本地分支
$ git branch -d -r branchName # 删除远程分支
$ git branch -D branchName # 强制删除 branchName 分支
$ git branch -v # 查看本地分支信息
$ git branch -vv # 查看更多本地分支信息
$ git branch -av # 查看所有分支信息
$ git branch -m oldbranch newbranch # 重命名分支
$ git branch -M oldbranch newbranch # 强制重命名分支
commit 32d61abce038708176d1e0e409d1c2575a12f8fb ( 提交内容 SHA-1 校验总和 checksum )
Author: xxx <xxx@i-wall.cn>
Date: Tue Jan 7 18:27:24 2020 +0800
$ git log # 查看 git 上传管理日志 git 的版本历史。(当前分支)
$ git log -all # 查看 git 上传管理日志 git 的版本历史。(所有分支)
$ git log —-stat # 查看哪些文件被更改了,以及每个文件相对的增删行数。
$ git log -p # 显示每个提交全部的差异(diff)。
$ git log --oneline # 让提交记录在一行展示(展示一行)。
$ git log --oneline —all # 让提交记录在一行展示(展示所有)。
$ git log --oneline --all -n4 # 让提交记录在一行展示(展示所有分支最近的 4 条记录)。
$ git log --oneline --all -graph # 让提交记录在一行展示, 展示方式为图表的方式。
$ git log --author=“<pattern>” # 查看指定作者的提交
配置 .gitignore 文件(文件名必须为 .gitignore)
folder/
*fiels
...
$ git remote # 允许你创建,查看和删除与其他仓库之间的连。列出你和其他仓库之间的连接
$ git remote -v # 列出你和其他仓库之间的连接并显示每个连接的 url。
$ git remote add <name> <url> # 创建一个新的远程仓库连接,添加之后,可将<name> 作为 <url> 便捷的别名在其他 git 命令中使用。
$ git remote rm <name> # 移出别名为 name 的远程仓库连接。
$ git remote rename <old-name> <new-name>
# 移出别名为 name 的远程仓库连接。
$ git fetch <remote> # 将提交从远程仓库导入到你的本地仓库。
$ git pull <remote> # 相当于 git fetch + git merge。
$ git pull —rebase <remote> # git rebase 合并远程分支和本地分支,不是 git merge。
$ git push # 将本地仓库中的提交转移到远程仓库中时要做的事。
$ git push <remote> <branch> # 将指定的分支推送到 <remote> 。
临时修复
$ git stash # 将当前工作区临时存储。
$ git stash list # 查看临时存储。
$ git stash apply # 恢复临时存储到工作区,不删除 stash list 保留信息。
$ git stash pop # 恢复临时存储到工作区,删除 stash list 保留信息。
回滚错误修改
$ git revert # 用来撤销一个已经提交的快照。(本地已修改代码会删除)
$ git rebase # 变基操作(将当前分支 rebase 到 <base> )
举例:正在 A 分支下开发, master 发现了个错误需要修改
$ git checkout -b bugfix master # 基于 master 分支创建一个快速修复分支
$ git commit -a -m ‘Fix bug’ # 提交所有修改的分支。
$ git checkout master # 合并回到 master
$ git merge bugfix # 合并修复的 bug
$ git branch -d bugfix # 删除 bug 修复分支
$ git checkout A # 回到 A 分支
$ git rebase master # 将 A 分支指向 master 分支的末端
变更 message
$ git commit —amend # 变更最近一次的 commit message 信息。
$ git rebase -i super_commit_id # 变更指定的 commit, super_commit_id(父亲 commit),
变基操作团队开发时要注意,变更后 commit_id 会依次更改。
整理 commit
$ git rebase -i super_commit_id # squash 命令 合并分支。(合并连续的commit)
$ git rebase -i super_commit_id # s 命令拼接commit (修改 pick 顺序,将待合并的放到一起)
# pick commit_1
# s commit_2
比较文件差异
$ git diff e1506a e1506a # 比较两个分支间的不同。
$ git diff HEAD HEAD^1 # 比较 HEAD 与 HEAD 的父亲。
$ git add files
$ git diff --cached # 比较暂存区与 HEAD 文件之间的差异。
$ git diff # 比较工作区与暂存区之间的差异。
$ git diff branch_a branch_a files # 比较不同分支下的相同文件之间的差异。
暂存区操作 ( reset )
$ git reset HEAD # 取消暂存区所有文件 >> 保留工作区->取消暂存区。
$ git reset HEAD -- files # 取消暂存区制定文件 >> 保留工作区->取消暂存区。
$ git reset --hard commit_id # 删除指定的提交 commit
文件操作
$ git rm files # 删除指定文件 = rm files + git rm files。
$ git mv file newfile # 重命名 git 暂存区与 git 仓库中的文件信息。
图形化界面
$ gitk # 通过图形化界面查看 git
当前正工作在没有分支的情况下。
(当你切换到 master 分支上处理事情的时候,在没有分支的状态下编写的变更,分离头指针上面的变更可能会被清除掉。)
$git log
commit e1506a04abbee1b5545bedcdca8b40f7d628d545 (HEAD -> master) # 指向 master 的分支。
xx@xx-Pro .git % ls
COMMIT_EDITMSG config gitk.cache index logs refs
HEAD description hooks info objects
xx@xx-Pro .git % ls -al
total 48
drwxr-xr-x 13 xx staff 416 1 4 11:04 .
drwxr-xr-x@ 7 xx staff 224 1 4 10:40 ..
-rw-r--r-- 1 xx staff 5 1 4 10:40 COMMIT_EDITMSG
-rw-r--r-- 1 xx staff 23 1 4 09:56 HEAD // 本地目录的引用。
-rw-r--r-- 1 xx staff 137 1 4 09:56 config // 本地配置信息
-rw-r--r-- 1 xx staff 73 1 4 09:56 description
-rw-r--r-- 1 xx staff 129 1 4 11:04 gitk.cache
drwxr-xr-x 14 xx staff 448 1 4 09:56 hooks
-rw-r--r-- 1 xx staff 270 1 4 10:40 index
drwxr-xr-x 3 xx staff 96 1 4 09:56 info
drwxr-xr-x 4 xx staff 128 1 4 09:57 logs
drwxr-xr-x 11 xx staff 352 1 4 10:40 objects // 核心 commit,tree,blob
drwxr-xr-x 4 xx staff 128 1 4 09:56 refs // 分支,tag 信息
git 对象 commit,tree,blob,三者之间的关系:
1、git add files
% find objects -type f
objects/4b/5fa63702dd96796042e92787f464e28f09f17d
% git cat-file -t 4b5fa63702
blob
目标文件中创建了blob,blob 的信息为:hello, world
2、git commit
% find .git/objects -type f
.git/objects/3c/4fde2ab9b012a02b1d2c67bb66c0b7339e1fbc (tree / doc)
.git/objects/4b/5fa63702dd96796042e92787f464e28f09f17d (blob / data)
.git/objects/96/4acce37de78ac2e818af6ee7b46a85ba65883b (commit / 提交请求)
.git/objects/46/fa040ce9c80920d335d5b0c654f33e6ee3431b (tree / README.md)
% git cat-file -t 3c4fde2a % tree
% git cat-file -p 3c4fde2a % 040000 tree 46fa040ce9c80920d335d5b0c654f33e6ee3431b doc
% git cat-file -t 4b5fa637 % blob
% git cat-file -p 4b5fa637 % hello, world
% git cat-file -t 964acce3 % commit
% git cat-file -p 964acce3 % tree 3c4fde2ab9b012a02b1d2c67bb66c0b7339e1fbc
author kong <kong@k.com> 1578211573 +0800
committer kong <kong@k.com> 1578211573 +0800
CREATE FILE
% git cat-file -t 46fa040c % tree
% git cat-file -p 46fa040c % 100644 blob 4b5fa63702dd96796042e92787f464e28f09f17d README.md
Reference From:
https://git-scm.com/docs
https://github.com/geeeeeeeeek/git-recipes/wiki
标签:script rename 清除 ash 界面 cache 作者 回滚 directory
原文地址:https://www.cnblogs.com/corc/p/12182075.html