常用Git操作

-------------------git与SVN的对比--------------------
1、git是分布式的,SVN不是。

2、git把内容按元数据方式存储,而SVN是按文件。

3、git分支和SVN的分支不同。

4、git的内容完整性要优于SVN。

--------------------git原理分析--------------------
1、git主要分为
1、工作区:Workspace

2、暂存区:Index3、本地仓库:Repository4、远程仓库:Remote

2、部分操作
1、git add:工作区提交到暂存区。

2、git commit:暂存区提交到本地仓库。3、git push:本地仓库提交到远程仓库。4、git fetch:远程仓库提取到本地仓库。5、git checkout:本地仓库提取到工作区。6、git pull:远程仓库提取到工作区。

--------------------git常用命令--------------------
1、新建代码仓库
1、git init:在当前目录新建一个Git代码库
2、git init [project-name]:新建一个目录,将其初始化为Git代码库。3、git clone :下载一个项目和它的整个代码历史。

2、配置
1、Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
2、git config --list:显示当前的Git配置。3、git config -e [--global]:编辑Git配置文件。4、设置提交代码时的用户信息:    1、git config [--global] user.name "[name]"    2、git config [--global] user.email "[email address]"

3、增加/删除文件
1、git add [file1] [file2] ---:添加指定文件到缓存区。
2、git add [dir]:添加指定目录到暂存区,包括子目录。

3、git add:添加当前目录的所有文件到暂存区。

4、git rm [file1] [file2] ---:删除工作区文件,并且将这次删除放入暂存区。

5、git mv [file-original] [file-renamed]:改名文件,并且将这个改名放入暂存区。

4、代码提交

1、git commit -m [message]:提交暂存区到仓库区。
2、git commit [file1] [file2] --- -m [message]:提交暂存区的指定文件到仓库区。3、git commit -a:提交工作区自上次commit,替代上一次提交。4、git commit --amend -m [message]:使用一次新的commit,替代上一次提交。    注:如果代码没有任何新变化,则用来改写上一次commit的提交信息。5、git commit -amend [file1] [file2] ---:重做上一次commit,并包括指定文件的新变化。

5、分支
1、git branch:列出所有本地分支

2、git branch -r:列出所有远程分支   3、git branch -a:列出所有本地分支和远程分支   4、git branch [branch-name]:新建一个分支,但依然停留在当前分支5、git checkout -b [branch]:新建一个分支,并切换到该分支  6、git branch [branch] [commit]:新建一个分支,指向指定commit7、git push origin [branch]:新建一个远程分支,本地新建然后推送
8、git branch --track [branck] [remote-branch]:新建一个分支,与指定的远程分支建立追踪关系
9、git checkout [branch-name]:切换到指定分支,并更新工作区
10、git checkout -:切换到上一个分支
11、git branch --set-upstream-to [remote-branch]:建立追踪关系,设置当前分支与指定的远程分支之间关联
12、git merge [branch]:合并指定分支到当前分支
13、git cherry-pick [commit]:选择一个commit,合并进当前分支
14、git branch -d [branch-name]:删除分支
15、删除远程分支    1、git push origin --detele [branch-name]    2、git branch -dr [remote/branch]

6、标签

1、git tag:列出所有tag。
2、git tag [tag]:新建一个tag在当前commit。
3、git tag [tag] [commit]:新建一个tag在指定commit。
4、git tag -d [tag]:删除本地tag。
5、git push origin :refs/tags/[tagName]:删除远程tag。
6、git show [tag]:查看tag信息。
7、git push [remote] [tag]:提交指定tag。
8、git push [remote] --tags:提交所有tag。
9、git checkout -b [branch] [tag]新建一个分支,指向某个tag。

7、查看信息

1、git status:显示有变更的文件。
2、git log:显示当前分支的版本历史。
3、git log --stat:显示commit历史,以及每次commit发送变更的文件。
4、git log -S [keyword]:搜索提交历史,根据关键词。
5、git log [tag] HEAD --pretty=format:%s:显示某个commit之后的所有变动,每个commit占据一行。
6、git log [tag] HEAD --grep feature:显示某个commit之后的所有变动,其“提交说明”必须符合搜索条件。
7、显示某个文件的版本历史,包括文件夹名    1、git log --follow [file]    2、git whatchanged [file]
8、git log -p [file]:显示指定文件相关的每一次diff。
9、git log -5 --pretty --oneline:显示过去5次提交。
10、git shortlog -sn:显示所有提交过的用户,按提交次数排序。
11、git blame [file]:显示指定文件是什么人在什么时间修改过
12、git diff:显示暂存区和工作区的差异。
13、git diff --cached [file]:显示暂存区和上一个commit的差异。
14、git diff HEAD:显示工作区与当前分支最新commit之间的差异。
15、git diff [first-branch] ...[second-branch]:显示两次提交之间的差异。
16、git show [commit]:显示某次提交的元数据和内容变化。
17、git show --name-only [commit]:显示某次提交发生变化的文件。
18、git show [commit]:[filename]:显示某次提交时,某个文件的内容。
19、git reflog:显示当前分支的最近几次提交
20、git log --committer [xxx]  //或 git log --author="John"
21、git log --author [xxx]

8、远程同步
1、git fetch [remote]:下载远程仓库的所有变动。

2、git remote -v:显示所有远程仓库。3、git remote show [remote]:显示某个远程仓库的信息。4、git remote add [shortname] [url]:增加一个新的远程仓库,并命名。5、git push [remote] [branch]:上传本地指定分支到远程仓库。6、git push [remote] --force:强行推送当前分支到远程仓库,即使有冲突。7、git push [remote] --all:推送所有分支到远程仓库。

9、撤销
1、git checkout [file]:回复暂存区的指定文件到工作区。

2、git checkout:恢复暂存区的所有文件到工作区。

3、git checkout [commit] [file]:恢复某个commit的指定文件到暂存区和工作区。//注意区别,并尝试使用

4、git reset [file]:重置暂存区的指定文件,与上一次commit保持一致,但工作区不变。

5、git reset --hard:重置暂存区与工作区,与上一次commit保持一致。

6、git revert [commit]:新建一个commit,用来撤销指定commit;后者的所有变化都将被前者抵消,并且应用到当前分支。

7、暂时将未提交的变化移除,稍后再移入:    1、git stash    2、git stash pop

 

Add  10、git commit 合并

有时commit太多,而且可能一个commit只是提交一个小bug,那么合并commit势在必行。
有两种方法:
【1】一是在提交最后一个修改的commit使用参数,这时之前的一个commit将会合并到这个即将提交的commit中来:
git commit -a --amend -m "my message here"如果之前有一个提交,并且信息为:
git commit -a -m "my last commit message"
则这个commit message将不存在。但该commit的信息已经合并到"my message here"中了。

【2】第二个是,如果你提交了最后的修改,这时可用:
$ git reset --soft HEAD^ #或HEAD^意为取消最后commit
$ git commit --amend
这将会把最后一个commit合并到前一个提交中去,例如(由上往下读):
git add b.text
git commit -a -m "my message here"
git add a.text
git commit -a -m "my last commit message"

那么最后存在的将是"my last commit message"。也可后退n个,合并到前面第n+1个commit中去:
$ git reset --soft HEAD~n #后退到第n
$ git commit --amend [-m "new message"]
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值