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文件下就能找到,以免你会忘记自己都忘记设置的名称,到这里可以去查看。

posted @ 2020-03-09 00:18  自由人皮卡卡  阅读(159)  评论(0)    收藏  举报