特别感谢
1. Git 安装和 SSH 配置
整理了一下写在:git 和 tortoisegit 的配置
2. 理解 repository
图源:工作区和暂存区
3. 常用命令
-
git init
作用: 创建 repository。
描述: 创建本地仓库,该目录下自动创建.git
文件夹,用于跟踪管理仓库,默认隐藏,使用ls -ah
可以查看隐藏文件。 -
git add <file-name>
作用: 将修改添加到暂存区(stage)。
描述: 工作区的每次修改都先添加到暂存区。
常用:git add .
(将当前分支下的所有修改添加到暂存区) -
git commit
作用: 将暂存区的所有修改提交到分支。
描述: 可以将多次修改一并提交,提交后工作区是 clean 状态,相当于提交一个版本。建议加上描述性文字,用来标识此次提交的版本。每次提交之后,会自动生成一个 commit 号,用来标识此次提交。
常用:git commit -m "some description"
-
git status
作用: 查看该仓库的状态。
描述: 可以得到当前处于哪一个分支、哪个文件被修改、修改处于哪个阶段等信息,还会给出一些建议性的命令。
当文件已修改但未添加到暂存区,信息是 “Changes not staged for commit” ;
当文件已添加到暂存区但未提交,信息是 “Changes to be committed”;
当合并分支时出现冲突,可以查看各分支的提交进度情况。 -
git diff
作用: 查看修改内容。
常用:git diff <file-name>
-
git log
作用: 查看提交的所有版本。
描述: 从最新一次提交的版本开始显示,显示的内容包括每次提交的 commit 号、描述性文字、时间等。可以添加一些参数使得显示的内容更精简。还可以查看分支的合并情况。
常用:git log --pretty=oneline
(查看所有提交的精简版本)git log --graph
(查看分支合并图) -
git reset
作用: 退回到某一版本。
描述: 当前版本用HEAD
表示。上一个版本是HEAD^
,上上个版本是HEAD^^
,上100个版本是HEAD~100
。
还可以通过 commit 号,退回到某一个指定版本。
常用:git reset --hard HEAD
(对于已添加到暂存区但未提交的文件,撤销暂存区的修改,即撤销git add
这句命令,将修改重新放回工作区)git reset --hard HEAD^
(返回上一个版本)git reset --hard <commit_id>
(commit号不需要写全,只需前几位即可,Git 会自动去找相应的版本) -
git relog
作用: 查看所有分支的所有操作记录。
描述: 用于记录每一次命令,可以追溯已删除的版本。 -
git checkout
作用: 1. 丢弃工作区的修改(撤销)。 2. 切换到某一分支。
描述: 在 撤销 操作中,修改也包括删除操作,所以也可以撤销误删操作(前提是误删的文件被提交过版本库)。实际上该命令是用已提交到版本库里的 file 替换工作区的 file,所以如果该 file 从未被提交到版本库,是无法撤销的。
常用:git checkout -- <filename>
(文件已修改但未添加到暂存区,该命令丢弃掉工作区的修改。“–” 这个参数很重要。)git checkout <branch_name>
(切换到某一分支)git checkout -b <branch_bame>
(创建新分支并切换)git checkout -b <branch-name> origin/branch-name
(在本地创建和远程分支对应的分支) -
git rm
作用: 删除某一文件。
描述: 删除操作之后,也需要 commit。 -
git remote
作用: 关联远程库。
描述: 命名远程库,默认是 origin。
常用:git remote add origin <url>
(连接到远程库)git remote -v
(查看远程库信息) -
git pull
作用: 从远程库中抓取最新提交。
描述: 在git push
时可能会失败,因为其他人也对同样的文件进行了修改并已推送了提交。所以需要抓取最新提交到本地,解决冲突之后再推送。有时候直接git pull
失败,原因是需要指定本地 dev 与远程 origin/dev 分支的连接(详见git branch
)。 -
git push
作用: 把本地库的所有内容推送到远程库。
描述: 可以添加一些参数,如-u
,第一次将本地 master 分支推送到远程库中新的 master 分支,该参数将本地 master 分支与远程库中 master 分支关联起来,相当于默认执行一次git remote
。
常用:git push -u origin master
git push origin <tag_name>
(推送一个本地标签)git push origin --tags
(推送全部未推送过的本地标签)git push origin :refs/tags/<tag_name>
(删除一个远程标签) -
git clone
作用: 克隆远程库到本地。
描述: 可以使用 HTTP 或 SSH。
常用:git clone <url>
-
git branch
作用: 查看当前分支。
描述: 列出所有分支,当前分支前面标 “*” 号。一般来说,master 分支用来发布新版本(稳定),dev 分支用来开发(不稳定),个人在 dev 上创建自己的分支进行工作。修复 bug 时会创建一个 bug 分支,添加新功能时,会创建一个 feature 分支,诸如此类。
常用:git branch
(列出所有分支)git branch -d <branch_name>
(删除指定分支)git branch --set-upstream-to=origin/<branch_name> <branch_name>
(指定本地 dev 与远程 origin/dev 分支的连接,一般 <branch_name> 是 dev) -
git merge
作用: 合并指定分支到当前分支。
描述: 合并指的是,将当前分支上已提交的修改合并到某一分支(如 master),使得 master 做出相同的修改。首先需要切换到被合并的分支,默认使用 fast-forward (ff) 模式合并,该模式合并速度很快,但有冲突时不能用该模式。
常用:git merge <branch_name>
(默认快速模式合并)git merge --no-ff -m "some commit descript" <branch_name>
(普通模式合并,此次合并创建一个新的 commit) -
git switch
作用: 切换分支。
描述: 可以创建分支、切换分支等。
常用:git switch -c <branch_name>
(创建并切换分支)git switch <branch_name>
(切换到已有分支) -
git stash
作用: 储藏工作现场。
描述: 一般用于修复 bug 时,当前工作还未完成,但要优先创建 bug 分支。使用该命令后,工作区清空,返回 master 创建相应 bug 分支进行修复,修复完成后再恢复之前的工作分支。
常用:git stash
(储藏工作现场)git stash list
(查看 stash 内容)git stash apply <stash_name>
(恢复工作现场,恢复后 stash 内容不删除)git stash drop <stash_name>
(删除 stash 内容)git stash pop
(恢复工作现场,同时删除 stash) -
git cherry-pick
作用: 复制一个特定的提交到当前分支。
描述: 将某一个已提交的修改复制到当前分支,避免重复操作。
常用:git cherry-pick <commit_id>
-
git tag
作用: 为某次提交设置对应的标签。
描述:
常用:git tag <tag_name>
(为当前最新版本打标签)git tag
(查看所有标签)git tag <tag_name> <commit_id>
(为指定 commit 创建标签)git tag -a <tag_name> -m "some commit descript" <commit_id>
(为指定 commit 创建带有说明的标签)git tag -d <tag_name>
(删除一个本地标签) -
git show
作用: 查看。
描述: 可用于查看标签信息。
常用:git show <tag_name>
-
git add
作用:
描述:
常用: -
cat <filename>
作用: 查看文件内容。
来源:CSDN
作者:某柚啊
链接:https://blog.csdn.net/sinat_35026778/article/details/103777928