Git操作教程和命令
1、从GitHub库拷贝到本地库的命令
git clone URL
2、创建本地库目录和提交操作
- master: 主分支,主要用来版本发布。
- develop:日常开发分支,该分支正常保存了开发的最新代码。
- feature:具体的功能开发分支,只与 develop 分支交互。
- release:release 分支可以认为是 master 分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题并且到了发布日期就合并到 master 分支,进行发布。
- hotfix:线上 bug 修复分支。
git init (初始化本地版本库)
git add filename (将修改过的文件提交到暂存区)
git add . (跟踪所有被改动过的文件)
git commit -m "(备注一下这个版本的信息)" ----将暂存区中的文件上传到版本库
git commit --amend (修改最后一次的提交) --amend 选项创建一个新的 commit 来替换当前最新的 commit,如同当前最新的 commit 信息被修改了一样。
git status (查看状态信息)
git diff (查看变更内容)
工作区和暂存区的区别 git diff
工作区和版本库的区别 git diff
HEAD 暂存区和版本库的区别 git diff --cached
3、删除文件
1)从版本库中删除文件,git rm name(工作区和暂存区都被删除了),再执行commit操作,就将文件从版本库中删除了。想要找回就需要执行git reset --hard HEAD 来切换版本
2)git rm --cached name (只删除暂存区的文件)
3)rm name (只删除工作区文件)
4、撤销操作命令
git checkout . 撤销工作区所有文件修改的内容(未add提交)
git checkout -- filename 撤销工作区指定文件修改内容(未add提交)
git reset HEAD . 撤销暂存区所有文件修改的内容(未commit提交)
git reset HEAD -- filename 撤销暂存区指定文件修改的内容(未commit提交)
撤销指定的提交: git revert -n +版本号 ,再执行git commit -m “备注信息” ,重新git push一下会生成一个新的版本,这个版权会撤销指定版本中修改的内容,并保留上一版本的内容
git reset --merge commit_di 或者 HEAD^ 撤销指定合并的内容,或者上一次的提交
5、查看提交历史
git log (查看每次commit过的历史版本信息)
git reflog (查看全部的操作记录,包括回退的操作记录)
git blame filename (以列表形式查看指定文件的提交历史)
git log -p filename (查看指定文件的提交历史)
git log --graph 能看更多的信息
git log -n 可以查看任意最近N次的提交
git log --graph --pretty=oneline --abbrev-commit 查看合并的历史信息 (对于这种命令可以设置别名来记住它们,设置别名的内容在Git设置文件内,到.git/config文件下就能找到)
git log --oneline --graph 查看提交记录
6、回退版本操作命令
git reset 保留工作区内容,清空暂存区
git reset --hard HEAD^ (回退到上一次提交的版本)
git reset --hard HEAD~N (回退到N次之前的版本)
git reset --hard commit_id(每一次commit都会产生一个版本号,版本号是唯一的,利用这个版本号可以回退到这个版本)
reset --soft 会在重置 HEAD 和 branch 时,保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区
7、远程库操作
1)将本地的库数据提交到远程库:先在GitHub创建一个储存库,把本地版本库与储存库进行关联。
2)关联操作命令:git remote add 远程库名称 URL
3)将本地所有数据推送到远程库上去:git push -u 远程库名称 本地分支名称(master),第一次提交时使用-u,后面再提交不用再使用-u
git remote (查看远程库)
git remote rm name (删除远程库)
git remote show origin 可以查看当前仓库基本信息
8、GitHub设置ssh key
进入本地~/.ssh目录,查看目录下有无key信息,如没有需要创建
ssh-keygen -t rsa -C "GitHub账户名"
cat id_rsa.pub 手动拷贝秘钥信息
打开GitHub设置,新建一个SSH Key,输入一个名称,把刚才复制的秘钥信息复制进去就好了。就可以避免出现提交到远程库时弹出的验证窗口。
9、分支操作
git branch name 创建分支
git branch 查看分支
git branch -r 查看远程所有分支
git branch -a 查看本地和远程所有分支
git branch -d 删除本地分支
git push origin :branchname git push origin --delete branchname 两个命令都可以删除远程分支
git branch -a 删除所有分支(慎用)
git checkout branchname 切换分支
git switch name 切换分支(最好是使用这个切换分支)。注意:切换分支时,未完成工作的分支的内容也会带到另一个分支上,切换分支前先用git status检查一下当前分支有无未完成的工作,有的话需要add和commit。
git switch -c name 创建并切换分支
git merge name 将指定的分支合并到当前分支。注意:新版本的分支可以合并到旧的分支上,旧分支不能合并到新分支上
如果合并发生冲突,需要手动修改冲突的部分,再提交时,不能选用指定文件,要用add . 再commit提交到版本库。
git merge --no-ff -m "" dev 合并分支,no-ff会强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,合并后的分支也有分支信息
git stash 可以保存当前工作现场(如果是新建文件没有被add过的,一定要add提交,这样才能被隐藏起来),隐藏前先使用git status查看当前的分支状态
git stash pop 恢复隐藏起来的文件,会把文件从stash中删除,不会留下记录
git stash apply 恢复隐藏起来的文件,但不会删除stash中的文件,需要执行git stash drop +name 删除指定的文件
git stash pop stash@{name} 指定恢复文件
git stash apply stash@{name} 指定恢复文件
git stash clear 删除所有stash文件
git stash drop -name 删除指定的文件
git stash -list 查看stash保存文件的文件列表
git cherry-pick commit_id 可以拉取commit过的数据合并在当前分支下,
git branch -d name 删除分支
git branch -D name 强行删除分支
git branch -a 查看项目下所有分支
git branch -m oldname newname 修改分支的名称(git push origin :name)
如何修改远程分支名称呢? 步骤分三步进行:
1、先删除远程分支
2、然后把本地分支名称改成想要的分支名称
3、推送修改后的本地分支到远程仓库上。
如果数据被推送到远程分支,需要把远程分支删掉,git push origin --delete oldname 推送新分支数据 git push origin newname,再关联新分支,git branch --set-upstream-to origin/newname
10、推送远程库和本地拉取
git push 远程库名称 本地分支名称 (将本地的全部数据推送到远程库中)
git push --delete 远程库名称 分支名称 (删除指定的远程库分支名称)
git push 远程库 :分支名称 (删除指定的远程库分支名称)
git push -f (如果本地库HEAD指向的版本比远程库的要旧,进行git push操作时要加-f 强制推上去)
提交远程库数据时:本地先commit,再pull,有冲突合并(合并后再commit),最后push
git pull origin branch-name (将远程库下的数据拉取到当前本地分支并合并代码)
git fetch 远程库名称:branch-name (拉取数据到指定的分支版本库内不合并代码) 想要合并再merge
git fetch 远程库名称 (拉取数据到本地版本库内不合并代码)
取回数据之后会返回一个FETCH_HEAD,指的是本地branch在服务器上的状态,然后我们用git log -p FETCH_HEAD,查看在本地更新的状态
git merge FETCH_HEAD 就合并了更新的内容
11、标签
git tag tagname 轻量标签,只显示标签名字。
git tag 显示目前所有的标签名称
git tag -a tagname -m “备注” 附注标签,能添加备注信息
git show -tagname 可以查看这个标签下的详细信息,包括备注信息
git tag -l t agname 可以在指定模式查看标签
如果想要共享标签,git push时不会上传标签信息到远程服务器,需要你显式推送标签信息到远程服务器上 git push origin tagname
git push --tags 如果想要一次性的推送多个标签,也可以使用带有 --tags 选项的 git push 命令。 这将会把所有不在远程仓库服务器上的标签全部传送到那里
git tag -d tagname 删除版本库的标签,而远程仓库不受影响
git push origin :refs/tags/tagname git push origin --delete tagname 这两条命令都可以删除远程仓库上的标签
12、特殊文件
在工作区分支下工作时,难免会遇到一些不想提交的文件,这些文件只是用来记录或者数据文件等等,但是你修改了这些文件后,查看git status时,git会提示这些文件未被追踪,而这个提示对你来说是多余的,还会影响你看当前的git状态,那么要怎么屏蔽呢?
在你的工作区下建立一个文件,文件名为.gitignore,在文件中设置你不想提交的文本、目录、图片等等格式的文件。
在这个文件下你可以设置很多想要忽略的东西

# 表示注释 *表示模糊匹配 !表示取反 /忽略目录
关于.gitignore 如何设置忽略的文件,这里有一份模板可以作为参照https://github.com/github/gitignore
13、别名
git config --global alias.st status 设置别名可以帮助我们更容易的去记住和使用一些命令,比如一些难记的命令和长命令,设置一个别名就可以简单操作了
git status 这是原本查看git状态的明令,但现在设置了别名后,我们就可以用别名查看git状态,git st
别名的设置命令 git config --global alias.别名 完整命令名称
设置别名的内容在Git设置文件内,到.git/config文件下就能找到,以免你会忘记自己都忘记设置的名称,到这里可以去查看。

浙公网安备 33010602011771号