一、git基本命令
git命令的构成:git 子命令 --选项
git help 子命令--------来查看子命令的帮助
1、init
git init
初始化git,在当前目录新建一个仓库
git init [project-name]
在一个目录下新建本地仓库
2、add
git add filename
从工作区添加指定文件到暂存区
git add .
将工作区的被修改的文件和新增的文件提交到暂存区,不包括被删除的文件
git add -u .
u指update,将工作区的被修改的文件和被删除的文件提交到暂存区,不包括新增的文件
git add -A .
A指all,将工作区被修改、被删除、新增的文件都提交到暂存区
3、ls-files
git ls-files
查看缓存区的文件
–cached(-c)
显示暂存区中的文件,git ls-files命令默认的参数
–deleted(-d)
显示删除的文件
–modified(-m)
显示修改过的文件
–other(-o)
显示没有被git跟踪的文件
–stage(-s)
显示mode以及文件对应的Blob对象,进而我们可以获取暂存区中对应文件里面的内容。
4、commit
git commit -m [massage]
将暂存区所有文件添加到本地仓库
git commit [file-name-1] [file-name-2] -m [massage]
将暂存区指定文件添加到本地仓库
git commit -am [massage]
将工作区的内容直接加入本地仓库
git commit --amend
快速将当前文件修改合并到最新的commit,不会产生新的commit。
加-m是指直接在后面写上版本的注释,不加-m的话会用一个vim打开文件让你写入massage,有未追踪的文件将会失败,需要add加入暂存区。
5、status
git status [file-name]
查看指定文件状态
git status
查看所有文件状态
6、log
git log
显示所有commit日志
git log --graph
显示图形表示的分支合并历史
git log --since=2.weeks
列出所有最近两周内的提交
git log --pretty=oneline
将日志缩写为单行显示
git log --graph --pretty=oneline --abbrev-commit
查看分支合并情况
git log --oneline --decorate --graph --all
查看分叉历史,包括:提交历史、各个分支的指向以及项目的分支分叉情况。
git log -3
查看最新3条commit日志数据
7、rm
git rm
从暂存区域移除,并连带从工作目录中删除指定的文件
git rm -f
若删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项-f
8、checkout
git checkout -- <file>
取消对文件的修改,把之前版本的文件复制过来重写此文件
git checkout [branch]
切换分支
git checkout -b [new-branch-name]
创建并切换分支
9、branch
git branch [branch-name]
创建分支
git branch
查看当前分支
git branch -a
查看本地和远程的所有分支
git branch -r
查看远程所有分支
git branch -d [branch-name]
删除一个分支
git branch -D [branch-name]
强制删除一个没有合并的分支
git branch --set-upstream-to=origin/[branch-name] [branch-name]
把本地分支和远程分支进行连接
10、patch
git format-patch
git format-patch HEAD^ #生成最近的1次commit的patch
git format-patch HEAD^^ #生成最近的2次commit的patch
git format-patch HEAD^^^ #生成最近的3次commit的patch
git format-patch HEAD^^^^ #生成最近的4次commit的patch
git format-patch … #生成两个commit间的修改的patch(包含两个commit. 和都是具体的commit号)
git format-patch -1 #生成单个commit的patch
git format-patch #生成某commit以来的修改patch(不包含该commit)
git format-patch --root #生成从根到r1提交的所有patch
11、clean
git clean
删除未暂存的文件
git clean -df
加-d
是指包含目录,加-f
是指强制,删除所有未跟踪的文件
12、reset
git reset HEAD <file>
取消已经暂存的文件
当对整个版本进行操作
git reset --{soft|(mixed)|hard} HEAD
--soft 其中可选参数soft表示单纯的切换HEAD指向的commit-id
--mixed 默认值mixed参数表示先执行上面一步,然后再将commit-id里面的内容更新到暂存区
--hard hard表示先执行上面两步,然后再将暂存区内容同步到工作区
git reset --hard HEAD^^
用上两个版本里的所有文件撤回到暂工作区
git reset --hard [commit id]
用指定版本的所有文件撤回到工作区
当对当个文件进行操作
git reset HEAD [file-name]
对单个文件操作时候只能用mixed参数,而且还是可省略
对单个文件操作时候HEAD指向不会变
将commit中指定的文件同步到暂存区中
git reset [commit-id] [file-name]
将指定commit-id中的文件替换掉暂存区的文件
13、revert
git revert -n [commit-id]
git revert -n HEAD^^
14、mv
git mv
文件移动
相当于:
$mv file.txt newFile
$git rm file.txt
$git add newFile
15、show
git show
查看文件的变更情况。
git show commitID
查看某一次commit的内容
16、diff
git diff
查看尚未暂存的文件更新了哪些部分
git diff --cached
看已经暂存起来的文件和上次提交时的快照之间的差异
git diff SHA1..SHA2
查看两次提交之间的区别
git diff HEAD -- .
查看最新本地版本库和工作区所有文件的区别
git diff HEAD -- [file-name]
查看最新本地版本库和工作区文件的却别
git diff HEAD^ -- [file-name]
查看本地上一个版本和工作区文件的却别
git diff [local branch] origin/[remote branch]
比较本地分支和远程分支的区别
17、merge
git merge<other-branch>
将other-branch分支merge到当前分支
git rebase<other-branch>
将other-branch分支rebase到当前分支
git cherry-pick<commit-id>
将某个提交拿到当前分支中
18、stash
git stash
暂存起来未提交的修改。 隐藏当前工作的修改,如果不隐藏自己修改的半成品代码,就会发生切换到别的分支后,将然后自己的半成品代码带入其他分支,这样就发生很多不必要的麻烦。
git stash save message
执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
git stash list
查看隐藏的工作信息列表
git stash drop
删除隐藏的工作信息
git stash pop
恢复隐藏的工作信息,同时删除隐藏的工作信息
git stash apply [stash@{0}]
恢复指定的隐藏工作信息,但是不会删除隐藏的工作信息
19、remote
git remote show [remote-name]
查看远程仓库信息
git ls-remote [remote-name]
查看远程仓库中各分支最新更新
git remote add <name> <远程仓库URL>
关联远程仓库
git remote rm <name>
远程仓库的删除
git remote rename <old> <new>
远程仓库的重命名
20、fetch
git fetch
拉取远程分支最新的commit到本地仓库的origin/[branch-name]
21、pull
git pull
从远程仓库拉取代码到工作空间
pull 和 fetch的关系
git pull
== git fetch
+ git merge
22、rebase
git rebase -i commitId
二、repo
1、使用repo的标准工作流程
用repo下载练习git库
repo init -u amazon@code.thunderst.com:amazon/manifest.git
repo sync
用repo start命令将所有git库切换到正确的分支上
repo start Amazon <project|--all>
进入文件目录
cd your_project_dir
进行编辑后查看当前文件状态
git status
暂存文件
git add <changed file1><changed file2>
再次查看文件状态
git status
提交到仓库
git commit
向gerrit提交本地的修改
repo upload
2、repo常用命令
repo status
查看整个worktree的状态
repo branches
查看本地worktree上的工作分支情况
repo abandon <branch_name> {<git库名>|--all}
删除指定分支(可以是特定git库,也可以是全体),可视为repo start的逆操作
repo upload[<project>...][--replace]
向gerrit提交本地的修改
三、git拉取远程代码
克隆代码:git clone “URL”
查看分支:git branch -a
切换分支:git checkout 远程分支名