- git init 初始化一个git仓库,后面可以加仓库名,在当前目录下创建指定名称的目录并在该目录下创建仓库,若不加则直接在当前目录下创建仓库。
- git仓库的三个区域:工作区(当前目录)、暂存区(.git/index)、本地仓库(.git/objets),文件的四种状态:未跟踪(Untrack,新建的文件从未使用git add添加到仓库)、未修改(Unmodified,自上次git commit提交之后就没有变动过)、已修改(Modified,修改了但是没git add添加到暂存区)、已暂存(Staged,已经使用git add添加到暂存区,但是还没有git commit提交),git commit只会将已经添加到暂存区的文件提交。可以使用git commit -am “”一次性完成添加和提交两个动作:
- git status命令可以查看当前仓库状态,git log命令查看以往所有提交信息,可以加上--oneline选项只查看简略信息。
- git reset 版本ID 命令可以回退到相应版本,git reset HEAD^命令表示回退到上一个提交的版本(HEAD^表示上一次提交),默认使用的是--mixed,即保留工作区但是不保留暂存区,其他选项还有--soft,表示工作区和暂存区都保留,--hard表示工作区和暂存区都不保留。
- git ls-files 命令可以显示版本控制中的文件,不包括未被跟踪的文件、被忽略的文件或已删除的文件。这些文件是已经被git跟踪并且在当前分支中的文件,这些文件已经被 git add 命令添加到暂存区但尚未提交。
- git reflog命令用于查看git仓库的引用日志(reference log),它记录了每个引用(如 HEAD、分支、远程引用等)的历史变更,通过 git reflog,可以追踪所有提交、重置、变基等操作的历史,甚至在分支或提交被删除后仍然可以找到相应的提交哈希值。
- git diff命令可以用来查看工作区与暂存区之间的差异(即那些没有使用git add添加到暂存区的文件内容);git diff HEAD命令可以用来查看工作区和本地版本仓库之间的差异;git diff --cached命令可以用来查看暂存区和本地版本仓库之间的差异(即那些已经使用git add添加到暂存区但是没有使用git commit提交到本地仓库的文件内容);git diff 版本号1 版本号2 命令可以用来查看指定版本之间的差异,版本号可以用HEAD来代替:HEAD可以用来表示当前版本,HEAD^(或HEAD~)可以用来表示上一个版本,HEAD~n(n为特定的数字)可以用来表示上n个版本;git diff还可以用来查看指定文件在两个版本之间的差异,如:git diff HEAD~3 HEAD filename。
- 删除文件:可以使用linux命令rm删除文件后再用git add在暂存区中删除相应的文件,也可以使用git rm 文件名 直接将暂存区和本地工作目录中的文件删除(这种方法不需要使用git add)。上述两种方法最后都要使用git commit 提交。
- .gitignore文件用于告诉git在版本控制中忽略特定的文件或目录。通过定义忽略规则,可以避免将不需要或不希望版本控制的文件(如临时文件、编译输出、日志文件等)包含在git仓库中。git版本控制默认不会将空文件夹加入版本控制之中,.gitignore文件的匹配规则是从上到下逐行匹配,每一行表示一个忽略模式。在添加忽略规则之前就已经加入暂存区的想要被忽略的文件仍然会被git版本控制。
- git remote add命令用于将远程仓库添加到本地仓库,使本地仓库能够与远程仓库进行交互。语法为 git remote add <name> <url>,其中<name>通常为origin,<url>是远程仓库的地址。例如,git remote add origin https://github.com/user/repo.git 会将名为origin的远程仓库添加到本地仓库,git remote -v 用于显示所有配置的远程仓库及其对应的URL,包括 fetch 和 push 操作的地址;git pull用于从远程仓库获取最新的更改并合并到当前分支,语法为git pull <远程仓库> <远程分支>,默认拉取到本地当前分支,如果之前用git push--set-upstream(或-u) <远程仓库> <本地分支>:<远程分支>将当前分支与远程分支绑定了,可以直接使用git pull拉取。可以使用git pull <远程仓库> <远程分支>:<本地分支>拉取到指定的本地分支,使用git branch -vv命令,可以查看本地分支跟远程分支是否存在绑定关系;git push 用于将本地的提交推送到远程仓库,以便其他开发者可以访问本地的更改,语法为git push <远程仓库名> <本地分支名>:<远程分支名>,如果本地分支名与远程分支名相同,则可以省略冒号为git push <远程仓库> <本地分支>,如果之前用git push --set-upstream <远程仓库> <本地分支>:<远程分支>将当前分支与远程分支绑定了,可以直接使用git push推送。
- git branch命令可以查看当前所在分支,git branch 分支名 命令可以用来创建一个新的分支。git checkout 分支名 和 git switch 分支名 命令可以切换到相应的分支,git checkout -b 分支名 命令会创建一个分支并切换到该分支上(若该分支已经存在则会报错)。git branch -d 分支名 命令可以用来删除已经被合并的分支,若没有被合并则不能删除,可以使用-D来强制删除。git merge 分支名 命令可以将指定分支合并到当前分支中(合并前需要先切换到目标合并分支,合并时git会自动产生一次commit)。合并时如果两个相同文件修改的部分没有冲突可以自动合并,若有冲突可以手动合并之后再commit,也可以使用git merge --abort中断此次合并。
- git rebase命令用于将一个分支的变更应用到另一个分支上,通常用于将本地分支更新到最新的主分支状态。基本用法是 git rebase <base-branch>,其中 <base-branch> 是希望将当前分支变更应用到的目标分支。执行命令后,git会逐个应用当前分支的提交到 <base-branch> 的最新提交上。如果过程中出现冲突,git 会暂停并提示解决冲突,解决后使用git add标记文件为已解决,并运行git rebase --continue继续操作。如果决定中止rebase,可以使用git rebase --abort恢复到rebase开始前的状态。
- git stash是Git中用于临时保存当前工作区修改的命令,帮助开发者在不提交更改的情况下切换分支或执行其他任务。使用git stash后,未提交的修改和暂存区内容会被保存,工作区恢复为干净状态。之后可通过git stash apply或git stash pop恢复这些修改。git stash list可查看保存的所有stash,git stash drop用于删除指定的stash,而git stash clear清除所有stash。使用-u参数可将未跟踪的文件也一起保存,-a参数则包括忽略的文件。