初始化
使用git init,会生成隐藏文件目录.git,后续git所有操作都在这个目录里
[~/toolGit]$ git init
[~/toolGit]$ ls -a
.git
添加文件
使用git add,文件会由Untracked files变为Changes to be committed
[~/toolGit]$ ls
sugar.txt
[~/toolGit]$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# sugar.txt
nothing added to commit but untracked files present (use "git add" to track)
[~/toolGit]$ git add sugar.txt
[~/toolGit]$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: sugar.txt
#
[~/toolGit]$
一些额外的背景知识:
git 中有三种工作区和与之对应的三种状态
- 工作目录(Working Directory):进行代码修改的地方
- 暂存区域(Staging Area):修改文件后,需要将修改添加到暂存区
- Git 仓库目录(.git directory:真正存储和管理代码库的目录。提交修改到代码库本质上就是将暂存区的修改提交到代码库中
sequenceDiagram participant w as Working Directory participant s as Staging Area participant g as .git directory(Repo) g ->> w: checkout w ->> s: add s ->> g: commit Note over w: modified Note over s: staged Note over g: commited
git status命令,可以用于查看文件当前处于哪种状态
提交
提交修改到库上,使用git commit
[~/toolGit]$ git commit -m "love sugar"
[master (root-commit) 806387f] love sugar
1 file changed, 1 insertion(+)
create mode 100644 sugar.txt
[~/toolGit]$
[~/toolGit]$ git status
# On branch master
nothing to commit, working directory clean
[~/toolGit]$
如果刚commit完,发现文件要重新修改,或者漏提交了文件,可以使用
git commit --amend --no-edit
如果不想要某次提交,可以使用
git reset,比如,不需要806387f这次提交,使用git reset 806387f[~/toolGit]$ git log --oneline --decorate 3237364 (HEAD, master) add sugar 806387f love sugar [~/toolGit]$ [~/toolGit]$ git reset 806387f Unstaged changes after reset: M sugar.txt [~/toolGit]$ [~/toolGit]$ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: sugar.txt # no changes added to commit (use "git add" and/or "git commit -a") [~/toolGit]$如果想直接丢弃某次修改,使用
git reset --hard 806387f
推库
一般会使用Gerrit进行codeReview,使用下面的命令:
git push origin HEAD:refs/for/master
如果要放到Gerrit草稿箱,使用下面命令,它不会触发流水线,是一个单独的空间:
git push origin HEAD:refs/drafts/master
查看历史记录
使用git log查看文件提交信息
[~/toolGit]$ git log
commit 806387f569a04bb3e7b862ba2dcaa49b940db9e4
Author: xxx <xxx@xxx.com.cn>
Date: Mon May 20 18:52:51 2024 +0800
love sugar
[~/toolGit]$
如果有多次修改,可以使用 git log --oneline --decorate查看简略信息
[~/toolGit]$
[~/toolGit]$ git log --oneline --decorate
3237364 (HEAD, master) add sugar
806387f love sugar
[~/toolGit]$
分支操作
查看所有分支
git branch -a
查看当前分支
git branch -v
如果在当前分支上,进行了代码修改,但这时由于紧迫的事,需要切换到另外一个分支进行代码修改,可以使用
git stash先暂存当前分支修改过的代码,然后切换到另外分支。在另外分支上完成修改后,切回原分支,使用git stash pop,即可弹出最初的修改。