Title: "[[Git-For-Beginners]]"
status: DONE
tags:
- Git
- NOTE
Author:
- AllenYGY
created: 2024-02-22T11:12
updated: 2024-04-08T20:19
gitignore
git --version
git config --global user.name "xxxx"
git config --global user.email "xxxx"
git config --list
git init
git status
# 更精简的输出
git status -s # git status --short
添加到 暂存区 Staging Area
gi[](Git-Introduction.md)# --all的缩写
git add *.txt
git add .
只提交暂存区Staging Area的内容,不会提交工作区Workspace的内容
To see you commit log in the repository
git log
git log --oneline #查看简洁的提交记录
git diff
git diff #比较工作区+暂存区与本地仓库
# 比对已暂存文件与最后一次提交的文件差异
git diff --staged
# 查看已经暂存起来的变化
git diff --cached
git diff <VersionID1> <VersionID2>
git diff HEAD~ HEAD #最新版本与前一个版本比较
git diff HEAD^ HEAD
git diff HEAD~n HEAD #最新版本与前n个版本比较
git diff <branch_name> <branch_name>
git reset --soft [VersionID]
git reset --hard [VersionID]
git reset --mixed[VersionID]
rm files;
git add file;
git rm <file>
git rm --cashed<file>
git rm -r --cached .
git rm -r *
# 文件重命名
git mv xxx.txt yyy.txt
.gitignore匹配规则
#忽略所有的 .a 文件
*.a
#但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
#只忽略当前目录下的TODO文件,而不忽略 subdir/TODO
/TODO
#忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/sercer/arch.txt
doc/* txt
#忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
git rm -r --cached example_folder/
git commit -m "Remove example_folder from tracking"
git branch xxxxxx(branch name)
git branch
git checkout xxxxx(branch name)
git switch xxxxx(branch name)
git checkout -b xxxxx(branch name)
先切进一个分支,然后合并另一个分支
git checkout branch1
git merge branch2
git branch -d dev #删除已经合并过的分支
git branch -D dev #强制删除未合并的分支
将当前分支变基到另一个分支
git rebase branchname
Merge | Rebase | |
---|---|---|
Disadvantage | 产生额外的提交节点分支图复杂 | 会改变提交历史,改变了当前分支branch out的节点,避免在共享分支使用 |
Advantage | 不会破坏元分支的提交历史方便回溯和查看 | 不会新增额外的提交记录,形成线性历史,比较直观和干净 |
git command -help - See all the available options for the specific command
git help --all - See all possible commands