git 常用指令
图解git中的最常用命令
图解git中的最常用命令如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻。
正文1. 基本用法2. 约定3. 命令详解(1). Diff(2). Commit(3). Checkout(4). Detached HEAD(匿名分支提交)(5). Reset(6). Merge(7). Cherry Pick(8). Rebase4. 技术说明基本用法上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。
· git add files把当前文件放入暂存区域。
· git commit给暂存区域生成快照并提交。
· git reset – files用来撤销最后一次git add files,你也可以用git reset撤销所有暂存区域文件。
· git checkout – files把文件从暂存区域复制到工作目录,用来丢弃本地修改。
你可以用git reset -p,git checkout -p, orgit add -p进入交互模式。
也可以跳过暂存区域直接从仓库取出文件或者直接提交代码。
· git commit -a相当于运行git add把所有当前目录下的文件加入暂存区域再运行。
git commit.· git commit files进行一次包含最后一次提交加上工作目录中文件快照的提交。
并且文件被添加到暂存区域。
· git checkout HEAD – files回滚到复制最后一次提交。
约定后文中以下面的形式使用图片。
绿色的5位字符表示提交的ID,分别指向父节点。
分支用橘色显示,分别指向特定的提交。
当前分支由附在其上的HEAD标识。
这张图片里显示最后5次提交,ed489是最新提交。
master分支指向此次提交,另一个maint分支指向祖父提交节点。
图解git中的最常用命令(2)命令详解Diff有许多种方法查看两次提交之间的变动。
git基本命令
4、版本库管理相关命令
命令 简要说明 git count-objects 显示松散对象的数量和磁盘占用 git filter-branch 版本库重构 git fsck 对象库完整性检查 git fsck-objects* 同义词,等同于 git fsck git gc 版本库存储优化 git index-pack 从打包文件创建对应的索引文件 git lost-found* 过时,请使用 git fsck –lost-found 命令 git pack-objects 从标准输入读入对象ID,打包到文件 git pack-redundant 查找多余的 pack 文件 git pack-refs 将引用打包到 .git/packed-refs 文件中 git prune 从对象库删除过期对象 git prune-packed 将已经打包的松散对象删除 git relink 为本地版本库中相同的对象建立硬连接 git repack 将版本库未打包的松散对象打包 git show-index 读取包的索引文件,显示打包文件中的内容 git unpack-objects 从打包文件释放文件 git verify-pack 校验对象库打包文件
Git命令详解及常用命令整理
Git命令详解及常⽤命令整理Git 命令详解及常⽤命令Git作为常⽤的版本控制⼯具,多了解⼀些命令,将能省去很多时间,下⾯这张图是⽐较好的⼀张,贴出了看⼀下:关于git,⾸先需要了解⼏个名词,如下:Workspace //⼯作区Index / Stage //暂存区Repository //仓库区(或本地仓库)Remote //远程仓⼀、新建代码库// 在当前⽬录新建⼀个Git代码库$ git init// 新建⼀个⽬录,将其初始化为Git代码库$ git init [project-name]// 下载⼀个项⽬和它的整个代码历史$ git clone [url]⼆、配置Git的设置⽂件为.gitconfig,它可以在⽤户主⽬录下(全局配置),也可以在项⽬⽬录下(项⽬配置)。
// 显⽰当前的Git配置$ git config --list// 编辑Git配置⽂件$ git config -e [--global]// 设置提交代码时的⽤户信息$ git config [--global] "[name]"$ git config [--global] user.email "[email address]"三、增加/删除⽂件// 添加指定⽂件到暂存区$ git add [file1] [file2] ...// 添加指定⽬录到暂存区,包括⼦⽬录$ git add [dir]// 添加当前⽬录的所有⽂件到暂存区$ git add .// 添加每个变化前,都会要求确认// 对于同⼀个⽂件的多处变化,可以实现分次提交$ git add -p// 删除⼯作区⽂件,并且将这次删除放⼊暂存区$ git rm [file1] [file2]// 停⽌追踪指定⽂件,但该⽂件会保留在⼯作区$ git rm --cached [file]// 改名⽂件,并且将这个改名放⼊暂存区$ git mv [file-original] [file-renamed]四、代码提交// 提交暂存区到仓库区$ git commit -m [message]// 提交暂存区的指定⽂件到仓库区$ git commit [file1] [file2] ... -m [message]// 提交⼯作区⾃上次commit之后的变化,直接到仓库区$ git commit -a// 提交时显⽰所有diff信息$ git commit -v// 使⽤⼀次新的commit,替代上⼀次提交// 如果代码没有任何新变化,则⽤来改写上⼀次commit的提交信息$ git commit --amend -m [message]// 重做上⼀次commit,并包括指定⽂件的新变化$ git commit --amend [file1] [file2]五、分⽀// 列出所有本地分⽀$ git branch// 列出所有远程分⽀$ git branch -r// 列出所有本地分⽀和远程分⽀$ git branch -a// 新建⼀个分⽀,但依然停留在当前分⽀$ git branch [branch-name]// 新建⼀个分⽀,并切换到该分⽀$ git checkout -b [branch]// 新建⼀个分⽀,指向指定commit$ git branch [branch] [commit]// 新建⼀个分⽀,与指定的远程分⽀建⽴追踪关系$ git branch --track [branch] [remote-branch]// 切换到指定分⽀,并更新⼯作区$ git checkout [branch-name]// 切换到上⼀个分⽀$ git checkout -// 建⽴追踪关系,在现有分⽀与指定的远程分⽀之间$ git branch --set-upstream [branch] [remote-branch]// 合并指定分⽀到当前分⽀$ git merge [branch]// 选择⼀个commit,合并进当前分⽀$ git cherry-pick [commit]// 删除分⽀$ git branch -d [branch-name]// 删除远程分⽀$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]六、标签// 列出所有tag$ git tag// 新建⼀个tag在当前commit$ git tag [tag]// 新建⼀个tag在指定commit$ git tag [tag] [commit]// 删除本地tag$ git tag -d [tag]// 删除远程tag$ git push origin :refs/tags/[tagName]// 查看tag信息$ git show [tag]// 提交指定tag$ git push [remote] [tag]// 提交所有tag$ git push [remote] --tags// 新建⼀个分⽀,指向某个tag$ git checkout -b [branch] [tag]七、查看信息// 显⽰有变更的⽂件$ git status// 显⽰当前分⽀的版本历史$ git log// 显⽰commit历史,以及每次commit发⽣变更的⽂件$ git log --stat// 搜索提交历史,根据关键词$ git log -S [keyword]// 显⽰某个commit之后的所有变动,每个commit占据⼀⾏$ git log [tag] HEAD --pretty=format:%s// 显⽰某个commit之后的所有变动,其"提交说明"必须符合搜索条件$ git log [tag] HEAD --grep feature// 显⽰某个⽂件的版本历史,包括⽂件改名$ git log --follow [file]$ git whatchanged [file]// 显⽰指定⽂件相关的每⼀次diff$ git log -p [file]// 显⽰过去5次提交$ git log -5 --pretty --oneline// 显⽰所有提交过的⽤户,按提交次数排序$ git shortlog -sn// 显⽰指定⽂件是什么⼈在什么时间修改过$ git blame [file]// 显⽰暂存区和⼯作区的差异$ git diff// 显⽰暂存区和上⼀个commit的差异$ git diff --cached [file]// 显⽰⼯作区与当前分⽀最新commit之间的差异$ git diff HEAD// 显⽰两次提交之间的差异$ git diff [first-branch]...[second-branch]// 显⽰今天你写了多少⾏代码$ git diff --shortstat "@{0 day ago}"// 显⽰某次提交的元数据和内容变化$ git show [commit]// 显⽰某次提交发⽣变化的⽂件$ git show --name-only [commit]// 显⽰某次提交时,某个⽂件的内容$ git show [commit]:[filename]// 显⽰当前分⽀的最近⼏次提交$ git reflog⼋、远程同步# 下载远程仓库的所有变动$ git fetch [remote]# 显⽰所有远程仓库$ git remote -v# 显⽰某个远程仓库的信息$ git remote show [remote]# 增加⼀个新的远程仓库,并命名$ git remote add [shortname] [url]# 取回远程仓库的变化,并与本地分⽀合并$ git pull [remote] [branch]# 上传本地指定分⽀到远程仓库$ git push [remote] [branch]# 强⾏推送当前分⽀到远程仓库,即使有冲突$ git push [remote] --force# 推送所有分⽀到远程仓库$ git push [remote] --all九、撤销// 恢复暂存区的指定⽂件到⼯作区$ git checkout [file]// 恢复某个commit的指定⽂件到暂存区和⼯作区$ git checkout [commit] [file]// 恢复暂存区的所有⽂件到⼯作区$ git checkout .// 重置暂存区的指定⽂件,与上⼀次commit保持⼀致,但⼯作区不变$ git reset [file]// 重置暂存区与⼯作区,与上⼀次commit保持⼀致$ git reset --hard// 重置当前分⽀的指针为指定commit,同时重置暂存区,但⼯作区不变$ git reset [commit]// 重置当前分⽀的HEAD为指定commit,同时重置暂存区和⼯作区,与指定commit⼀致$ git reset --hard [commit]// 重置当前HEAD为指定commit,但保持暂存区和⼯作区不变$ git reset --keep [commit]// 新建⼀个commit,⽤来撤销指定commit// 后者的所有变化都将被前者抵消,并且应⽤到当前分⽀$ git revert [commit]// 暂时将未提交的变化移除,稍后再移⼊$ git stash$ git stash pop⼗、其他// ⽣成⼀个可供发布的压缩包$ git archive感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
git常用命令说明书
REMOTE REPOSITORIES
git remote add <name> <url>
Create a new connection to a remote repo. After adding a remote, you can use <name> as a shortcut for <url> in other commands.
Create and check out a new branch named <branch>. Drop the -b flag to checkout an existing branch.
git merge <branch> Merge <branch> into the current branch.
git rebase <base>
Rebase the current branch onto <base>. <base> can be a commit ID, branch name, a tag, or a relative reference to HEAD.
git reflog
Show a log of changes to the local repository’s HEAD. Add --relative-date flag to show date info or --all to show all refs.
git diff
Create empty Git repo in specified directory. Run with no arguments to initialize the current directory as a git repository.
git常用命令解释
GIT ANG REPOUSAGE1 git command1.1 git add∙git add . #将文件先暂存到staging area, stages new and modified, without deleted∙git add -A #states all∙git add -u #states modified and deleted, without new∙git add -i #进入互动模式∙git add filename #新增一个文件∙git add modify-file #修改过得文档也要加add,不然在commit时要加-a 1.2 git rm #删除文件∙git rm filename1.3 git mv #修改文件名,或搬移目录∙git mv filename newfilename1.4 git status #查看状态1.5 git commit∙git commit∙git commit -m 'commit message'∙git commit -a -m "message"∙git commit -a -v #-v查看修改的内容1.6 git branch∙git branch #列出所有的分支∙git branch new-branch #产生新的分支∙git branch new-branch master #由master产生新的分支∙git branch -d branch #删除分支∙git branch -D branch #强制删除分支∙git checkout -b new-branch #产生新分支并切换过去∙git branch -r #列出所有repository branch∙git branch -a #列出所有分支1.7 git checkout∙git checkout branch-name #切换到branch-name∙git checkout master #切换到master∙git checkout -b new-branch master #从master建立新的分支,并切换过去∙git checkout -b new-branch #由当前分支建立新分支∙git checkout -b new-branch origin #由origin建立分支∙git checkout filename #还原状态到repository状态∙git checkout HEAD . #将所有文件都checkout出来∙git checkout xxxx . #xxxx是commit的编号的前四位,将xxxx编号的版本checkout出来∙git checkout – * #恢复上一次commit的状态1.8 git diff∙git diff master #与master对比看哪些文件不同∙git diff –cached #比较staging area与repository∙git diff tag1 tag2 #tag1与tag2比较∙git diff tag1:file1 tag2:file2 #tag1的file1与tag2的file2比较∙git diff #当前与staging area比较∙git diff HEAD #当前与repository比较∙git diff new-brach #当前与new branch的比较∙git diff –stat1.9 git tag∙git tag v1 ebff #为commit ebff810c462234433434323334343设置标记v1 ∙git tag 版本1 ebff #tag可以为中文∙git tag -d 版本1 #删除标记版本11.10 git log∙git log #列出所有log∙git log –all∙git log -p #列出log及修改的内容∙git log -p filename #将filename的log及修改内容列出来∙git log –name-only #列出哪些文件被修改∙git log –stat –summary #列出各个版本间的改动及行数∙git log filename #这个文件的所有log∙git log directory #这个目录的所有log∙git log -S'FUNC()‘ #列出由FUNC()这个字符串的log∙git log –no-merges #不要列出merge的log∙git log –since="2 weeks ago" #列出最后两周的log∙git log –pretty=oneline∙git log –pretty=short1.11 git show∙git show ebff #显示commit ebff810xxxxxxxxxxx的内容∙git show v1 #显示tag v1的修改内容∙git show v1:hello.txt #显示tag:v1的hello.txt文件修改内容∙git show HEAD #当前版本的修改文件∙git show HEAD^ #前一版本所有修改的文件∙git show HEAD~4 #前4版本的修改文件1.12 git reset∙git reset –hard HEAD^ #还原到前一版本∙git reset –soft HEAD~31.13 git grep∙git grep "hello" v1 #查找tag:v1中是否由“hello"字符串∙git grep "hello"1.14 git stash∙git stash #放进暂存区∙git stash list #列出暂存区的文件∙git stash pop #取出最新的一笔,并移除∙git stash apply #取出但不移除∙git stash clear #清除暂存区1.15 git merge∙git merge #合并1.16 git blame∙git blame filename #列出此文件所有commit的记录1.17 git ls-files∙git ls-files -d #查看已删除的文件∙git ls-files -d | xargs git checkout – #将已删除的文件还原1.18 git revert∙git revert HEAD #回到前一此commit的状态∙git revert HEAD^ #回到上上一次的状态1.19 git remote∙git remote∙git remote add new-branch /project.git #增加远程repository的branch∙git remote show #列出现在由多少repository∙git remote rm new-branch #删除服务器上的新分支∙git remote update #更新所有repository branch1.20 git fetch∙git fetch origin1.21 git push∙git push origin:heads/xxx-branch2 repo command2.1 repo init∙repo init -u URL #在当前目录安装repo,该命令创建一个.repo文件夹,文件夹中包含一些git仓库,这些仓库包含着repo源代码何manifest文件。
Git常用命令及常见问题解决
Git常⽤命令及常见问题解决Git[TOC]Git相关知识点仓库Remote:远程主仓库Repository/History:本地仓库Stage/Index:Git追踪树,暂存区Workspace:本地⼯作区Git问题解决⼀般代码提交流程:⼯作区→git status查看状态→git add .将所有修改加⼊暂存区→git commit -m "提交描述"将代码提交到本地仓库→git push将本地仓库代码更新到远程仓库git add提交到暂存区问题场景1当你改乱了⼯作区某个⽂件的内容,想直接丢弃⼯作区的修改时#丢弃⼯作区的修改git checkout --<⽂件名>场景2当你不但改乱了⼯作区某个⽂件的内容,还添加到了暂存区,想丢弃修改,分两步第⼀步git reset HEAD file#回到场景1第⼆步按场景1操作git commit提交到本地仓库问题1、提交信息出错更改commit信息git commit --amend -m "新提交信息"2、漏提交commit时,遗漏提交部分更新,两种解决⽅案⽅案⼀:再次提交git commit -m "提交信息"#此时,git上会出现两次commit3、提交错误⽂件,回退到上⼀个commit版本,再commit git reset删除指定的commit修改版本库,修改暂存区,修改⼯作区#把暂存区的修改车削掉(unstage),重新放回⼯作区git reset HEAD <⽂件名>#git版本回退,回退到特定的commit_id版本,可以通过git log查看提交历史,以便确定要回退到哪个版本git reset --hard commit_id#将版本回退⼀个版本,不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将⼯作区代码#也回退到这个版本git reset --hard HEAD-1修改版本库,保留暂存区,保留⼯作区#将版本库软回退1个版本,软回退表⽰将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到#暂存区git reset --soft HEAD-1git revert撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为⼀次最新的提交git revert是提交⼀个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容#撤销前⼀次commitgit revert HEAD#撤销前前⼀次commitgit revert HEAD^#撤销指定的版本,撤销也会作为⼀次提交进⾏保存git revert commit_id'git revert'和'git reset'的区别git revert是⽤⼀次新的commit来回滚之前的commit,git reset是直接删除指定的commit在回滚这⼀操作上看,效果差不多。
git的基本用法
git的基本用法
Git是一种版本控制系统,它可以跟踪代码的变化,并在多人协作时保证代码的一致性。
以下是Git的基本用法:
1. 初始化一个Git仓库:在项目文件夹中运行“git init”命令。
2. 添加代码到Git仓库:使用“git add”命令将代码添加到缓存区。
3. 提交代码到Git仓库:使用“git commit”命令提交代码到本地仓库。
4. 查看Git仓库状态:使用“git status”命令查看当前代码是否有修改。
5. 查看Git提交历史:使用“git log”命令查看所有提交记录。
6. 回滚代码:使用“git reset”命令可以回滚到某个提交版本。
7. 分支管理:使用“git branch”命令可以创建和管理分支,使用“git merge”命令可以合并分支。
8. 远程仓库管理:使用“git remote”命令可以管理远程仓库,使用“git push”命令可以将代码推送到远程仓库。
以上是Git的基本用法,可以帮助开发者更好地管理代码,并提高协作效率。
- 1 -。
git常用命令使用及学习
git 常用命令安装步骤略1.设置邮箱用户a. git config --global user.email "my email"b. git config --global "my name"2.git init 把一个目录变成git可以管理的仓库,仓库里面存放你的项目文件3.git add <files> 新增或修改项目文件<files>多个文件可以空格隔开4.git commit -m "提交的内容说明" 提交更新。
修改已存在的文件提交保存,重复3-4步骤就行了5.git status 查看当前仓库下所有文件的状态,可查询哪些文件被修改过6.git diff 查看所有变更过的文件git diff <file>查看指定文件的变更内容7.git log 查看所有提交的日志记录,按时间倒序排列。
如果觉得现实内容过多,可使用git log --pretty=oneline查询,查询显示前面类似乱码的东西就是commit id8.git reset 版本回退到指定版本git reset --hard 'commit id' 或者git reset --hard head^回退上一个版本,git reset --hard head^^回退到上上一个版本,git reset --hard head~10回退到上10个版本9.git reflog 查看历史命令记录,主要可以找到以前的commit id10.git checkout -- <file> 直接丢弃工作区的修改11.git rm 删除指定文件。
git rm 文件夹名称-r递归删除指定文件夹下的所有内容12.git branch 查看分支信息,带*的为当前分支。
使用git switch -c '分支名称'或者git checkout -b '分支名称' 表示创建并切换分支。
Git 常用命令整理
13.#查看文件状态
14.git status
15.
16.#跟踪新文件
17.git add readme.txt
18.
19.#从当前跟踪列表移除文件,并完全删除
20.git rm readme.txt
21.
22.#仅在暂存区删除,保留文件在当前目录,不再跟踪
23.git rm –cached readme.txt
18.git config --global core.editor"mate -w"#设置Editor使用textmate
19.git config -1 #列举所有配置
20.
21.#用户的git配置文件~/.gitconfig
查看、添加、提交、删除、找回,重置修改文件
1.git help <command> #显示command的help
24.
25.#重命名文件
26.git mv reademe.txt readme
27.
28.#查看提交的历史记录
29.git log
30.
31.#修改最后一次提交注释的,利用–amend参数
32.git commit --amend
33.
34.#忘记提交某些修改,下面的三条命令只会得到一个提交。
35.git commit –m "add readme.txt"
2.git remote show origin #查看远程服务器仓库状态
3.git remote add origin git@ github:robbin/robbin_site.git #添加远程仓库地址
4.git remote set-url origin git@ :robbin/robbin_site.git #设置远程仓库地址(用于修改远程仓库地址)
GIT相关操作
GIT命令行操作<1>克隆下载git仓库# 下载创库git clone http://192.168.88.210/david/page.git<2>添加和删除文件# 查看git状态git status# 删除继承下来的代码git rm -rf .# 添加所有新增文件,-f加所有数据忽略.gitignoregit add . (-f)# 这两条命令可以丢弃本地所有修改git reset --hard# 删除一些没有 Git add 的文件# 语法: git clean 参数# -n 显示将要删除的文件和目录# -f 删除文件, -df 删除文件和目录git clean -df<3>提交修改# 提交修改git commit -a -m "官网openresty-1.11.2.1原生code"# 更新的远端服务器git push origin openresty-1.11.2.1# 从远端更新代码git pull<4>关于分支# 查看远端分支git branch -a# 切换到对应的分支git checkout branch# 创建分支git checkout --orphan openresty-1.11.2.1# 在Git v1.7.0之后,可以使用这种语法删除远程分支git push origin --delete <branchName># 查看bl的状态git remote show origin<5>关于标签# 删除远程标签taggit push origin --delete tag <tagname># 把本地tag推送到远程git push --tags# 推送一个空分支到远程分支,其实就相当于删除远程分支git push origin :<branchName># 这是删除tag的方法,推送一个空tag到远程tag:git tag -d <tagname>git push origin :refs/tags/<tagname># 获取远程taggit fetch origin tag <tagname><6>查看日志# 直接查看git日志git log# 选择过滤查看日志git log --graph --decorate --oneline --simplify-by-decoration --all 说明:--decorate 标记会让git log显示每个commit的引用(如:分支、tag等)--oneline 一行显示--simplify-by-decoration 只显示被branch或tag引用的commit--all 表示显示所有的branch,这里也可以选择,比如我指向显示分支ABC的关系,则将--all替换为branchA branchB branchCGIT相关问题<1> TortoiseGit(乌龟git)保存用户名密码的方法github的windows版也用过一段时间,但还是不太习惯。
Git的常用命令
Git的常⽤命令Git常⽤命令汇总以及其它相关操作⼀、常⽤的git命令--⽂件⽬录操作命令mkdir * 创建⼀个空⽬录 *指⽬录名pwd显⽰当前⽬录的路径。
cat * 查看*⽂件内容git rm * 删除**⽂件--git初始化操作git init 把当前的⽬录变成git仓库,⽣成隐藏.git⽂件。
git remote add origin url 把本地仓库的内容推送到GitHub仓库。
git clone git@url/test.git 从远程库克隆git add * 把x⽂件添加到暂存区去。
git commit –m "*"提交⽂件 –m 后⾯的是注释。
--git 克隆分⽀git clone xxx.git 最简单直接的命令git clone xxx.git "指定⽬录" clone到指定⽬录git clone -b branchname xxx.git clone时创建新的分⽀替代默认Origin HEAD(master)--clone 远程分⽀ git clone 命令默认的只会建⽴master分⽀,如果你想clone指定的某⼀远程分⽀(如:dev)的话,可以如下: 1. 查看所有分⽀(包括隐藏的) git branch -a 显⽰所有分⽀ * masterremotes/origin/HEAD -> origin/masterremotes/origin/devremotes/origin/master2. 在本地新建同名的("dev")分⽀,并切换到该分⽀git checkout -t origin/dev#该命令等同于:git checkout -b dev origin/dev--查看命令git status 查看仓库状态git diff * 查看X⽂件修改了那些内容git log 查看历史记录git reflog 查看历史记录的版本号id(记录你的每⼀次命令,不论是否提交)git log --pretty=oneline 如果信息量太多可以进⾏⽐较好的列表显⽰--版本回退git reset –hard HEAD^ 回退到上⼀个版本git reset --hard HEAD~第⼏个如果想回退到第3个版本,使⽤git reset –hard HEAD~3git reset --hard 057d 回退到某⼀个具体的版本号--撤销修改git checkout file-name 恢复某个已修改的⽂件(撤销未提交的修改):git revert HEAD 还原最近⼀次提交的修改:git revert commit-id还原指定版本的修改--分⽀管理git branch 查看本地所有的分⽀git branch -a 查看远程所有的分⽀git branch name 创建分⽀git branch –d dev 删除dev分⽀git push origin --delete dev 删除远程的dev分⽀git branch -m dev develop 重命名分⽀git checkout –b dev 创建dev分⽀并切换到dev分⽀上git merge dev 在当前分⽀上合并dev分⽀代git push origin zyf-dev 把当前新增的zyf-dev分⽀推送到远程库(远程仓库没有给分⽀则会新建⽴该分⽀)git checkout — * 把XX⽂件在⼯作区的修改全部撤销。
Git 常用命令详解
Git 常用命令详解(二)一、Git 命令初识从Git 版本库的初始化,通常有两种方式:1)git clone:这是一种较为简单的初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份例如:git clone git:///someone/some_project.git some_project上面的命令就是将'git:///someone/some_project.git'这个URL地址的远程版本库,完全克隆到本地some_project目录下2)git init 和git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用'git init'命令进行初始化;Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建一个目录,并把可访问的URL 记录下来,此时你就可以利用'git remote add'命令来增加一个远程服务器端,例如:git remote add origin git:///someone/another_project.git上面的命令就会增加URL地址为'git: ///someone/another_project.git',名称为origi n的远程服务器,以后提交代码的时候只需要使用origin别名即可二、Git 常用命令1) 远程仓库相关命令检出仓库: $ git clone git:///jquery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git remote add [name] [url]删除远程仓库:$ git remote rm [name]修改远程仓库:$ git remote set-url --push [name] [newUrl]拉取远程仓库:$ git pull [remoteName] [localBranchName]推送远程仓库:$ git push [remoteName] [localBranchName]*如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:$git push origin test:master // 提交本地test分支作为远程的master分支$git push origin test:test // 提交本地test分支作为远程的test分支2)分支(branch)操作相关命令查看本地分支:$ git branch查看远程分支:$ git branch -r创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支切换分支:$ git checkout [name]创建新分支并立即切换到新分支:$ git checkout -b [name]删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。
Git常用命令
Git常用命令本地工作区本地仓库(暂存区)远程服务器Clone想对某个项目出一份力,可以先把该项目的Git仓库复制一份出来,这就需要用到git clone 命令。
如果你熟悉其他的VCS 比如Subversion,你可能已经注意到这里使用的是clone 而不是checkout。
这是个非常重要的差别,Git收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。
Add:添加到暂存区在git add后面可以指明要跟踪的文件或目录路径。
如果是目录的话,就说明要递归跟踪该目录下的所有文件。
(译注:其实git add的潜台词就是把目标文件快照放入暂存区域,也就是add file into staged area,同时未曾跟踪过的文件标记为需要跟踪。
)Git add这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件(上面的情况),或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等commit:提交到服务器暂存区域已经准备妥当可以提交了。
在此之前,请一定要确认还有什么修改过的或新建的文件还没有git add过,否则提交的时候不会记录这些还没暂存起来的变化。
Pull一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。
Push项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。
Gitignore一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。
通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
我们可以创建一个名为 .gitignore的文件,列出要忽略的文件模式文件 .gitignore的格式规范如下:1.所有空行或者以注释符号#开头的行都会被Git忽略。
2.可以使用标准的glob 模式匹配。
Git常用命令
Git常用命令1、Git配置git config --global "robbin"git config --global user.email "fankai#"git config --global color.ui truegit config --global alias.co checkoutgit config --global alias.ci commitgit config --global alias.st statusgit config --global alias.br branchgit config --global core.editor "mate -w" # 设置Editor使用textmate git config -1 #列举所有配置用户的git配置文件~/.gitconfig2、Git常用命令查看、添加、提交、删除、找回,重置修改文件git help <command> # 显示command的helpgit show # 显示某次提交的内容git show $idgit co -- <file> # 抛弃工作区修改git co . # 抛弃工作区修改git add <file> # 将工作文件修改提交到本地暂存区git add . # 将所有修改过的工作文件提交暂存区git rm <file> # 从版本库中删除文件git rm <file> --cached # 从版本库中删除文件,但不删除文件git reset <file> # 从暂存区恢复到工作文件git reset -- . # 从暂存区恢复到工作文件git reset --hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改git ci <file>git ci .git ci -a # 将git add, git rm和git ci等操作都合并在一起做git ci -am "some comments"git ci --amend # 修改最后一次提交记录git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建了一次提交对象git revert HEAD # 恢复最后一次提交的状态查看文件diffgit diff <file> # 比较当前文件和暂存区文件差异git diffgit diff <$id1> <$id2> # 比较两次提交之间的差异git diff <branch1>..<branch2> # 在两个分支之间比较git diff --staged # 比较暂存区和版本库差异git diff --cached # 比较暂存区和版本库差异git diff --stat # 仅仅比较统计信息查看提交记录git loggit log <file> # 查看该文件每次提交记录git log -p <file> # 查看每次详细修改内容的diffgit log -p -2 # 查看最近两次详细修改内容的diffgit log --stat #查看提交统计信息tigMac上可以使用tig代替diff和log,brew install tig3、Git 本地分支管理查看、切换、创建和删除分支git br -r # 查看远程分支git br <new_branch> # 创建新的分支git br -v # 查看各个分支最后提交信息git br --merged # 查看已经被合并到当前分支的分支git br --no-merged # 查看尚未被合并到当前分支的分支git co <branch> # 切换到某个分支git co -b <new_branch> # 创建新的分支,并且切换过去git co -b <new_branch> <branch> # 基于branch创建新的new_branchgit co $id # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除git co $id -b <new_branch> # 把某次历史提交记录checkout出来,创建成一个分支git br -d <branch> # 删除某个分支git br -D <branch> # 强制删除某个分支(未被合并的分支被删除的时候需要强制)分支合并和rebasegit merge <branch> # 将branch分支合并到当前分支git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交git rebase master <branch> # 将master rebase到branch,相当于:git co <branch> && git rebase master && git co master && git merge <branch>4、Git补丁管理(方便在多台机器上开发同步时用)git diff > ../sync.patch # 生成补丁git apply ../sync.patch # 打补丁git apply --check ../sync.patch #测试补丁能否成功5、Git暂存管理git stash # 暂存git stash list # 列所有stashgit stash apply # 恢复暂存的内容git stash drop # 删除暂存区6、Git远程分支管理git pull # 抓取远程仓库所有分支更新并合并到本地git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并git fetch origin # 抓取远程仓库更新git merge origin/master # 将远程主分支合并到本地当前分支git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上git push # push所有分支git push origin master # 将本地主分支推到远程主分支git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)git push origin <local_branch> # 创建远程分支,origin是远程仓库名git push origin <local_branch>:<remote_branch> # 创建远程分支git push origin :<remote_branch> #先删除本地分支(git br -d <branch>),然后再push删除远程分支7、Git远程仓库管理GitHubgit remote -v # 查看远程服务器地址和仓库名称git remote show origin # 查看远程服务器仓库状态git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址git remote set-url origin git@ :robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址)git remote rm <repository> # 删除远程仓库创建远程仓库git clone --bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库scp -r my_project.git git@ :~ # 将纯仓库上传到服务器上mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服务器创建纯仓库git remote add origin git@ :robbin/robbin_site.git # 设置远程仓库地址git push -u origin master # 客户端首次提交git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且trackgit remote set-head origin master # 设置远程仓库的HEAD指向master分支也可以命令设置跟踪远程库和本地库git branch --set-upstream master origin/mastergit branch --set-upstream develop origin/develop。
Git版本控制常用命令与技巧
Git版本控制常用命令与技巧作为一款开源的分布式版本控制系统,Git已经成为了开发者必不可少的工具之一。
Git可以帮助开发者跟踪代码的变化、恢复版本以及协作开发等。
本文将介绍Git版本控制的常用命令与技巧,有助于更好地使用Git进行代码管理。
一、Git基础命令1. git init初始化一个Git仓库,会在本地目录下创建一个.git子目录,用于存放版本库(版本库包括各种对象和索引等)。
2. git add将当前工作目录下的文件添加到Git的暂存区中。
3. git commit将当前暂存区的所有内容提交到Git版本库中。
4. git status查看当前工作目录的状态,包括哪些文件被修改、添加或删除。
5. git log查看当前版本库的提交历史,包括每个提交的作者、时间、提交信息等。
6. git diff比较当前工作目录和暂存区/版本库中的文件差异。
7. git pull将远程仓库的变化拉取到本地版本库中。
8. git push将本地版本库的变化推送到远程仓库中。
二、Git分支命令1. git branch列出当前版本库的所有分支。
2. git checkout切换到指定分支。
3. git merge将指定分支合并到当前分支中。
4. git rebase将当前分支的提交应用于指定分支上,可以实现将分支历史重写为线性。
5. git cherry-pick将指定的提交应用于当前分支上。
三、Git标签命令1. git tag列出当前版本库的所有标签。
2. git tag -a创建一个带注释的标签。
3. git tag -d删除指定的标签。
四、Git远程操作命令1. git clone从远程仓库中克隆出一个本地版本库。
2. git fetch从远程仓库中拉取最新代码,但不进行合并。
3. git merge将远程分支合并到当前分支中。
4. git pull将远程仓库的变化拉取到本地版本库,并合并到当前分支中。
git基础操作命令
1. git pull 更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支2. git push 将本地代码提交到服务器3. git log 查看提交信息a). git log -p 查看历次的log信息及更改情况b). git log -p -4 查看距现在最近的4次的log信息及更改情况c). git log frameworks/ 查看关于frameworks/目录修改相关的log信息d). git log --stat 查看log显示文件修改情况e). git log --stat packages/apps/Contacts/ 查看关于packages/apps/Contacts/目录修改相关的log显示的文件修改情况4. git status查看工作目录和代码仓库的改动情况,这个比较重要,可以查看你自己代码哪些需要上传,然后再去add commit5. git diff 查看工作目录和本地仓库的差异或者本地仓库各个版本的差异a). git diff packages/apps/Contacts/AndoridManifest.xml 查看工作目录中AndoridManifest.xml和本地仓库中AndoridManifest.xml的不同b). git diff b46cae3b9a377bcd9cfc249a5778fce647feb961dc94bf29aab18168e79d6496a89e47dba7a1d494 查看这两个版本的不同(git diff history_oldhistory_current)c)git diff84d7c8bf6fde87316f693015d4a541a1adf037b3 b39cf58eea2f7733723ad90d104b83774136efa8 pa ckages/apps/Phone/src/com/android/phone/CallCard.java 查看两个版本之间针对特写文件的变化6. git commit 提交当前修改内容a). git commit file1 file2 -m "log message" 提交file1,file2到本地仓库b). git commit -a -m "log message" 提交所有在Git索引中的改动,所以事先先用git status,看自己代码和服务器的对比有哪些改动,最好不用-a7. git add 增加文件到Git索引a). git add file3 file4将file3,file4加入到Git索引中8. git rm 从Git索引移除文件a). git rm file3 将file3从Git索引中删除9. git branch 对分支的增、删、查操作a). git branch 显示所有本地分支b). git branch new_branch 在当前版本创建一个名为new_branch的分支c). git branch -D new_branch 强制删除名为new_branch的分支10. git checkout 在不同的branch切换和还原文件a). git checkout branch1 切换到branch1分支b). git checkout /packages/apps/Contacts/AndroidManifest.xml 会将AndroidManifest.xml文件从上一次提交的版本更新回来,未提交的部分会全部回滚11. git reset 将当前的工作目录完全回滚到指定的版本号a). git reset [--fixed] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1 只更新索引,不更新工作目录,也就是说所有的本地文件都不会更新b). git reset [--soft] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1c). git reset [--hard] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1 强制回滚到指定版本号,未提交的和此版本之后的更改全部删掉12. git mergea). git merge branch1 将branch1的改动合并到当前所在分支13. git patcha). git format-patch -1 打一个当前提交的补丁,也就是最后一次的提交改动b). git fromat-patch -1 6525c43add803bfee37cf5c1cb573ed8aecf529e 打一个指定具体某一次的补丁c). git format-patch -2 6525c43add803bfee37cf5c1cb573ed8aecf529e 打基于指定具体某个版本的接连两次的补丁15.git reset HEAD^表示回退刚刚的提交, git reset HEAD^^ 表示回退刚两次的提交,以此类推, 补充一下16.git format-patch -1 打印刚刚提交的一版的patch,相当于svn diff17.git show 查看当前提交的版本18.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9 查看指定版本的文件19.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename 查看指定版本的某个文件20.git show 2010-Aug-12 查看指定tag的文件21.git remote show 查看远程仓库的信息22.git remote show origin 查看某个远程仓库的详细信息,比如要看所克隆的origin仓库23.git revert -n hashcode : git撤销某次历史提交; -n 不加的话,相当于撤销后的树状态也提交了,加了-n只是工作树回退了那次提交的内容,工作树处于待提交状态24.git show 9f5202b77bdd33f885207b618b7b2a78b6671813packages/apps/FM/src/com/hymost/fm/ui/FMRadio.java 查看特定版本特定文件的修改25.git diff 6af41d3 d67778 packages/apps/Music/>2.patch这个非常有用, 6af41d3 比d67778 新, 上句这样做的好处是可以产生从6af41d3 到d67778的反向diff ,把这个反向diff 写入2.patch,这样谁打了2.patch,谁就等于作了一次6af41d3 版本在对packages/apps/Music上所做修改的文本回退(如果该版本对这个目录的改动是有错的需要回退的,这是个好办法).回退,千万少用revert和reset ,这两个动作和危险,容易导致结点丢失.Changes to be committed:# (use "git reset HEAD <file>..." to unstage) //reset 加--soft 会保持文件的stage状态,(to be committed,这往往是被撤消的提交中的文件,stage中的文件的修改是diff不出来的), 如果不加(默认:mixed)就会把所有mark to be committed的文件全unstage掉,这时可以diff出来该文件的改动了## modified: packages/apps/Contacts/src/com/android/contacts/ContactsUtils.java //不会被diff出来, ## Changed but not updated: //会被diff出来# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: frameworks/base/core/java/com/android/internal/app/RingtonePickerActivity.java# modified: frameworks/base/media/java/android/media/RingtoneManager.java## Untracked files: //不会参与版本管理,除非用git add进来# (use "git add <file>..." to include in what will be committed)补充一下: reset --hard hashcode就是相当于check out 掉所以从此hashcode之后的所有本地修改了,很危险,慎用.revert hashcode1相当于reset --hard, 不过它的指针不回退,反而是在当前HEAD之上再加一个版本,而该版本在文本上相当于hashcode1之前一个版本的文本内容,但这时候指针都没丢,反而还多了一个,这时候想回过来有办法,就是reset --hard 到HEAD^就行了,一切都回来了,等于什么也没做过.不过尽量不要用revert. 这已经是一个deprecated 命令了.其实对于像1->2->3->4->5,这样的版本链上,如果2->3东西有问题,想回掉这部分修改,却不影响3后面的修改,最好的办法就是不要通过指针来实现,而是通过本文修改来实现新增一个6版本,盖在5之上,我们只要把2->3的patch拿过来,在当前5的基础上,打个反向patch就行: git apply -R 2to3.patch, 这时你的本地代码从文本上就达到了你要想的结果,就是5的状态下把2->3的修改抹掉. 不过打patch有一点要注意,我们尽量不要把png等图片的patch放里头,这样会很慢,图片的二进制码很大. 而且我们可以对patch 进行修改,回退我们想要回退的文件和修改.26. 问题:1->2->3->4->5(本地和服务器上都是这个状态)如果你想把package/app/Contacts从5这个结点的内容恢复到2这个结点,但又想让HEAD指针保持在5上,怎么做?(1)首先,git checkout 78350ad27ed3ad070bc0b5044ec594e70800aded(结点2的hashcode) packages/apps/Contacts/此时,你git log 看到的最新的commit结点会是:commit ba5ca90406bd6aaba3c54c46e9d143829b6a52fb-----结点6Merge branch 'master' of 192.168.10.104:repositories/7x27a-2045这句话到底做了件什么事呢,首先它把packages/apps/Contacts/的内容恢复到2这个结点的状态,然后并最新的内容修改(即恢复后的)做为一个新的结点6来在5的后面提交一个新的结点,所以现在情况变成了:1->2->3->4->5->6(2)但是我们又不想增加新结点,怎么办呢,很简单,只要软reset一下就行,也就是:git reset 5点的hashcode,这样子你再用git diff 就会发现相当于你把package/app/Contacts下面的内容都手动准确地改到了2结点的状态,指针链还是保持在原来的1->2->3->4->5。
Git常用命令+本地连接远程仓库
Git常⽤命令+本地连接远程仓库⼀、git命令整理git config --global user.email “邮箱名”:绑定GitHub邮箱git config --global “Github名”:绑定GitHubgit init:初始化⼀个空的git仓库git status:检查仓库中的⽂件状态git add:添加⽂件到暂存区git commit -m “备注信息”:提交到版本库并记录提交信息git log:查看git⽇志git log --pretty=oneline:简化⽇志信息git log --graph --pretty=oneline --abbrev-commit 查看⽇志信息(暂时不知跟上⾯有什么区别)git checkout – ⽂件名:撤销对本地⽂件的更改(未add时)git reset HEAD ⽂件名:撤销对暂存区的修改(add后)(相当于撤销add操作)git reset --hard HEAD^:回退版本信息(HEAD^:⼀个版本 HEAD~50 五⼗个版本)git reset --hard 标识符:恢复到标识符版本git rm ⽂件名:删除仓库中的⽂件git clone GitHub仓库地址:将远程的仓库下载到本地git push origin master:将本地仓库的内容与远程仓库同步推过去git pull origin master:拉取远程仓库的代码到本地,使本地与远程仓库的代码同步拉过来git remote add origin 仓库地址:将本地仓库同步(连接)到远程仓库git push -u origin master:将本地仓库的内容推送到远程仓库中(-u参数,Git会把本地的master分⽀与远程的master分⽀关联起来)git branch 分⽀名:创建新分⽀git checkout 分⽀名:切换到分⽀git checkout -b 分⽀名:创建并切换分⽀git branch:查看分⽀git branch -D(d⾼版本⼩写也可以) 分⽀名:删除分⽀git push origin本地分⽀名:远程分⽀名:将分⽀推送到远程仓库(如果没有冒号那么本地分⽀名将会与远程分⽀名相同)⼆、本地连接远程仓库 初始化仓库:git init 建⽴连接:git remote add origin 远程仓库地址 远程仓库pull到本地:git pull origin master。
Git基本命令-详细版本
Git基本命令-详细版本初始化仓库git init意义:将某个项⽬⽬录变为git操作⽬录,⽣成git本地仓库。
即该项⽬⽬录可以使⽤git管理注意:初始化完毕项⽬⽬录后,添加markdown⽂件:readme.md,便于GitHub阅读项⽬简介查看本地仓库状态git status说明:初始化仓库后默认⼯作在master分⽀,当⼯作区与仓库区不⼀致时会有提⽰将⼯作内容记录到暂存区git add filenamegit add filename1 filename2 ...git add dir(⽂件夹)git add .(提交当前⽬录所有⽂件)git add *(提交所有项⽬⽂件,除【隐藏⽂件】外)将记录从暂存区撤回到⼯作区git rm --cached filename将⽂件同步到本地仓库git commit [file] -m [message]说明:-m 表⽰添加⼀些同步信息,表达同步内容eg:将暂存区所有记录同步到仓库区git commit -m 'add files'忽略⽂件在项⽬路径下,创建⽂件:.gitignore作⽤:配置不需要提交到仓库的⽂件集合在.gitignore⽂件中,增加需要忽略提交的⽂件或⽂件夹eg:.idea (pycharm的系统⽂件)移动或者删除⽂件移动:git mv [file] [path]删除:git rm [files]注意:这两个操作会修改⼯作区内容,同时将操作记录提交到暂存区跟 git add 属于同⼀级别的操作将暂存区或者某个commit点的⽂件恢复到⼯作区git checkout [commit] -- filename-- 是为了防⽌误操作,checkout还有切换分⽀的作⽤⽐较⼯作区⽂件和仓库区⽂件的差异git diff filename查看commit⽇志记录git log作⽤:查看详细的提交⽇志git log --pretty=oneline作⽤:⽐较简化的⽇志显⽰⽅案⽐较⼯作区⽂件和仓库区⽂件的差异git diff filename将暂存区或者某个commit点的⽂件恢复到⼯作区git checkout [commit] -- filename-- 是为了防⽌误操作,checkout还有切换分⽀的作⽤移动或者删除⽂件移动:git mv [file] [path]删除:git rm [files]注意:这两个操作会修改⼯作区内容,同时将操作记录提交到暂存区跟 git add 属于同⼀级别的操作忽略⽂件在项⽬路径下,创建⽂件:.gitignore作⽤:配置不需要提交到仓库的⽂件集合在.gitignore⽂件中,增加需要忽略提交的⽂件或⽂件夹eg:.idea (pycharm的系统⽂件)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force
# 推送所有分支到远程仓库
$ git push [remote] --all
撤销
# 恢复暂存区的指定文件到工作区
$ git checkout [file]
# 恢复某个commit的指定文件到暂存区和工作区
$ git add -p
# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]
# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
增加/删除文件
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加当前目录的所有文件到暂存区
$ git add .
# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git reset --keep [commit]
# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]
# 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop
其他
# 生成一个可供发布的压缩包
$ git archive
# 远程分支已经删除的分支本地依然能够看到的问题
$ git remote show origin
# 根据提示使用该命令
$ git remote prune orign
# 在当前目录新建一个Git代码库
$ git init
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]
# 下载一个项目和它的整个代码历史
$ git clone [url]
配置
Git的设置文件为 .gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 查看tag信息
$ git show [tag]
# 提交指定tag
$ git push [remote] [tag]
# 提交所有tag
$ git push [remote] --tags
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
$ git log [tag] HEAD --grep feature
# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]
# 显示指定文件相关的每一次diff
$ git log -p [file]
# 搜索提交历史,根据关键词
$ git log -S [keyword]
# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s
# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"
# 显示某次提交的元数据和内容变化
$ git show [commit]
# 显示某次提交发生变化的文件
$ git show --name-only [commit]
# 显示某次提交时,某个文件的内容
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]
# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
查看信息
# 显示有变更的文件
$ git status
# 显示当前分支的版本历史
$ git log
# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat
# 显示当前的Git配置
$ git config --list
# 编辑Git配置文件
$ git config -e [--global]
# 设置提交代码时的用户信息
$ git config [--global] "[name]"
$ git config [--global] user.email "[email address]"
代码提交
# 提交暂存区到仓库区
$ git commit -m [message]
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a
# 提交时显示所有diff信息
$ git commit -v
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]
# 重做上一次commit,并包括指定文件的新变化
$ git checkout [commit] [file]
# 恢复暂存区的所有文件到工作区
$ git checkout .
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard
# 显示过去5次提交
$ git log -5 --pretty --oneline
# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn
# 显示指定文件是什么人在什么时间修改过
$ git blame [file]
# 显示暂存区和工作区的差异
$ git diff
$ git commit --amend [file1] [file2] ...
分支
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]
# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
# 上传本地指定分支到远程仓库
$ git push [remote] [branch]
$ git branch -dr [remote/branch]
标签
# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tag]
பைடு நூலகம்
# 新建一个tag在指定commit
$ git tag [tag] [commit]
# 删除本地tag
$ git tag -d [tag]
# 显示暂存区和上一个commit的差异
$ git diff --cached [file]