Git常用指令集,这些都是工作中常用到的指令集,在这类做个汇总,希望帮到大家~~
Git系统的基本架构
working directory:工作区
stage:暂存区
remote:远程仓库
Gitflow的工作流模式
这个工作流其实也是我们团队采用的工作流,这也是很多团队会采用的工作流,它会相对复杂一点,但它非常适合用来管理大型项目的发布和维护,后面笔者也会详细讲下这一块。
工作流模式贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支,而develop分支是相对稳定的分支,特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在hotfix分支上进行。笔者也是花了不少时间才熟练掌握整个工作流,期间遇到不少坑,后面会跟大家分享下。
Git的常用指令
1、创建一个空的 Git 存储库或初始化一个现有的Git仓库
git init
2、将文件内容添加到索引
git add .
3、把已经存在于暂存区的被跟踪文件,提交到版本库
git commit -m '**'
4、把工作区改动提交到暂存区,并跟已经存在于暂存区的被跟踪文件一起,提交到版本库
git commit -a '**'
5、拷贝git仓库到本地
git clone URL
6、展示工作区的改动内容
git status [-s] [-v]
7、切换分支
git checkout branchName
8、git diff [--cached]
9、移除文件
git rm [filePath]
10、重命名文件
git mv [file1Name] [file2Name]
11、显示提交记录
git log [-p] [-2]
12、会用暂存区全部或指定的文件替换工作区的文件。
git checkout -- file
13、git remote [-v] :
Manage set of tracked repositories(管理跟踪的仓库)
14、在 <url> 处为存储库添加一个名为 <name> 的远程。然后可以使用命令 git fetch <name> 创建和更新远程跟踪分支 <name>/<branch>。
git remote add [shortname] [url]
15、将<shortname>这个远程仓库中,你本地仓库没有的东西全部放到本地来。这样一来,在你的本地,你就对这个远程仓库的所有分支进行引用了。
git fetch [shortname]
Download objects and refs from another repository
16、重命名远程分支对应的本地分支
git remote rename [oldname] [newname]
git branch -m [old_local_branch_name] [new_local_branch_name]
17、查看本地创建的所有分支
git branch [branchname]:新建新分支
-d testBranchName :删除分支(不是当前所处分支)
-D branchname :强制删除分支(当前所处分支)
-b branchname :新建并切换到该分支
--merged :查看哪些分支已被并入当前分支
--no-merged :查看尚未合并的工作分支
-a:查看分支
18、推送之前要拉取内容,减少冲突
git pull --rebase
19、显示所有配置项值
git config --list
20、查看当前分支创建的时间
git reflog show --date=iso [branchname]
21、撤销 add 的文件
git reset HEAD [file]
22、分支回退到某个版本号的commit
git reset --hard 52b376e2a13f4faf87f24d504d4b46e8f118aaf6
23、git fetch :取回所有分支的更新。
git fetch <远程主机名> <分支名>:取回origin主机的master分支。
24、删除本地分支后,再删除远程的分支
git push origin :bug-mmb-5.12.2-issue-47419
25、新建新分支
git branch -vv
26、修改commit描述
git commit --amend
27、查看命令的help文档
git help + [command]
28、查看分支的所有commit提交历史
git reflog show --date=iso <branch name> :
git reflog show --date=iso feature-mmb-6.5.0-46738
29、配置用户名
git config --global user.name [username]
30、配置邮箱
git config --global user.email [user@email]
31、查看所有之前保存至堆栈区的修改内容
git stash list
32、将栈顶的修改内容塞进
git stash apply stash@{0}
33、将栈顶的修改内容弹出
git stash pop stash@{0}
34、查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git reflog
35、用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本
git reset --hard <commit>
36、显示所有提交过的版本信息,或显示版本号和提交时的备注信息。
git log --pretty=oneline
37、要查看当前配置有哪些远程仓库
git remote
38、git diff branch1 branch2 -- file 比较两个分支的文件差异
git diff gongg-dev2-6.9.0 master -- GroupProviderImpl.java
39、只把特定文件从暂存区删除
git rm --cached xxx
40、只把特定文件夹的所有文件从暂存区删除
git rm -r --cached xxx
41、如果你进行了2次commit,想都撤回,可以使用HEAD~2。HEAD^的意思是上一个版本,也可以写成HEAD~1
git reset --soft HEAD^1
42、 注意这是清空你所有的内容
git stash clear
43、这是删除第一个堆栈元素
git stash drop stash@{0}
44、git fsck 运行一些仓库的一致性检查, 如果有任何问题就会报告.
这项操作也有点耗时, 通常报的警告就是“悬空对象"(dangling objects).$ git fsck
dangling commit 7281251ddd2a61e38657c827739c57015671a6b3......
“悬空对象"(dangling objects)并不是问题, 最坏的情况只是它们多占了一些磁盘空间.
有时候它们是找回丢失的工作的最后一丝希望.
45、查看自己的提交数
git log --author="hou.tai.ji.shu.hui" --since="2019-01-01" --no-merges | grep -e 'commit [a-zA-Z0-9]*' | wc -l
46、删除远程分支
git push origin --delete master-63072
47、本地分支重命名
git branch -m oldName newName
48、cherry pick 合并某个分支提交代码
git cherry-pick b0f05bda9cd38bb5fb45ce41c9a0cb8b0fdcc3bd
49、查看某次commit中具体某个文件的修改:
git show commitId fileName
50、查看远程分支
git branch -r
git branch -r |grep gongg-dev2-7.4.0
51、删除远程分支
git push origin --delete gongg-dev2-7.5.0
52、分支管理习惯:要及时删除无用分支。
53、分支的 commit-message 查看:
$ git log <last tag> HEAD --pretty=format:%s
git log HEAD --pretty=format:%s
$ git log <last release> HEAD --grep feature
git log HEAD --grep test --pretty=format:%s
54、git 用户信息相关
git config --list
git config --global user.email
git config --global user.name
55、创建并切换分支
$ git checkout -b 7.11.0-smartcard
Switched to a new branch '7.11.0-smartcard'
56、合并多个commit为一个commit
git rebase -i [commit_id],这里的commit_id是待合并的多个commit之前的那个commit ID。
57、重命名分支
git branch -m oldName newName
58、回滚代码到某个commit,并且提交到远程仓库
回退到指定commit:16b132e2757a4f8ce6f9d93922ae95ac9eed29a8
git reset --hard 16b132e2757a4f8ce6f9d93922ae95ac9eed29a8
git push origin 7.12.0 --force
59、添加远程仓库并提交代码
git remote -v:查看远程仓库信息(没有则添加仓库路径)
git remote add origin [repository-url]
60、比较两个commit点的差异
git diff 79a708e3d3bbbb443144562f4c667b5b764805c0 0effe0e974adbbe06f4457f5ad9cad097914ba5e