git使用指南

142 阅读1分钟

初始化

使用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,即可弹出最初的修改。