一、日常使用(最基本的)
一般来说,日常使用上面那几个命令就足够了,但是人无远虑必有近忧,把一些比较常用的 git 命令先整理一下,存下来总是没错的。
Reomte — 远程git仓库。
Repository — 本地仓库
Index — 暂存区
Workspace — 工作目录(工作区)
git init — 初始化本地git仓库
git add [dir] — 将工作目录中文件的代码增加到暂存区(dir 是文件名,可以用 . 表示提交所有)
git commit -m [message] — 将暂存区中的文件提交到本地仓库(message 是文件提交信息,描述本次提交了什么内容)
git checkout [dir] — 用暂存区中的文件覆盖工作目录中的文件
git push [url] [分支名称] — 将本地仓库的代码,推送到远程 git 仓库的某个分支( url 是远程仓库地址)
git clone [url] — 将远程仓库的项目代码,克隆到本地仓库中( url 是远程仓库地址)
git pull [url] [分支名称] — 拉去远程仓库中,某个分支的最新版本代码
二、基础配置
1、git config --global user.name 提交人姓名
配置提交人姓名信息
2、git config --global user.email 提交人邮箱
配置提交人邮箱信息
3、git config --list
查看 git 的配置信息
**注意:**如果想要修改已经配置好的配置信息,只需重复执行依次以上命令即可,新的配置信息会自动覆盖旧的配置信息。
三、本地代码库操作
1、git init [project-name]
在当前目录下,初始化一个git本地仓库。或者后面附加参数 project-name ,新建一个 project-name 目录,并将其初始化为git本地仓库。
2、git remote add origin [仓库地址]
将本地的仓库与远程的仓库地址进行绑定,绑定之后,再push代码即可将项目推到远程仓库。
3、git remote rm origin
删除当前仓库绑定的远程仓库地址,然后可以通过上一条命令重新绑定远程仓库地址。
4、git remote set-url origin [新的远程仓库地址]
直接修改当前仓库的远程仓库地址,新的仓库地址会覆盖掉原来的仓库地址。
四、增加/删除暂存区文件
1、git add [file1] [file2] …
添加指定文件到暂存区,可以同时添加多个文件。
2、git add [dir]
添加指定目录到暂存区,包括其子目录里面的内容。
3、git add . 和 git add *
两者都具有将当前目录下的所有文件提交的功能,两者区别在于git add . 会把本地所有untrack的文件都加入暂存区,并且会根据 .gitignore 做过滤,但是 git add * 会忽略 .gitignore 文件,并把任何文件都加入。我们一般使用 git add . 即可。
4、git rm [file1] [file2] …
删除工作目录中的文件,并将此次删除放入暂存区
5、git rm --cached [file]
删除暂存区中的文件,但不影响工作目录内的文件。
6、git mv [file-original] [file-renamed]
修改文件名,并将这个改名放入到暂存区。
五、提交代码到本地仓库
1、git commit -m [message]
将暂存区的所有文件提交到本地仓库,message 是文件提交信息,描述本次提交了什么内容,每次提交都要填写。
2、git commit [file1] [file2] … -m [message]
将暂存区中的指定文件上传到本地仓库,message 是文件提交信息,描述本次提交了什么内容,每次提交都要填写。
3、git commit -a -m [message]
提交自从上次 commit 之后,工作区的发生变化的文件,不需要经过暂存区,能直接提交到本地仓库。
4、git commit --amend -m [message]
重新执行一次 commit ,来替代上一次的 commit,如果代码并无变化,那就相当于改写上一次 commit 的 message,而且最重要的是提交记录里面会用这次的 commit 替代原来的 commit 记录,只会显示一次记录。
六、分支操作
1、git branch
查看本地仓库所有分支。当前所在的本地分支前会带有 * ,并且字体为绿色。其他分支为白色字体。
2、git branch -r
查看远程仓库的所有分支。字体颜色为红色,当前分支会在所对应的那个分支后面显示。
3、git branch -a
查看本地仓库和远程仓库的所有分支。
4、git branch [branch-name]
新建一个本地分支,分支名为 branch-name 。
5、git checkout -b [branch-name]
基于当前分支新扯一个本地分支,并切换到这个新建的分支。
6、git branch --track [branch-name] [remote-branch]
新建一个本地分支,并与一个远程仓库的分支建立关联。
7、git checkout [branch-name]
切换到指定分支,并更新工作目录。
8、git checkout -
切换到上一次切换之前的分支。
9、git branch --set-upstream-to=origin/[remote-branch] [branch-name]
或 git branch -u origin/remote_branch branch-name
两者作用相同,已经创建了本地分支,将本地分支与远程仓库的分支建立关联。
10、git merge [branch-name]
将一个指定分支合并到当前分支。
11、git branch -d [branch-name]
删除一个本地分支。
12、git push origin --delete [branch-name]
删除一个远程仓库的分支。
13、git push origin [branch-local]:[branch-origin]
或 git push --set-upstream origin [branch-local]
推送本地的branch-local(冒号前面的)分支到远程origin的branch-origin(冒号后面的)分支(没有会自动在远程创建)
14、git checkout remote_branch
如果有远程分支 remote_branch, 想拉取一个本地分支,执行此命令,git默认将创建一个同名本地分支,并将本地分支和远程仓库关联
15、git checkout -b new_branch origin/remote_branch
想要在本地创建分支的同时,关联远程分支,并切换到新分支。
16、git reset --hard HEAD
如果我们合并后的提交还停留在本地Git库,没有被推送到远程,该操作恢复到当前分支的最近一次提交。
17、git branch -vv
查询本地所有分支和这些分支关联的远程分支。
七、标签
1、git tag
查看所有标签。
2、git tag [tag]
新建一个标签在当前 commit 提交上。
3、git tag [tag] [commit]
新建一个标签在制动 commit 提交上。
4、git tag -d [tag]
删除本地的某个标签。
5、git push origin :refs/tags/[tag]
删除远程的某个标签。
6、git show [tag]
查看某个标签的具体信息。
7、git push [remote] [tag]
提交指定标签。
8、git push [remote] --tags
提交所有标签。
八、查看各种git信息
1、git status
查看所有改动过或新增的文件。
2、git log
查看当前分支的历史提交记录。
3、git log --start
查看当前分支的提交历史,以及每次提交中发生变更的文件。
4、git log -S [keyword]
根据关键词,搜索提交历史。
5、git log --follow [file]
查看某个文件的版本历史,包括文件改名操作。
6、git log -p [file]
查看指定文件相关的每一次 diff 。
7、git log -5 --pretty --oneline
查看上5次提交。
8、git shortlog -sn
查看所有提交过的用户,按提交次数排序。
9、git blame [file]
查看某个文件的历史修改记录。
10、git diff
查看暂存区和工作目录的差异。git status 显示你上次提交更新后的更改或者写入缓存的改动的文件, 而 git diff 一行一行地显示这些改动具体是啥。
11、git diff --cached
查看暂存区和上次提交的差异。
12、git show [commit]
查看某次提交的元数据和内容变化。
13、git show --name-only [commit]
查看某次提交时,有哪些文件发生了变化。
九、同步远程仓库
1、git clone [url]
将远程仓库的项目代码,克隆到本地仓库中( url 是远程仓库地址)
2、git fetch [remote]
获取远程仓库的所有变动。
3、git remote -v
显示所有远程仓库。
4、git remote show [remote]
显示某个远程仓库的具体信息。
5、git remote add [shortname] [url]
增加一个新的远程仓库,并为其命名一个别名。
6、git pull [remote] [branch]
从远程仓库获取最新版本到本地仓库,并自动与当前分支合并。
7、git push [remote] [branch]
将当前分支上传到远程仓库的某个分支。
8、git push [remote] --force
无视冲突,强行将当前分支推送到远程仓库。
9、git push [remote] --all
推送所有分支到远程仓库。
十、撤销操作
1、git checkout [file]
将暂存区的指定文件恢复到工作区。
2、git checkout [commit] [file]
将某个提交后的指定文件恢复到暂存区和工作区。
3、git checkout .
将暂存区的所有文件恢复到工作区。
4、git reset [file]
重置暂存区的指定文件,让其与上一次提交后一致,但是工作区不变。
5、git reset --hard
重置暂存区和工作区,让其与上一次提交后一致。
6、git reset --hard [commit]
重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致。
十一、暂时存储
1、git stash
暂时提取分支上所有未提交的改动并存储,让开发人员得到一个干净的工作副本。
2、git stash pop
恢复存储的改动。
十二、发布
1、git archive
生成一个可供发布的压缩包。