git 教程

来源:互联网 发布:js隐藏鼠标指针 编辑:程序博客网 时间:2024/04/27 22:21

1 常用命令

1.  sudo apt install git  //安装git2.  git init 或git init dirname  //将当前文件夹或指定文件夹初始为仓库5.  git add filename   //将文件提交到暂存区6.  git commit –m “提交说明” //将暂存区文件提交到版本库,7.  git status //查看当前仓库详细状态,工作区文件是否add,暂存区文件是否commit    git status -s//查看当前仓库简述状态,工作区文件是否add,暂存区文件是否commit8.  git log //查看commit历史,可以看到各版本的id,但看不到已经删除的commit9.  git reflog //查看所有分支的所有操作记录(包括commit和reset的操作),包括已删除的commit记录10. git diff [filename] //查看工作区的文件与上一次add后的不同之处    git diff HEAD [-- filename] //可以查看工作区和版本库里面最新版本的区别:11. git checkout [-- filename] //撤销工作区文件的修改到最近一次git add后的状态(没有提交到暂存区)12. git reset HEAD filename //撤销已add提交到暂存区的文件到工作区,再用git checkout就能丢弃修改13. git reset --hard //版本回退,撤销已经commit到版本库,但还没有推送到远程仓库的修改    git reset --hard HEAD^ //版本回退一次    git reset --hard HEAD^^//版本回退两次    git reset --hard HEAD~n //版本回退n次    git reset --hard 版本号 //回退到指定版本号    git checkout id 文件名 //将某个文件恢复到某个版本时的状态14. rm filename //只删除工作区文件    git rm filename //删除暂存区和工作区文件    git commit –m “注释” //将删除提交版本库    //执行这三个命令就可以从版本库中删除文件,如果不想删除 git checkout -- filename撤销删除    git rm -f filename //强制删除工作区和暂存区文件    git rm --cached 文件名 //只删除暂存区文件15. git checkout -b 分支名  //创建并切换,相当于以下两条命令:    git branch 分支名   //创建分支    git checkout 分支名   //切换到分支    git branch    //列出所有分支,当前分支前面会标一个*号    git show-branch //查看分支信息    git merge分支名   //用于合并指定分支到当前分支。在之前应切换到主分支。默认使用fast forward    git merge --no-ff -m "merge with no-ff" 分支名 //禁用fast forward,避免删除分支时丢掉分支信息。    git branch -d 分支名   //删除已经合并的某分支    git branch -D 分支名  // 强制删除未合并的分支16. git stash //把当前工作现场“储藏”起来,等以后恢复现场后继续工作。    git stash list //查看快照    git stash pop //恢复现场并删除快照,相当于以下两个命令    git stash apply //恢复现场但并不删除快照    git stash drop //删除快照;17. git remote //查看远程库信息    git remote -v //查看远程库的详细信息    git remote show主机名//可以查看该主机的详细信息。    git remote add  主机名 地址   //  添加远程主机。 默认主机为origin    git remote rm  主机名       //用于删除远程主机。    git remote rename  原主机名  <新主机名>   // 用于远程主机改名18. git fetch 远程主机名  [分支名] //将远程主机的[某分支]更新全部取回本地。对本地代码没影响。    git branch -r //查看远程分支, 远程分支用  远程主机/分支名  来访问    git branch -a //查看所有分支    git checkout -b newBrach  远程主机/分支名 //创建并切换到远程分支    git merge 远程主机/分支名   //将远程分支合并到当前分支19. git clone <版本库的网址>   <本地目录名>    //克隆远程仓库到目标目录中  支持多种协议:     git clone http[s]://example.com/path/to/repo.git/    git clone ssh://example.com/path/to/repo.git/    git clone git://example.com/path/to/repo.git/    git clone /opt/git/project.git     git clone file:///opt/git/project.git    git clone ftp[s]://example.com/path/to/repo.git/    git clone rsync://example.com/path/to/repo.git 20. git push  <远程主机名>  <本地分支名>:[远程分支名]   //将本地分支的更新,推送到远程主机,     //如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名)    //如果该远程分支不存在,则会被新建。    //如果省略本地分支名,则表示删除指定远程分支    //因为这等同于推送一个空的本地分支到远程分支。    //如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。    //如果当前分支只有一个追踪分支,那么主机名都可以省略。    //如果当前分支与多个主机存在追踪关系,则可用-u选项指定一个默认主机后面就可不加任何参数使用git push.    git push --all origin  //将所有本地分支都推送到origin主机。    git push --force origin //强制推送,覆盖远程分支。21. git pull [远程主机] [远程分支]:[本地分支] //取回远程主机某分支,与本地的指定分支合并。    //如果远程分支是与当前分支合并,则冒号后面的部分可以省略。等效于:    git fetch 远程主机 分支名    git merge 远程主机/分支名     //如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。    //如果当前分支只有一个追踪分支,连远程主机名都可以省略。    git branch --set-upstream 本地分支 远程主机/分支名   //指定本地分支追踪到远程分支    git pull --rebase <远程主机名> <远程分支名>:<本地分支名> //合并需要采用rebase模式。    git pull -p //在本地删除远程已经删除的分支。等同于下面的命令    git fetch --prune origin     git fetch -p   //在本地删除远程已经删除的分支。22. //HEAD指针指向当前分支,master指针指向主分支。23. git tag tagname  //为当前分支创建标签    git tag 或git tag -l//查看所有标签    git tag tagname commitid //为指定commitid打上标签    git show tagname //查看标签信息    git tag tagname commitid  -a -m  "标签说明"  //为指定commitid打上带说明信息的标签    git tag tagname commitid  -s -m  "标签说明"   //用私钥签名一个标签    git tag -d tagname //删除本地标签    git push origin :refs/tags/tagname //删除远程标签,如果标签已推送本地和远程都需删除    git push origin tagname  //将指定标签推送到远程    git push origin --tags   //将本地所有标签推送到远程

2 创建SSH Key。

  在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key命令:
    ssh-keygen -t rsa -C "youremail@example.com"
  生成密钥用于创建远程仓库
  登录github 账户——>设置 添加SSH key.pub的内容,新建仓库。

3 开启两步验证后推送失败的解决方法

  首先在github设置中启用Personal Access Token
  再输入密码时输入访问令牌而不是账户密码
  如果不想每次都输密码则可以使用 git config --global credential.helper store

4 git 配置

  git –global是针对所有用户起作用的,如果不加,那只针对当前的仓库起作用。每个仓库的Git配置文件是.git/config。
   让Git显示颜色,会让命令输出看起来更醒目:
      git config --global color.ui true
  在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
   为git命令配置别名:
     git config --global alias.别名 git命令名
   配置全局用户:
     git config --global user.name "Your Name"
     git config --global user.email "email@example.com"

5 搭建git服务器

    sudo apt install git   //安装git    sudo adduser git  //创建git用户

   创建证书登录:收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
   初始化Git仓库:先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入sudo git init --bare sample.git,Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。
   然后,把owner改为git:$ sudo chown -R git:git sample.git
   禁用shell登录:出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash改为: git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
   克隆远程仓库:现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行。

6 为项目添加成员

   仓库–>设置–>member–>权限
   为分支设置权限, 仓库–>设置–>branches –> Protected branches –>权限

原创粉丝点击