查看“Git:基本操作”的源代码
←
Git:基本操作
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:Git]] == 常用操作 == [[File:Git基本操作.jpg|center|800px]] == 仓库 == {| class="wikitable" |- ! 命令 !! 说明 !! 备注 |- | '''<code>git init</code>''' | 初始化Git仓库 | # <code>git init</code>:在当前目录初始化Git仓库 # <code>git init <newrepo></code>:在指定目录(<code><newrepo></code>)初始化Git仓库 # |- | '''<code>git clone</code>''' | 克隆Git仓库 | # <code>git clone <repo></code>:克隆仓库(<code><repo></code>)到当前目录 # <code>git clone -o<远程主机名> <repo></code>:克隆仓库(<code><repo></code>)当前目录,并为远程主机设置主机名 # <code>git clone <repo> <directory></code>:克隆仓库(<code><repo></code>)到指定目录(<code><directory></code>) # |} * <code>git clone</code>可以所用不同的协议,包括<code>ssh</code>,<code>git</code>,<code>https</code>等: *# <code>git clone git@github.com:fsliurujie/test.git</code>:SSH协议 *# <code>git clone git://github.com/fsliurujie/test.git</code>:GIT协议 *# <code>git clone https://github.com/fsliurujie/test.git</code>:HTTPS协议 *: (常用ssh,因为速度较快,还可以配置公钥免输入密码) == 修改 == {| class="wikitable" |- ! style="width:10%"|命令 !! 说明 !! 备注 |- | '''<code>git add</code>''' | 将工作区新增或修改的文件添加到暂存区 | # <code>git add [file1] [file2]</code>:添加一个或多个文件到暂存区; # <code>git add [dir]</code>:添加指定目录到暂存区(包括子目录); # <code>git add .</code>:添加当前目录下的所有文件到暂存区; # <code>git add -f [file]</code>:强制添加存在于<code>.gitignore</code>的文件; |- | '''<code>git commit</code>''' | 提交暂存区到本地仓库 | # '''<code>git commit -m [message]</code>''':提交暂存区到本地仓库; # '''<code>git commit [file1] [file2] -m [message]</code>''':提交暂存区的指定文件; # '''<code>git commit ([file1] [file2]) -am [message]</code>''':直接提交(跳过<code>git add</code>); |- | '''<code>git status</code>''' | 查看仓库当前的状态,显示有变更的文件 | <syntaxhighlight lang="PowerShell"> Microsoft Windows [版本 10.0.19041.508] (c) 2019 Microsoft Corporation。保留所有权利。 D:\git\eijux>git status On branch master Your branch is up to date with 'eijux/master'. Changed not staged for commit: (use "git add <file>..." to include in what will be committed) (use "git restore --staged <file>..." to unstage) new file: 1.txt Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: 2.txt Untracked files: (use "git add <file>..." to include in what will be committed) 3.txt </syntaxhighlight> # Changed not staged for commit:修改文件,未add # Changes to be committed:修改并add,未commit # Untracked files:新增文件,从未add |- | '''<code>git diff</code>''' | 比较文件的不同,即暂存区和工作区的差异 | # '''<code>git diff ([file])</code>''':查看暂存区和工作区的改动; # '''<code>git diff --cached ([file])</code>''':(或<code>git diff --staged ([file])</code>)暂存区和上一个commit的差异; # '''<code>git diff HEAD ([file])</code>''':查看工作区与当前分支最新commit之间的差异; # '''<code>git diff [branchName] [file]</code>''':当前分支的文件与[branchName]分支的文件进行比较; # '''<code>git diff [commitId] [file]</code>''':当前分支的文件与[commitId]提交的文件进行比较; # '''<code>git diff --stat</code>''':显示摘要而非整个diff; # '''<code>git diff [first-branch]...[second-branch]</code>''':查看两次提交之间的差异; |- | '''<code>git stash</code>''' | 保存工作现场 | # '''<code>git stash list</code>''':查看所有保存的工作现场; # '''<code>git stash apply <stash></code>''':恢复stash(但不删除); # '''<code>git stash drop <stash></code>''':删除stash; # '''<code>git stash pop <stash></code>''':恢复并删除stash; # <stash>形如“stash@{0}”,可在list中看到: #* e.g. <code>git stash pop stash@{0}</code> |- | '''<code>git reset</code>''' | 回退版本 | '''<code>git reset [--soft | --mixed | --hard] [HEAD]</code>'''<br/> 关于参数: # '''<code>--soft</code>''':将<code>HEAD</code>指向指定<code>commit</code>(这使得所有更改的文件都“等待提交”); # '''<code>--mixed</code>''':(默认)重置索引,但不重置工作树(保留更改的文件,标记为:未提交?未add?); # '''<code>--hard</code>''':重置索引和工作树(自<commit>以来对工作树中跟踪文件的任何更改都将被丢弃); # '''<code>--merge</code>''':重置索引,并 ## 在工作树中更新‘<commit>与HEAD不同’的文件, ## 在工作树中保留‘索引与工作树不同’的文件(即,未add的更改)。 ## 如果‘<commit>和索引不同’的文件具有未暂存的更改,则会中止重置。 # '''<code>--keep</code>''':重置索引,并 ## 在工作树中更新‘<commit>与HEAD不同’的文件。 ## 如果‘<commit>与HEAD不同’的文件具有本地修改,则会中止重置。 : <span style="color:GoldenRod; font-weight:bold;">参考[https://git-scm.com/docs/git-reset Documentation:Reset]的DISCUSSION一节</span> 关于[HEAD]: # 当前版本:'''<code>HEAD</code>'''或'''<code>HEAD~0</code>''' # 上一个版本:'''<code>HEAD^</code>'''或'''<code>HEAD~1</code>''' # 上上一个版本:'''<code>HEAD^^</code>'''或'''<code>HEAD^2</code>''' # 上上上一个版本:'''<code>HEAD^^^</code>'''或'''<code>HEAD^3</code>''' #: ''以此类推'' 版本回退: # '''<code>git reset --hard HEAD^</code>''':回退到上一次commit; # '''<code>git reset --hard <commitID></code>''':回退到指定commit之前; |- | '''<code>git revert</code>''' | 撤销操作 | # '''revert是将需要的版本内容反向修改回去,并提交一个新版本;''' # '''<code>git revert HEAD</code>''':撤销前一次 commit; # '''<code>git revert HEAD^</code>''':撤销前前一次 commit; # '''<code>git revert <commitID></code>''':撤销指定的版本; |- | '''<code>git restore</code>''' | 文件恢复<br/> ('''''Git 2.23引入''''') | Note1: '''<code>git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec></code>''' # '''<code>[--source=<tree>]</code>''':指定还原源: ## 默认(不设置)从索引恢复内容; ## 若指定<code>--staged</code>,则从<code>HEAD</code>恢复内容; # <code>[--staged] [--worktree]</code>:指定恢复目标: ## 默认(不设置)恢复到工作树的内容; ## <code>--staged</code>:用于恢复索引的内容; ## <code>--staged --worktree</code>:用于同时恢复索引和工作区的内容; * 注意:使用“还原源”中的某些内容还原“工作树指定路径”:如果“工作树被跟踪路径”不存在与还原源中,则将删除该路径以匹配源; Note2: # '''<code>git restore --staged <file></code>''':从<code>HEAD</code>恢复<file>到索引, #: 等效于'''<code>git reset <file></code>'''; # '''<code>git restore --source=HEAD --staged --worktree <file></code>''':从<code>HEAD</code>恢复<file>到索引和工作树, #: 等效于'''<code>git checkout -- <file></code>'''; |- | '''<code>git mv</code>''' | 移动或重命名工作区文件 | # '''<code>git mv -f [file] [newfile]</code>''':强制执行; |- | '''<code>git rm</code>''' | 删除工作区文件 | # '''<code>git rm <file></code>''':将文件从暂存区和工作区中删除; # '''<code>git rm --cached <file></code>''':将文件从暂存删除,工作区保留(即停止追踪指定文件,通常是在文件曾经被git管理过,现在不需要被git接管的时候使用); # '''<code>git rm -r *</code>''':递归删除; # '''<code>git rm -f <file></code>''':强制删除; |} === 关于撤销工作区修改 === # 若工作区修改未add到stage: #: '''<code>git checkout -- <file></code>''' # 若工作区修改已add,但未commit: ## '''<code>git reset HEAD <file></code>'''(1、从版本库commit中恢复到stage) ## '''<code>git checkout -- <file></code>'''(2、撤销工作区修改) == 分支== {| class="wikitable" |- ! style="width:10%"|命令 !! 说明 !! 备注 |- | '''<code>git branch</code>''' | 分支命令 | # '''<code>git branch</code>''':查看所有本地分支 # '''<code>git branch -r</code>''':查看所有远程分支 # '''<code>git branch -a</code>''':查看本地和远程的所有分支 # '''<code>git branch <branchname></code>''':创建<branchname>分支 # '''<code>git branch -d <branchname></code>''':删除<branchname>分支 # '''<code>git branch -D <branchname></code>''':强制删除一个未被合并过的分支<branchname> # '''<code>git branch --set-upstream <本地分支名> <远程主机名>/<远程分支名></code>''':手动在本地分支与远程分支间建立追踪关系; |- | '''<code>git checkout</code>''' | 签出分支(或文件) | 分支: # '''<code>git checkout <branchname></code>''':切换到<branchname>分支 # '''<code>git checkout -b <branchname></code>''':'''创建并切换'''到<branchname>分支 # '''<code>git checkout -b <本地新建分支> <远程主机名>/<远程分支></code>''':在远程分支基础上新建本地分支(先有远程主机信息<code>git fetch <远程主机名> <远程分支></code>) : ''切换分支的时候,Git会用该分支最后提交的快照替换本地工作目录的内容。'' 文件: '''<code>git checkout [<options>] [<branch>] -- <file></code>''' # '''<code>git checkout -- <file></code>''':从当前分支签出文件(即'''撤销工作区文件<file>的修改'''); ## 工作区修改,但'''未add'''到暂存区:checkout重置到与'''版本库'''一致 ## 工作区修改并'''add后''',再次修改:checkout重置到与'''暂存区'''一致 # '''<code>git checkout <commit> -- <file></code>''':从指定commit签出文件; # '''<code>git checkout <branch> -- <file></code>''':从指定分支签出文件; # '''<code>git checkout -- *.xxx'''</code>:签出所有xxx后缀的文件; # '''<code>git checkout -- xxx/'''</code>:签出所有xxx目录的文件; |- | '''<code>git merge</code>''' | 分支合并 | Note1: [[File:git merge.png|400px]] # '''合并分支并产生新的提交'''; # 不会改变当前分支的开始位置; # 只处理一次冲突; # 引入了一次合并的历史记录,合并后的所有 commit 会按照提交时间从旧到新排列; # 合并后分支过程信息更多更复杂,可能会提高之后查找问题的难度; Note2:参数 :* ''(N = 被合并分支中,需要合并的commit个数)'' :* ''(主分支和被合并分支中,被合并的commitID并不相同,是重新提交,而非引用)'' # '''<code>--ff</code>''':(默认)快速合并(主分支新增'''N'''个commit,冲突处理则'''N+1'''); #: 如果合并过程出现冲突,Git会显示出冲突并等待手动解决; # '''<code>--ff-only</code>''':只有能快速合并的情况才合并(主分支新增'''N'''个commit); #: 如果合并过程出现冲突,Git会自动abort此次merge; # '''<code>--no-ff</code>''':不使用快速合并(主分支新增'''N+1'''个commit,冲突处理则'''N+2'''); #: 会额外生成一次新的提交记录,用于标识此处进行了一次merge操作(需使用'''<code>-m <message></code>'''记录提交信息); # '''<code>--squash</code>''':压缩合并(主分支新增'''1'''个commit); #: 将待合并的分支的内容压缩成一个新的提交合并进来; Note3: # '''<code>git merge <branch1></code>''':将<branch1>分支合并到当前分支; #: 将''branchB''和并到''branchA'':切换到''branchA''中执行“<code>git merge branchB</code>”。 # '''<code>git merge <branch1> <branch2> <branch3> <branch4></code>''':合并多个分支到当前分支; |- | '''<code>git rebase</code>''' | 分支(变基)合并 | Note1: [[File:git rebase.png|400px]] # '''(变基)合并分支但并不产生新的提交'''; # '''改变了当前分支的开始位置'''; # 可能会有'''多次冲突处理'''; # 没有多余的合并历史的记录,且合并后的 '''commit 顺序不一定按照 commit 的提交时间排列'''; # 合并后分支上每个 commit 点都是相对独立完整的功能单元; Note2: # '''<code>git rebase <branch1></code>''': # '''<code>git rebase --continue</code>''':(解决完冲突并<code>git add</code>后)继续应用(apply)余下的补丁进行合并; # '''<code>git rebase --abort</code>''':终止rebase的行动,并将分支回退到rebase开始前的状态; |- | '''<code>git cherry-pick</code>''' | 复制commit<br/> | Note1: # '''<code>git cherry-pick <commit></code>''':是将指定的提交(commit)应用于当前分支,这会在当前分支产生一个新的提交; # '''<code>git cherry-pick <branch></code>''':表示应用该分支的最新提交,到当前分支; Note2: :* '''''复制多个commit时,当前分支会产生多个对应的commit。''''' # '''<code>git cherry-pick <commitA> <commitB> <commitC></code>''':复制多个commit; # '''<code>git cherry-pick <commitA>...<commitC></code>''':(不包括<code><commitA></code>)复制从<code><commitA></code>到<code><commitC></code>的多个commit(<code><commitA></code>必须在<code><commitC></code>之前); # '''<code>git cherry-pick <commitA>^...<commitC></code>''':(包括<code><commitA></code>)复制从<code><commitA></code>到<code><commitC></code>的多个commit(同上); :* '''''cherry-pick 也支持转移另一个代码库的提交,方法是先将该库加为远程仓库,再抓取代码并获取<commitID>''''' Note3: # '''<code>git cherry-pick --continue</code>''':用于解决代码冲突后,让<code>cherry-pick</code>过程继续执行(先将修改的文件加入暂存区<code>git add</code>); # '''<code>git cherry-pick --abort</code>''':发生代码冲突后,放弃<code>cherry-pick</code>过程,恢复到操作前状态; # '''<code>git cherry-pick --quit</code>''':发生代码冲突后,放弃<code>cherry-pick</code>过程,但不恢复状态; |- | '''<code>git switch</code>''' | 切换分支<br/> ('''''Git 2.23引入''''') | 与'''<code>git checkout</code>分支'''等效: # '''<code>git switch <branch></code>分支''':等效于'''<code>git checkout <branch></code>'''; # '''<code>git switch -c <branch></code>分支''':(--create)等效于'''<code>git checkout -b <branch></code>分支'''; |} 冲突合并:<br/> 冲突合并涉及文件添加、移除的操作,还包括文件修改内容的合并。 == 远程 == {| class="wikitable" |- ! style="width:8%"|命令 !! style="width:30%"|说明 !! 备注 |- | '''<code>git remote</code>''' | 管理远程仓库主机名 | # <code>git remote -v</code>:显示所有远程仓库 # <code>git remote show [remoteName]</code>:显示远程仓库的信息 #: 如:git remote show origin # <code>git remote add [remoteName] [url]</code>:添加关联远程版本库 #: 如:git remote add origin git@github.com:tianqixin/runoob-git-test.git # <code>git remote rm [remoteName]</code>:删除远程仓库 # <code>git remote rename [old_name] [new_name]</code>:修改远程仓库名 |- | '''<code>git pull</code>''' | 下载远程代码并合并:<br/> <code>git pull <远程主机名> <远程分支名>:<本地分支名></code> | Note1: # '''合并到当前分支''',可省略“'''<code>:<本地分支名></code>'''”; # 等效于<code>git fetch</code>+<code>git merge FETCH_HEAD</code>(概念上等效,实现上不一样???)。 Note2: # <code>git pull --rebase <远程主机名> <远程分支名>:<本地分支名></code>:合并需要采用'''rebase'''模式的pull; # <code>git pull -p</code>:若服务器删除了某分支,拉取远程分支的时候,同步删除本地的该分支; #: 等同于:<code>git fetch --prune <远程主机名></code> 、<code>git fetch -p</code>; Note3: # <code>git pull <远程主机名> <远程分支名></code> #: 拉取远程主机的分支,并与本地'''当前分支'''合并; # <code>git pull <远程主机名></code> #: 拉取远程主机的对应分支,并与本地'''当前分支'''合并(当前分支与远程分支必须存在追踪关系); # <code>git pull</code> #: 拉取远程主机的对应分支,并与本地'''当前分支'''合并(当前分支只有一个追踪分支); |- | '''<code>git push</code>''' | 上传远程代码并合并:<br/> <code>git push <远程主机名> <本地分支名>:<远程分支名></code> | Note1: # '''<code>git push --delete</code>''':删除远程主机的分支; # '''<code>git push --force</code>''':(慎用)强制推送,忽略远程分支版本比本地高(应先pull); # '''<code>git push --all</code>''':无论对应远程分支是否存在,将本地的所有分支都推送到远程主机; # '''<code>git push --tags</code>''':推送所有未推送过的本地标签; # '''<code>git push <tag></code>''':推送本地标签<tag>; Note2: # '''<code>git push -u <远程主机名> <本地分支名></code>''' #: 如果当前分支与多个主机存在追踪关系,则可以使用'''-u'''参数指定一个默认主机,这样后面就可以不加任何参数使用git push; # '''<code>git push <远程主机名> <本地分支名></code>''' #: 表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建; # '''<code>git push <远程主机名> :<远程分支名></code>''' #: 表示删除对应的远程分支(推送空的本地分支到远程); # '''<code>git push <远程主机名></code>''' #: 表示将'''当前分支'''推送到远程主机的对应分支(当前分支与远程分支必须存在追踪关系); # '''<code>git push</code>''' #: 表示将'''当前分支'''推送到远程主机的对应分支(当前分支只有一个追踪分支); Note3:关于推送方式 # '''simple'''方式:不带任何参数的<code>git push</code>,默认只推送当前分支;(默认) # '''matching'''方式:推送所有有对应的远程分支的本地分支;(Git 2.0之前默认) # <code>git config</code>中的<code>push.default</code>可配置推送方式; |- | '''<code>git fetch</code>''' | 获取远程主机的版本库更新(commit):<code>git fetch [alias] [branch]</code><br/> <pre>Download objects and refs from another repository</pre> | Note1: # '''FETCH_HEAD''':是一个版本链接,记录在本地的文件中(.git/FETCH_HEAD),指向着目前已经从远程仓库取下来的分支的末端版本; # “git fetch”将: ## 更新“git remote”中所有远程仓库所包含分支的最新commit-id, 将其记录到“'''.git/FETCH_HEAD'''”文件中; ## 下载内容到“'''.git\objects'''”及“'''.git\refs'''”; # '''<code>git fetch</code>''' 与 '''<code>git pull</code>''': ## <code>git fetch</code>拉取更新信息(commitID),但不会合并到本地工作目录; ## <code>git pull</code>将本地库更新至远程库的最新状态; Note2: # '''<code>git fetch <远程主机名> <远程分支1> <远程分支2> <远程分支3></code>''':从远程仓库拉取多个分支; # '''<code>git fetch <远程主机名> <远程分支></code>''':拉取指定主机指定分支的更新; # '''<code>git fetch <远程主机名></code>''':拉取指定主机的更新(不指定分支时通常默认为master); # '''<code>git fetch </code>''':拉取所有分支(branch)的更新; Note3: # 拉取分支更新,并在本地新建分支: #* 不切换到该分支: ## '''<code>git fetch <远程主机名> <远程分支>:<本地新建分支></code>''' #* 并切换到该分支: ## (<code>git fetch <远程主机名> <远程分支></code>) ## '''<code>git checkout -b <本地新建分支> <远程主机名>/<远程分支></code>''' # 拉取远程分支更新,并合并到本地分支(与<code>git merge</code>配合使用): ## <code>git fetch origin master</code>:从'''origin'''拉取分支'''master'''的更新; ## <code>git merge origin/master</code>:合并'''origin/master'''分支到'''当前分支'''; # 拉取多分支更新: ## 拉取多个分支:<code>git fetch origin master stable oldstable</code>,从远程仓库origin拉取master、stable、oldstable分支的更新; ## 合并多个分支:<code>git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290</code>,合并origin/master、origin/stable、origin/oldstable到当前分支。 |} === 设置分支追踪关系 === 设置本地分支与远程分支的追踪关系,可以更方便地使用 git pull、git push 等命令。 ——如果是通过 git clone 建立的本地仓库,则已有追踪关系。 设置命令: : <syntaxhighlight lang="bash" highlight=""> git branch --set-upstream-to=<remote>/<remote_branch> <local_branch> </syntaxhighlight> == 日志 == {| class="wikitable" |- ! 命令 !! 说明 !! 备注 |- | '''<code>git log</code>''' | 查看所有提交过的版本信息 | Note1: # '''<code>git log --graph</code>''':查看分支commit关联拓扑图; # '''<code>git log --oneline</code>''':显示commit简略信息(只显示版本号前七位和提交时的备注信息); #: 另'''<code>--pretty=oneline</code>'''(显示完整版本号和备注); # '''<code>git log -5</code>''':显示过去5次提交; # '''<code>git log --reverse</code>''':逆序显示commit; # '''<code>git log --stat</code>''':显示commit历史,以及每次commit发生变更的文件; # '''<code>git shortlog -sn</code>''':显示所有提交过的用户,按提交次数排序; Note2: # '''<code>git log --author=<pattern></code>''':显示限定作者(正则表达式)的commit; #: 另'''<code>--committer=<pattern></code>'''类似; # '''<code>git log --since=<date></code>''':显示<date>之后的commit; #: 另'''<code>--after=<date></code>'''、'''<code>--until=<date></code>'''、'''<code>--before=<date></code>'''类似; |- | '''<code>git reflog</code>''' | 查看所有分支的所有操作记录 | <code></code> |- | '''<code>git blame</code>''' | 查看文件记录 | # '''<code>git blame <file></code>''':查看指定文件的修改记录; |} == 标签 == tag实际就是一个指向commit的指针,将一个有意义的tag名称与commit相关联。<br/> git标签有两种类型: # 轻量级的(lightweight):实际上它就是个指向特定提交对象的引用。 # 含附注的(annotated):<pre>实际上是存储在仓库中的一个独立对象,有自身的校验和信息,包含标签名称,电子邮件地址和日期,及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。</pre> {| class="wikitable" |- ! 命令 !! 说明 !! 备注 |- | '''<code>git tag</code>''' | git标签 | Note: # <code>git tag</code>:查看所有标签; # <code>git tag <tagname></code>:创建标签(默认指定到当前分支); # <code>git tag <tagname> <commitID></code>:创建标签,并关联到指定分支; # <code>git tag -a <tagname></code>:创建带注解的标签(Git会打开编辑器来编辑tag的注解信息); # <code>git tag -d <tagname></code>:删除标签; # <code>git show <tagname></code>:查看tag关联的commit信息 # <code>git tag -a <tagname> -m "标签信息"</code>:指定标签信息 # <code>git tag -s <tagname> -m "标签信息"</code>:PGP签名标签 如: <syntaxhighlight lang="PowerShell"> Microsoft Windows [版本 10.0.19041.508] (c) 2019 Microsoft Corporation。保留所有权利。 D:\git\eijux>git tag D:\git\eijux>git tag rc1.0 D:\git\eijux>git tag -a rc2.0 # Write a message for tag: # rc2.0 # Lines starting with '#' will be ignored. D:\git\eijux>git tag rc3.0 ffa1 D:\git\eijux>git log --decorate commit 5e26159ad738b08b9321eba9ecaeff39c8acc42f (HEAD -> master, tag: rc2.0, tag: rc1.0, eijux/master) Author: Eijux <chen@eijux.com> Date: Fri Nov 1 01:18:47 2019 +0800 idea commit test 01<E7><82><B9>18<E5><88><86> commit ffa14211ab7088d9782de019328238dcfe09a4bc (tag: rc3.0) Merge: 3fbc79a fc32a4a Author: Eijux <chen@eijux.com> Date: Thu Oct 31 16:03:24 2019 +0800 Merge branch 'master' of github.com:Eijux/eijux D:\git\eijux>git show rc3.0 commit ffa14211ab7088d9782de019328238dcfe09a4bc (tag: rc3.0) Merge: 3fbc79a fc32a4a Author: Eijux <chen@eijux.com> Date: Thu Oct 31 16:03:24 2019 +0800 Merge branch 'master' of github.com:Eijux/eijux D:\git\eijux> </syntaxhighlight> |}
返回至“
Git:基本操作
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息