git-持续更新

发布时间 2024-01-09 14:14:18作者: _续昼

 

Git 本地数据管理,大概可以分为三个区:

  • 工作区(Working Directory):是可以直接编辑的地方。
  • 暂存区(Stage/Index):数据暂时存放的区域。
  • 版本库(commit History):存放已经提交的数据。

 (从别人那粘贴过来的图)

一、start a working area(启动工作区)

1、git clone

/* 将远程仓库复制到本地 */
git clone https://github.com/tianqixin/runoob-git-test

2、git init

/* 初始化这个目录为git仓库,将这个目录变成git可以管理的目录 */
git init

 

二、work on the current change(处理当前更改)

1、git add

/* 将当前目录中的所有新文件添加到本地暂存区 */
git add .
/* 将被修改和被删除的文件提交到暂存区,不包括新文件 */
git add -u
/* 提交所有变化 */
git add -A

2、git mv

/* git mv 可以用来改名或移动文件 */
/* 将文件移动到文件夹 */
git mv text.txt mydir

 3、git restore

/* 从暂存区撤销一个文件,暂存区中就没有myfile文件了 */
git add myfile
git restore --staged myfile

/* 从暂存区撤销对一个文件的修改 ,暂存区中myfile文件恢复到上一次add前的状态*/
git add myfile
git restore myfile

4、git rm

/* 删除未修改的工作区和暂存区文件 */
git rm myfile
/* 强制删除已修改的工作区和暂存区文件 */
git rm -f myfile
/* 删除暂存区文件,保留工作区文件 */
git rm --cached myfile

三、examine the history and state(检查历史记录和状态)

1、git bisect(使用二分搜索算法来查找提交历史中的哪一次提交引入了错误)

1、git bisect start [最近的出错的commitid] [较远的正确的commitid]
2、测试相应的功能
3、git bisect good 标记正确
4、直到出现问题则 标记错误 git bisect bad
5、提示的commitid就是导致问题的那次提交

2、git diff(比较文件之间的差异)

/* 比较工作区和暂存区的两个file之间的差异 */
git diff myfile
/* 显示暂存区中两次提交之间的差异 */
git diff [first-branch] [second-branch]
/* 显示工作区与暂存区某个版本之间的差异 */
git diff [branch]
/* 显示暂存区当前版本与某个版本之间的差异 */
git diff --cached [branch]
/* 导出上一次提交和这一次提交差异的补丁 */
git diff HEAD~ HEAD > patch
/* 导出工作区与暂存区差异的补丁 */
git diff > patch
/* 校验补丁是否可以使用 */
git apply --check patch
/* 打补丁 */
git apply patch

3、git grep(多文件查找)

/* 查找仓库中包含字符串“aws”的内容 */
git grep -n "aws"

4、git log(列出历世提交记录)

5、git show(显示一个或多个对象)

git log
/* 显示提交详情 */
git show [commitID]

6.、git status(查看文件状态)

/* 查看文件状态 -s 精简输出 */
git status -s

第一列字符表示版本库与暂存区之间的比较状态。
第二列字符表示暂存区与工作区之间的比较状态。

' ' (空格)表示文件未发生更改
M 表示文件发生改动。
A 表示新增文件。
D 表示删除文件。
R 表示重命名。
C 表示复制。
U 表示更新但未合并。
? 表示未跟踪文件。
! 表示忽略文件。

未跟踪和忽略文件会显示相同的两列,如 ??。

四、grow, mark and tweak your common history(创建、标志、调整您的共同历史分支)

1、git branch(创建分支、删除分支、查看本地分支、查看远程分支)

/* 查看本地分支 */
git branch
/* 查看本地分支+上次提交的信息+本地和远程分支的关系+远程分支 */
git branch -a -vv
/* 只查看远程分支 */
git branch -r
/* 删除本地分支 */
git branch -d [branchName]
/* 创建本地分支 */
git branch [branchName]

2、git commit(将暂存区中内容添加到本地仓库中)

/* 提交暂存区的指定文件到仓库区 */
git commit [file1] [file2] -m [message]
/* 将git add 命令添加到git commit命令中,直接从工作区将代码提交到仓库中*/
git commit -a
git commit -am [message]

3、git merge(将branch出的子分支合并到父分支上)

/* 切换到父分支 */
git checkout [branchFather]
/* 合并分支 */
git merge [branchSon]
/* 删除子分支 */
git branch -d [branchSon]

4、git rebase(变基分支合并)

/* feature分支是从master上拉出来的,
*  现在feature把master上的新改动的版本作为base*/
git checkout feature
git rebase master

5、git reset(回退版本)

/* 三个区整体回退版本到a2fb17版本 */
git reset --hard a2fb17
/* HEAD代表当前版本HEAD^1和HEAD~1代表上一个版本*/
git reset --hard HEAD^1
git reset --hard HEAD~1

6、git switch(创建和切换分支)

/* 创建分支 */
git switch [name]
/* 根据一个人commit创建一个分支 */
git switch [name] [commit]
/* 根据一个tag创建一个分支 */
git switch [name] [tag]
/* 在本地创建一个与远程关联的同名分支 (拉取远程分支并且关联)*/
git switch [name]
/* 切换分支 */
git switch [name]
/* 切换到上一个分支 */
git switch -

7、git tag(标签,是一个指向某个commit的指针)

1、基于本地分支的commit,可以执行 git tag <tagName> 创建本地tag
2、再执行 git push origin <tagName> 推送到远程仓库
3、若存在多个未推送的本地标签,可以执行 git push origin --tags 一次性推送所有标签
/* 查看本地所有tag */
git tag 
git tag -l
/* 查看远程所有tag */
git ls-remote --tags origin
/* 查看tag内容 */
git show [tagName]
/* 删除本地tag */
git tag -d [tagName]
/* 删除远程tag */
git push origin :refs/tags/<tagName>
/* 检出指定tar对应的分支 */
git checkout -b <branchName> <tagName>

五、collaborate (协作相关)

1、git fetch(从另一个存储库下载对象和引用,从版本库中拉取分支到暂存区)

/* 取回远程主机origin 下的master分支 */
git fetch origin master
/* 合并到当前分支 */
git merge FETCH_HEAD

2、git pull (从远程版本库拉取分支到工作区)

/* 拉取远程分支与本地分支合并 */
git pull <远程主机名> <远程分支名>:<本地分支名>
/* 若合并分支是当前分支则可以省略分号 */
git pull <远程主机名> <远程分支名>

3、git push(将本地分支推送到远程分支)

/* 推送本地分支 */
git push <远程主机名> <本地分支名>:<远程分支名>
/* 若远程、本地分支名相同可省略冒号 */
git push <远程主机名> <本地分支名>
/* 强制推送 */
git push --force <远程主机名> <本地分支名>
/* 删除远程分支 */
git push --delete <远程主机名> <本地分支名>