特别感谢
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 mastergit 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
